cfi: Use __builtin_function_start
authorSami Tolvanen <samitolvanen@google.com>
Tue, 5 Apr 2022 22:16:18 +0000 (15:16 -0700)
committerKees Cook <keescook@chromium.org>
Wed, 13 Apr 2022 19:16:00 +0000 (12:16 -0700)
commite6f3b3c9c109ed57230996cf4a4c1b8ae7e36a81
tree8769c4830c2b26931ca5e5ab664cd1316bf4aab7
parent75c1182e18f4a66bbd2c91511b6b629dac6a27dc
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
arch/Kconfig
arch/arm64/include/asm/compiler.h
include/linux/compiler-clang.h