[gcc/devel/gccgo] switchcontext.S: Include <cet.h> and use _CET_ENDBR

Ian Lance Taylor ian@gcc.gnu.org
Sun Jul 12 18:01:09 GMT 2020


https://gcc.gnu.org/g:9e20d0f0ce97c34e2424a3342ea573f3255f5ee3

commit 9e20d0f0ce97c34e2424a3342ea573f3255f5ee3
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Fri May 8 15:13:04 2020 -0700

    switchcontext.S: Include <cet.h> and use _CET_ENDBR
    
    When __CET__ is defined, <cet.h> should be included to add Intel CET
    marker to object file and _CET_ENDBR should be placed at function entry
    to indicate indirect branch target.
    
            * libdruntime/config/x86/switchcontext.S: Include <cet.h> if
            __CET__ is defined.
            (_CET_ENDBR): New.  Define if __CET__ is not defined.
            (fiber_switchContext): Add _CET_ENDBR after .cfi_startproc.

Diff:
---
 libphobos/ChangeLog                              | 7 +++++++
 libphobos/libdruntime/config/x86/switchcontext.S | 8 ++++++++
 2 files changed, 15 insertions(+)

diff --git a/libphobos/ChangeLog b/libphobos/ChangeLog
index 6a174beda75..c885d926216 100644
--- a/libphobos/ChangeLog
+++ b/libphobos/ChangeLog
@@ -1,3 +1,10 @@
+2020-05-08  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* libdruntime/config/x86/switchcontext.S: Include <cet.h> if
+	__CET__ is defined.
+	(_CET_ENDBR): New.  Define if __CET__ is not defined.
+	(fiber_switchContext): Add _CET_ENDBR after .cfi_startproc.
+
 2020-05-08  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* Makefile.am (AM_MAKEFLAGS): Add $(CET_FLAGS) to GCC FLAGS.
diff --git a/libphobos/libdruntime/config/x86/switchcontext.S b/libphobos/libdruntime/config/x86/switchcontext.S
index f5d1a87eb01..35063af491c 100644
--- a/libphobos/libdruntime/config/x86/switchcontext.S
+++ b/libphobos/libdruntime/config/x86/switchcontext.S
@@ -24,6 +24,12 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #include "../common/threadasm.S"
 
+#ifdef __CET__
+# include <cet.h>
+#else
+# define _CET_ENDBR
+#endif
+
 #if defined(__i386__)
 
     .text
@@ -32,6 +38,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     .align 16
 CSYM(fiber_switchContext):
     .cfi_startproc
+    _CET_ENDBR
     // save current stack state
     push %ebp
     mov  %esp, %ebp
@@ -66,6 +73,7 @@ CSYM(fiber_switchContext):
     .align 16
 CSYM(fiber_switchContext):
     .cfi_startproc
+    _CET_ENDBR
     // Save current stack state.save current stack state
     push %rbp
     mov  %rsp, %rbp


More information about the Gcc-cvs mailing list