This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
RE: [PATCH 2/2] x86: Update __CET__ check
- From: "Tsimbalist, Igor V" <igor dot v dot tsimbalist at intel dot com>
- To: "H.J. Lu" <hjl dot tools at gmail dot com>, "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Cc: Uros Bizjak <ubizjak at gmail dot com>, "Tsimbalist, Igor V" <igor dot v dot tsimbalist at intel dot com>
- Date: Tue, 24 Apr 2018 22:10:35 +0000
- Subject: RE: [PATCH 2/2] x86: Update __CET__ check
- Dlp-product: dlpe-windows
- Dlp-reaction: no-action
- Dlp-version: 11.0.200.100
- References: <20180424170814.3843-1-hjl.tools@gmail.com> <20180424170814.3843-2-hjl.tools@gmail.com>
> -----Original Message-----
> From: gcc-patches-owner@gcc.gnu.org [mailto:gcc-patches-
> owner@gcc.gnu.org] On Behalf Of H.J. Lu
> Sent: Tuesday, April 24, 2018 7:08 PM
> To: gcc-patches@gcc.gnu.org
> Cc: Tsimbalist, Igor V <igor.v.tsimbalist@intel.com>; Uros Bizjak
> <ubizjak@gmail.com>
> Subject: [PATCH 2/2] x86: Update __CET__ check
>
> __CET__ has been changed by revision 259522:
>
> commit d59cfa9a4064339cf2bd2da828c4c133f13e57f0
> Author: hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
> Date: Fri Apr 20 13:30:13 2018 +0000
>
> Define __CET__ for -fcf-protection and remove -mibt
>
> to
>
> (__CET__ & 1) != 0: -fcf-protection=branch or -fcf-protection=full
> (__CET__ & 2) != 0: -fcf-protection=return or -fcf-protection=full
>
> We should check (__CET__ & 2) != 0 for shadow stack.
>
> libgcc/
>
> * config/i386/linux-unwind.h: Add (__CET__ & 2) != 0 check
> when including "config/i386/shadow-stack-unwind.h".
>
> libitm/
>
> * config/x86/sjlj.S (_ITM_beginTransaction): Add
> (__CET__ & 2) != 0 check for shadow stack.
> (GTM_longjmp): Likewise.
> ---
> libgcc/config/i386/linux-unwind.h | 2 +-
> libitm/config/x86/sjlj.S | 8 ++++----
> 2 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/libgcc/config/i386/linux-unwind.h b/libgcc/config/i386/linux-
> unwind.h
> index f1f52334d8d..ea838e4e47b 100644
> --- a/libgcc/config/i386/linux-unwind.h
> +++ b/libgcc/config/i386/linux-unwind.h
> @@ -23,7 +23,7 @@ see the files COPYING3 and COPYING.RUNTIME
> respectively. If not, see
> <http://www.gnu.org/licenses/>. */
>
> /* Unwind shadow stack for -fcf-protection -mshstk. */
> -#if defined __SHSTK__ && defined __CET__
> +#if defined __SHSTK__ && defined __CET__ && (__CET__ & 2) != 0
> # include "config/i386/shadow-stack-unwind.h"
> #endif
>
> diff --git a/libitm/config/x86/sjlj.S b/libitm/config/x86/sjlj.S
> index 2345b2f4ec4..e5cdbab48a7 100644
> --- a/libitm/config/x86/sjlj.S
> +++ b/libitm/config/x86/sjlj.S
> @@ -141,7 +141,7 @@ SYM(_ITM_beginTransaction):
> movq %r15, -24(%rax)
> xorq %rdx, %rdx
> /* Save zero or shadow stack pointer in the new field. */
> -#if defined(__SHSTK__) && defined(__CET__)
> +#if defined __SHSTK__ && defined __CET__ && (__CET__ & 2) != 0
> rdsspq %rdx
> #endif
> movq %rdx, -16(%rax)
> @@ -177,7 +177,7 @@ SYM(_ITM_beginTransaction):
> movl %ebp, 20(%esp)
> xorl %edx, %edx
> /* Save zero or shadow stack pointer in the new field. */
> -#if defined(__SHSTK__) && defined(__CET__)
> +#if defined __SHSTK__ && defined __CET__ && (__CET__ & 2) != 0
> rdsspd %edx
> #endif
> movl %edx, 24(%esp)
> @@ -221,7 +221,7 @@ SYM(GTM_longjmp):
> cfi_offset(%rip, 64)
> cfi_register(%rsp, %rcx)
> movq %rcx, %rsp
> -#if defined(__SHSTK__) && defined(__CET__)
> +#if defined __SHSTK__ && defined __CET__ && (__CET__ & 2) != 0
> /* Check if Shadow Stack is enabled. */
> xorq %rcx, %rcx
> rdsspq %rcx
> @@ -259,7 +259,7 @@ SYM(GTM_longjmp):
> cfi_offset(%eip, 24)
> cfi_register(%esp, %ecx)
> movl %ecx, %esp
> -#if defined(__SHSTK__) && defined(__CET__)
> +#if defined __SHSTK__ && defined __CET__ && (__CET__ & 2) != 0
> /* Check if Shadow Stack is enabled. */
> xorl %ecx, %ecx
> rdsspd %ecx
> --
> 2.14.3
OK.
Igor