From 9e20d0f0ce97c34e2424a3342ea573f3255f5ee3 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Fri, 8 May 2020 15:13:04 -0700 Subject: [PATCH] switchcontext.S: Include and use _CET_ENDBR When __CET__ is defined, 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 if __CET__ is defined. (_CET_ENDBR): New. Define if __CET__ is not defined. (fiber_switchContext): Add _CET_ENDBR after .cfi_startproc. --- 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 + + * libdruntime/config/x86/switchcontext.S: Include 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 * 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 +#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 -- 2.30.2