Skip to content

Commit

Permalink
ReleaseNotes: move the retpoline bullets higher
Browse files Browse the repository at this point in the history
  • Loading branch information
zmodem committed Mar 2, 2018
1 parent 5939284 commit d8dec18
Showing 1 changed file with 18 additions and 18 deletions.
36 changes: 18 additions & 18 deletions clang/docs/ReleaseNotes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand All @@ -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
-----------------------------------
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
--------------------------
Expand Down

0 comments on commit d8dec18

Please sign in to comment.