From: H.J. Lu Date: Tue, 24 Apr 2018 22:15:51 +0000 (+0000) Subject: x86: Update __CET__ check X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ffc2fc06e3cd63d06943baab93c9f8e39a28b14d;p=gcc.git x86: Update __CET__ check __CET__ has been changed by revision 259522: commit d59cfa9a4064339cf2bd2da828c4c133f13e57f0 Author: hjl 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. From-SVN: r259621 --- diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 86003ea2a22..8d413b5efb6 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,8 @@ +2018-04-24 H.J. Lu + + * config/i386/linux-unwind.h: Add (__CET__ & 2) != 0 check + when including "config/i386/shadow-stack-unwind.h". + 2018-04-24 H.J. Lu * configure: Regenerated. 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 . */ /* 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/ChangeLog b/libitm/ChangeLog index de57e708c4c..fe49453770a 100644 --- a/libitm/ChangeLog +++ b/libitm/ChangeLog @@ -1,3 +1,9 @@ +2018-04-24 H.J. Lu + + * config/x86/sjlj.S (_ITM_beginTransaction): Add + (__CET__ & 2) != 0 check for shadow stack. + (GTM_longjmp): Likewise. + 2018-04-24 H.J. Lu * configure: Regenerated. 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