x86: Update __CET__ check
authorH.J. Lu <hongjiu.lu@intel.com>
Tue, 24 Apr 2018 22:15:51 +0000 (22:15 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Tue, 24 Apr 2018 22:15:51 +0000 (15:15 -0700)
__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.

From-SVN: r259621

libgcc/ChangeLog
libgcc/config/i386/linux-unwind.h
libitm/ChangeLog
libitm/config/x86/sjlj.S

index 86003ea2a22715be5d52698e70a89d9fecd22b70..8d413b5efb64a15420c67f10fa1966394527a756 100644 (file)
@@ -1,3 +1,8 @@
+2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * config/i386/linux-unwind.h: Add (__CET__ & 2) != 0 check
+       when including "config/i386/shadow-stack-unwind.h".
+
 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
 
        * configure: Regenerated.
index f1f52334d8d2decd28dbd537d13163a92667aa4f..ea838e4e47b9f6a75e76c3643fb8d60e210154eb 100644 (file)
@@ -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
 
index de57e708c4c16ed41c4f6b4ca539bcf281711108..fe49453770aa9d774e2a6d265081f9dea923a3fc 100644 (file)
@@ -1,3 +1,9 @@
+2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * config/x86/sjlj.S (_ITM_beginTransaction): Add
+       (__CET__ & 2) != 0 check for shadow stack.
+       (GTM_longjmp): Likewise.
+
 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
 
        * configure: Regenerated.
index 2345b2f4ec489a689ea9fa5f483c8d5eee0063b8..e5cdbab48a751b05cc0bd4d3c81d327facb9a451 100644 (file)
@@ -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