From 1c0e241d5bf7e8593e64ba11d0d2307c740b5d45 Mon Sep 17 00:00:00 2001 From: w00657280 Date: Wed, 23 Apr 2025 17:29:31 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20llvm19=E7=BC=96=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: w00657280 --- bundle.json | 33 ++++++++++++++++++++++++++++ clang/lib/Driver/ToolChains/OHOS.cpp | 4 ++++ llvm-build/build.py | 31 ++++++++++++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 bundle.json diff --git a/bundle.json b/bundle.json new file mode 100644 index 000000000000..6f5be6db9101 --- /dev/null +++ b/bundle.json @@ -0,0 +1,33 @@ +{ + "name": "@ohos/llvm-project", + "description": "The LLVM Compiler Infrastructure", + "version": "3.1", + "license": "Apache License v2.0 with LLVM Exceptions", + "publishAs": "code-segment", + "segment": { + "destPath": "third_party/llvm-project" + }, + "dirs": {}, + "scripts": {}, + "readmePath": { + "en": "" + }, + "component": { + "name": "llvm-project", + "subsystem": "llvmproject", + "syscap": [], + "features": [], + "adapted_system_type": [ "standard", "small" ], + "rom": "", + "ram": "", + "deps": { + "components": [], + "third_party": [] + }, + "build": { + "sub_component": ["//toolchain/llvm-project/llvm-build:new_crt"], + "inner_kits": [], + "test": [] + } + } +} diff --git a/clang/lib/Driver/ToolChains/OHOS.cpp b/clang/lib/Driver/ToolChains/OHOS.cpp index 4ceafa9e7139..61d6dc83dcf0 100644 --- a/clang/lib/Driver/ToolChains/OHOS.cpp +++ b/clang/lib/Driver/ToolChains/OHOS.cpp @@ -388,6 +388,10 @@ SanitizerMask OHOS::getSupportedSanitizers() const { Res |= SanitizerKind::Vptr; Res |= SanitizerKind::SafeStack; Res |= SanitizerKind::Scudo; + Res |= SanitizerKind::KernelAddress; + Res |= SanitizerKind::KernelMemory; + // OHOS_LOCAL + Res |= SanitizerKind::HWAddress; // TODO: kASAN for liteos ?? // TODO: Support TSAN and HWASAN and update mask. return Res; diff --git a/llvm-build/build.py b/llvm-build/build.py index c05ec8742fe5..e0059ce57291 100755 --- a/llvm-build/build.py +++ b/llvm-build/build.py @@ -1458,6 +1458,8 @@ class LlvmLibs(BuildUtils): self.sysroot_composer.build_musl_header(arch, target) if target.endswith(self.build_config.OPENHOS_SFX): self.sysroot_composer.install_linux_headers(arch, target) + # 创建软连接 + self.create_link(llvm_install) if self.build_config.build_libs_with_hb: self.run_hb_build_libs('crts_first_time') else: @@ -1738,6 +1740,35 @@ class LlvmLibs(BuildUtils): target=None, install=True) + + def create_link(self, llvm_install): + src_dir = os.path.join(llvm_install, 'lib', 'clang', '19.1.7', 'lib') + dst_dir = os.path.join(llvm_install, 'lib', 'clang', '19', 'lib') + + src_aarch64_dir = os.path.join(src_dir, "aarch64-unknown-linux-ohos") + src_x86_dir = os.path.join(src_dir, "x86_64-unknown-linux-ohos") + + dst_aarch64_19_1_7_dir = os.path.join(src_dir, "aarch64-linux-ohos") + dst_x86_19_1_7_dir = os.path.join(src_dir, "x86_64-linux-ohos") + + dst_aarch64_19_dir = os.path.join(dst_dir, "aarch64-linux-ohos") + dst_x86_19_dir = os.path.join(dst_dir, "x86_64-linux-ohos") + + prefix_path = os.path.join("..", "..", "19.1.7", "lib") + + if os.path.exists(src_aarch64_dir) and not os.path.exists(dst_aarch64_19_1_7_dir): + os.symlink(os.path.basename(src_aarch64_dir), dst_aarch64_19_1_7_dir) + + if os.path.exists(src_aarch64_dir) and not os.path.exists(dst_aarch64_19_dir): + os.symlink(os.path.join(prefix_path, os.path.basename(src_aarch64_dir)), dst_aarch64_19_dir) + + if os.path.exists(src_x86_dir) and not os.path.exists(dst_x86_19_1_7_dir): + os.symlink(os.path.basename(src_x86_dir), dst_x86_19_1_7_dir) + + if os.path.exists(src_x86_dir) and not os.path.exists(dst_x86_19_dir): + os.symlink(os.path.join(prefix_path, os.path.basename(src_x86_dir)), dst_x86_19_dir) + + def build_crts(self, llvm_install, arch, -- Gitee