From 7957c611b220ec0c9e9c423bf874e9d357f6dab1 Mon Sep 17 00:00:00 2001 From: yang yunjia <14576829+elcnukys@user.noreply.gitee.com> Date: Fri, 17 Jan 2025 09:45:58 +0800 Subject: [PATCH] [llvm-build]clang_rt.crtbegin.o clang_rt.crtend.o bti enable BTI (Branch Target Identification) is a security feature primarily used to protect software from control flow attacks, particularly those related to branch target prediction vulnerabilities in modern processors. Signed-off-by: yangyunjia --- llvm-build/build.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/llvm-build/build.py b/llvm-build/build.py index 4459e122e246..677135271a07 100755 --- a/llvm-build/build.py +++ b/llvm-build/build.py @@ -1789,6 +1789,31 @@ class LlvmLibs(BuildUtils): target=None, install=True) + if arch == 'aarch64' and not first_time: + build_target = [] + install_target = [] + crt_extra_flags.append('-mbranch-protection=bti') + build_target = ['clang_rt.crtbegin-aarch64', 'clang_rt.crtend-aarch64'] + install_target = ['install-clang_rt.crtend-aarch64', 'install-clang_rt.crtbegin-aarch64'] + crt_flags = ' '.join(cflags + crt_extra_flags) + crt_defines['CMAKE_C_FLAGS'] = crt_flags + crt_defines['CMAKE_ASM_FLAGS'] = crt_flags + crt_defines['CMAKE_CXX_FLAGS'] = crt_flags + + self.invoke_cmake(crt_cmake_path, + crt_path, + crt_defines, + env=dict(self.build_config.ORIG_ENV)) + + self.invoke_ninja(out_path=crt_path, + env=dict(self.build_config.ORIG_ENV), + target=build_target, + install=False) + self.invoke_ninja(out_path=crt_path, + env=dict(self.build_config.ORIG_ENV), + target=install_target, + install=False) + def build_libomp(self, llvm_install, arch, -- Gitee