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.
This commit is contained in:
H.J. Lu 2020-05-08 15:13:04 -07:00
parent 08c1d39d3a
commit 9e20d0f0ce
2 changed files with 15 additions and 0 deletions

View 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.

View 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