aboutsummaryrefslogtreecommitdiff
path: root/libitm
diff options
context:
space:
mode:
authorH.J. Lu <hongjiu.lu@intel.com>2018-04-24 22:15:51 +0000
committerH.J. Lu <hjl@gcc.gnu.org>2018-04-24 15:15:51 -0700
commitffc2fc06e3cd63d06943baab93c9f8e39a28b14d (patch)
treecc73e3f6d3787c7b0b579ca3ae0891b40a492611 /libitm
parente59133c36c1733ccce20e21b4358418f450f23ee (diff)
downloadgcc-ffc2fc06e3cd63d06943baab93c9f8e39a28b14d.zip
gcc-ffc2fc06e3cd63d06943baab93c9f8e39a28b14d.tar.gz
gcc-ffc2fc06e3cd63d06943baab93c9f8e39a28b14d.tar.bz2
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. From-SVN: r259621
Diffstat (limited to 'libitm')
-rw-r--r--libitm/ChangeLog6
-rw-r--r--libitm/config/x86/sjlj.S8
2 files changed, 10 insertions, 4 deletions
diff --git a/libitm/ChangeLog b/libitm/ChangeLog
index de57e70..fe49453 100644
--- a/libitm/ChangeLog
+++ b/libitm/ChangeLog
@@ -1,5 +1,11 @@
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.
2018-04-23 H.J. Lu <hongjiu.lu@intel.com>
diff --git a/libitm/config/x86/sjlj.S b/libitm/config/x86/sjlj.S
index 2345b2f..e5cdbab 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