Commit e4f84abd authored by Hans Wennborg's avatar Hans Wennborg
Browse files

ReleaseNotes: move the retpoline bullets higher

llvm-svn: 326550
parent e2f407be
Loading
Loading
Loading
Loading
+18 −18
Original line number Diff line number Diff line
@@ -35,6 +35,12 @@ sections with improvements to Clang's support for those languages.
Non-comprehensive list of changes in this release
-------------------------------------------------

- Support for `retpolines <https://support.google.com/faqs/answer/7625886>`_
  was added to help mitigate "branch target injection" (variant #2) of the
  "Spectre" speculative side channels described by `Project Zero
  <https://googleprojectzero.blogspot.com/2018/01/reading-privileged-memory-with-side.html>`_
  and the `Spectre paper <https://spectreattack.com/spectre.pdf>`_.

- Bitrig OS was merged back into OpenBSD, so Bitrig support has been
  removed from Clang/LLVM.

@@ -51,12 +57,6 @@ Non-comprehensive list of changes in this release
  ``__is_target_vendor``, ``__is_target_os``, and ``__is_target_environment``
  can be used to to examine the individual components of the target triple.

- Support for `retpolines <https://support.google.com/faqs/answer/7625886>`_
  was added to help mitigate "branch target injection" (variant #2) of the
  "Spectre" speculative side channels described by `Project Zero
  <https://googleprojectzero.blogspot.com/2018/01/reading-privileged-memory-with-side.html>`_
  and the `Spectre paper <https://spectreattack.com/spectre.pdf>`_.


Improvements to Clang's diagnostics
-----------------------------------
@@ -115,6 +115,18 @@ Improvements to Clang's diagnostics
New Compiler Flags
------------------

- Clang supports the ``-mretpoline`` flag to enable `retpolines
  <https://support.google.com/faqs/answer/7625886>`_. Code compiled with this
  flag will be hardened against variant #2 of the Spectre attack. Indirect
  branches from switches or gotos removed from the code, and indirect calls
  will be made through a "retpoline" thunk. The necessary thunks will
  automatically be inserted into the generated code. Clang also supports
  ``-mretpoline-external-thunk`` which works like ``-mretpoline`` but requires
  the user to provide their own thunk definitions. The external thunk names
  start with ``__x86_indirect_thunk_`` and end in a register name. For 64-bit
  platforms, only an ``r11`` thunk is used, but for 32-bit platforms ``eax``,
  ``ecx``, ``edx``, and ``edi`` thunks are used.

- Clang now supports configuration files. These are collections of driver
  options, which can be applied by specifying the configuration file, either
  using command line option ``--config foo.cfg`` or encoding it into executable
@@ -144,18 +156,6 @@ New Compiler Flags
- New ``-nostdlib++`` flag to disable linking the C++ standard library. Similar
  to using ``clang`` instead of ``clang++`` but doesn't disable ``-lm``.

- Clang supports the ``-mretpoline`` flag to enable `retpolines
  <https://support.google.com/faqs/answer/7625886>`_. Code compiled with this
  flag will be hardened against variant #2 of the Spectre attack. Indirect
  branches from switches or gotos removed from the code, and indirect calls
  will be made through a "retpoline" thunk. The necessary thunks will
  automatically be inserted into the generated code. Clang also supports
  ``-mretpoline-external-thunk`` which works like ``-mretpoline`` but requires
  the user to provide their own thunk definitions. The external thunk names
  start with ``__x86_indirect_thunk_`` and end in a register name. For 64-bit
  platforms, only an ``r11`` thunk is used, but for 32-bit platforms ``eax``,
  ``ecx``, ``edx``, and ``edi`` thunks are used.


Attribute Changes in Clang
--------------------------