switchcontext.S: Include <cet.h> and use _CET_ENDBR
authorH.J. Lu <hjl.tools@gmail.com>
Fri, 8 May 2020 22:13:04 +0000 (15:13 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Fri, 8 May 2020 22:13:25 +0000 (15:13 -0700)
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.

libphobos/ChangeLog
libphobos/libdruntime/config/x86/switchcontext.S

index 6a174beda75bbbece3462540df66012671916b8a..c885d9262167aed6828f940ac4704fb0ba2f7053 100644 (file)
@@ -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.
index f5d1a87eb01c67bb7bb2244767ee0c3f047b36d6..35063af491ca41d55115c786808b294605f94428 100644 (file)
@@ -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