summaryrefslogtreecommitdiff
path: root/arch/arm64/include/asm/compiler.h
diff options
context:
space:
mode:
authorSami Tolvanen <samitolvanen@google.com>2022-04-06 01:16:18 +0300
committerKees Cook <keescook@chromium.org>2022-04-13 22:16:00 +0300
commite6f3b3c9c109ed57230996cf4a4c1b8ae7e36a81 (patch)
tree8769c4830c2b26931ca5e5ab664cd1316bf4aab7 /arch/arm64/include/asm/compiler.h
parent75c1182e18f4a66bbd2c91511b6b629dac6a27dc (diff)
downloadlinux-e6f3b3c9c109ed57230996cf4a4c1b8ae7e36a81.tar.xz
cfi: Use __builtin_function_start
Clang 14 added support for the __builtin_function_start function, which allows us to implement the function_nocfi macro without architecture-specific inline assembly and in a way that also works with static initializers. Change CONFIG_CFI_CLANG to depend on Clang >= 14, define function_nocfi using __builtin_function_start, and remove the arm64 inline assembly implementation. Link: https://github.com/llvm/llvm-project/commit/ec2e26eaf63558934f5b73a6e530edc453cf9508 Link: https://github.com/ClangBuiltLinux/linux/issues/1353 Signed-off-by: Sami Tolvanen <samitolvanen@google.com> Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> Reviewed-by: Mark Rutland <mark.rutland@arm.com> Tested-by: Mark Rutland <mark.rutland@arm.com> Acked-by: Will Deacon <will@kernel.org> # arm64 Reviewed-by: Nathan Chancellor <nathan@kernel.org> Signed-off-by: Kees Cook <keescook@chromium.org> Link: https://lore.kernel.org/r/20220405221618.633743-1-samitolvanen@google.com
Diffstat (limited to 'arch/arm64/include/asm/compiler.h')
-rw-r--r--arch/arm64/include/asm/compiler.h16
1 files changed, 0 insertions, 16 deletions
diff --git a/arch/arm64/include/asm/compiler.h b/arch/arm64/include/asm/compiler.h
index dc3ea4080e2e..6fb2e6bcc392 100644
--- a/arch/arm64/include/asm/compiler.h
+++ b/arch/arm64/include/asm/compiler.h
@@ -23,20 +23,4 @@
#define __builtin_return_address(val) \
(void *)(ptrauth_clear_pac((unsigned long)__builtin_return_address(val)))
-#ifdef CONFIG_CFI_CLANG
-/*
- * With CONFIG_CFI_CLANG, the compiler replaces function address
- * references with the address of the function's CFI jump table
- * entry. The function_nocfi macro always returns the address of the
- * actual function instead.
- */
-#define function_nocfi(x) ({ \
- void *addr; \
- asm("adrp %0, " __stringify(x) "\n\t" \
- "add %0, %0, :lo12:" __stringify(x) \
- : "=r" (addr)); \
- addr; \
-})
-#endif
-
#endif /* __ASM_COMPILER_H */