> -----Original Message-----
> From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches-
> ow...@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.tsimbal...@intel.com>; Uros Bizjak
> <ubiz...@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

Reply via email to