mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
x86/clang: add retpoline support
Detect whether the compiler supports clang retpoline option and enable
by default if available, just like it's done for gcc.
Note clang already disables jump tables when retpoline is enabled, so
there's no need to also pass the fno-jump-tables parameter. Also clang
already passes the return address in a register always on amd64, so
there's no need for any equivalent mindirect-branch-register
parameter.
Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
master commit: 9412486707
master date: 2022-02-21 18:17:56 +0000
This commit is contained in:
1 parent
0caab65970
commit
dc24f4342b
2 files changed
+5
-1
No files matched your search
@@ -33,7 +33,8 @@ config ARCH_DEFCONFIG
|
||||
default "arch/x86/configs/x86_64_defconfig"
|
||||
|
||||
config CC_HAS_INDIRECT_THUNK
|
||||
def_bool $(cc-option,-mindirect-branch-register)
|
||||
def_bool $(cc-option,-mindirect-branch-register) || \
|
||||
$(cc-option,-mretpoline-external-thunk)
|
||||
|
||||
config INDIRECT_THUNK
|
||||
def_bool y
|
||||
|
||||
@@ -46,6 +46,9 @@ ifeq ($(CONFIG_INDIRECT_THUNK),y)
|
||||
CFLAGS-$(CONFIG_CC_IS_GCC) += -mindirect-branch=thunk-extern
|
||||
CFLAGS-$(CONFIG_CC_IS_GCC) += -mindirect-branch-register
|
||||
CFLAGS-$(CONFIG_CC_IS_GCC) += -fno-jump-tables
|
||||
|
||||
# Enable clang retpoline support if available.
|
||||
CFLAGS-$(CONFIG_CC_IS_CLANG) += -mretpoline-external-thunk
|
||||
endif
|
||||
|
||||
ifdef CONFIG_XEN_IBT
|
||||
|
||||