aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm64
diff options
context:
space:
mode:
authorNick Desaulniers <ndesaulniers@google.com>2020-03-19 11:19:51 -0700
committerCatalin Marinas <catalin.marinas@arm.com>2020-03-20 15:01:04 +0000
commit3b446c7d27ddd06342901bb35211363f6944291a (patch)
tree4b12fffedeee42e3d9242409c51eb585c9e1b0e5 /arch/arm64
parentlkdtm: arm64: test kernel pointer authentication (diff)
downloadlinux-dev-3b446c7d27ddd06342901bb35211363f6944291a.tar.xz
linux-dev-3b446c7d27ddd06342901bb35211363f6944291a.zip
arm64: Kconfig: verify binutils support for ARM64_PTR_AUTH
Clang relies on GNU as from binutils to assemble the Linux kernel, currently. A recent patch to enable the armv8.3-a extension for pointer authentication checked for compiler support of the relevant flags. Everything works with binutils 2.34+, but for older versions we observe assembler errors: /tmp/vgettimeofday-36a54b.s: Assembler messages: /tmp/vgettimeofday-36a54b.s:40: Error: unknown pseudo-op: `.cfi_negate_ra_state' When compiling with Clang, require the assembler to support .cfi_negate_ra_state directives, in order to support CONFIG_ARM64_PTR_AUTH. Link: https://github.com/ClangBuiltLinux/linux/issues/938 Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Reviewed-by: Nathan Chancellor <natechancellor@gmail.com> Tested-by: Nathan Chancellor <natechancellor@gmail.com>
Diffstat (limited to 'arch/arm64')
-rw-r--r--arch/arm64/Kconfig4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 155041a5f0e4..c876afce10f3 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -1500,6 +1500,7 @@ config ARM64_PTR_AUTH
default y
depends on !KVM || ARM64_VHE
depends on (CC_HAS_SIGN_RETURN_ADDRESS || CC_HAS_BRANCH_PROT_PAC_RET) && AS_HAS_PAC
+ depends on CC_IS_GCC || (CC_IS_CLANG && AS_HAS_CFI_NEGATE_RA_STATE)
depends on (!FUNCTION_GRAPH_TRACER || DYNAMIC_FTRACE_WITH_REGS)
help
Pointer authentication (part of the ARMv8.3 Extensions) provides
@@ -1544,6 +1545,9 @@ config CC_HAS_SIGN_RETURN_ADDRESS
config AS_HAS_PAC
def_bool $(as-option,-Wa$(comma)-march=armv8.3-a)
+config AS_HAS_CFI_NEGATE_RA_STATE
+ def_bool $(as-instr,.cfi_startproc\n.cfi_negate_ra_state\n.cfi_endproc\n)
+
endmenu
menu "ARMv8.5 architectural features"