diff --git a/compiler-rt/lib/gwp_asan/CMakeLists.txt b/compiler-rt/lib/gwp_asan/CMakeLists.txt index c79ea4427b0c4bca409415478e64c7930a834b43..f6428ab2ea9090029cd4e4bcf45e9da854e651c3 100644 --- a/compiler-rt/lib/gwp_asan/CMakeLists.txt +++ b/compiler-rt/lib/gwp_asan/CMakeLists.txt @@ -13,7 +13,7 @@ set(GWP_ASAN_SOURCES stack_trace_compressor.cpp ) # OHOS_LOCAL begin -if(OHOS) +if(OHOS AND NOT OHOS_LIBC_COMPATIBILITY) list(APPEND GWP_ASAN_SOURCES gwp_asan_c_interface.cpp) endif() # OHOS_LOCAL end diff --git a/llvm-build/build.py b/llvm-build/build.py index bef40a27305b806a335cc673709c4180a0112691..6ee8bc89f8e1a36c84e24b054632db710c724383 100755 --- a/llvm-build/build.py +++ b/llvm-build/build.py @@ -59,6 +59,7 @@ class BuildConfig(): self.no_build_riscv64 = args.skip_build or args.no_build_riscv64 self.no_build_mipsel = args.skip_build or args.no_build_mipsel self.no_build_x86_64 = args.skip_build or args.no_build_x86_64 + self.enable_tsan_non_ohos = args.enable_tsan_non_ohos self.build_ncurses = args.build_ncurses self.build_libedit = args.build_libedit self.build_lldb_static = args.build_lldb_static @@ -77,7 +78,10 @@ class BuildConfig(): self.ORIG_ENV = dict(os.environ) self.VERSION = None # autodetected - self.OPENHOS_SFX = '-linux-ohos' + if self.enable_tsan_non_ohos: + self.OPENHOS_SFX = '-unknown-linux-gnu' + else: + self.OPENHOS_SFX = '-linux-ohos' self.LITEOS_SFX = '-liteos-ohos' self.LLDB_PY_VERSION = '3.10' self.LLDB_PYTHON = 'python3' @@ -275,6 +279,12 @@ class BuildConfig(): default=False, help='check libc++_shared.so abi') + parser.add_argument( + '--enable-tsan-non-ohos', + action='store_true', + default=False, + help='Special build to enable TSAN') + def parse_args(self): parser = argparse.ArgumentParser(description='Process some integers.') @@ -1195,11 +1205,12 @@ class LlvmLibs(BuildUtils): self.sysroot_composer = sysroot_composer self.llvm_package = llvm_package - def build_crt_libs(self, configs, llvm_install): - for (arch, target) in configs: - self.sysroot_composer.build_musl_header(arch, target) - if target.endswith(self.build_config.OPENHOS_SFX): - self.sysroot_composer.install_linux_headers(arch, target) + def build_crt_libs(self, configs, llvm_install, use_musl): + if use_musl: + for (arch, target) in configs: + self.sysroot_composer.build_musl_header(arch, target) + if target.endswith(self.build_config.OPENHOS_SFX): + self.sysroot_composer.install_linux_headers(arch, target) if self.build_config.build_libs_with_hb: self.run_hb_build_libs('crts_first_time') else: @@ -1207,8 +1218,9 @@ class LlvmLibs(BuildUtils): self.build_libs(llvm_install, target, precompilation=True) - for (arch, target) in configs: - self.sysroot_composer.build_musl(arch, target) + if use_musl: + for (arch, target) in configs: + self.sysroot_composer.build_musl(arch, target) def build_libs_defines(self, llvm_triple, @@ -1227,7 +1239,8 @@ class LlvmLibs(BuildUtils): defines['CMAKE_CXX_COMPILER'] = cxx defines['CMAKE_AR'] = ar defines['LLVM_CONFIG_PATH'] = llvm_config - defines['CMAKE_SYSROOT'] = sysroot + if not self.build_config.enable_tsan_non_ohos: + defines['CMAKE_SYSROOT'] = sysroot defines['CMAKE_FIND_ROOT_PATH_MODE_INCLUDE'] = 'ONLY' defines['CMAKE_FIND_ROOT_PATH_MODE_LIBRARY'] = 'ONLY' defines['CMAKE_FIND_ROOT_PATH_MODE_PACKAGE'] = 'ONLY' @@ -1494,6 +1507,8 @@ class LlvmLibs(BuildUtils): crt_defines['CMAKE_CXX_FLAGS'] = ' '.join(cflags + crt_extra_flags) crt_defines['COMPILER_RT_TEST_COMPILER_CFLAGS'] = ' '.join(cflags) crt_defines['OHOS'] = '1' + if self.build_config.enable_tsan_non_ohos: + crt_defines['OHOS_LIBC_COMPATIBILITY'] = '1' crt_defines['COMPILER_RT_TEST_TARGET_TRIPLE'] = llvm_triple crt_defines['COMPILER_RT_TEST_STANDALONE_BUILD_LIBS'] = 'OFF' crt_defines['COMPILER_RT_INCLUDE_TESTS'] = 'ON' @@ -2560,7 +2575,7 @@ def main(): if build_config.do_build and build_utils.host_is_linux(): sysroot_composer.setup_cmake_platform(llvm_install) - llvm_libs.build_crt_libs(configs, llvm_install) + llvm_libs.build_crt_libs(configs, llvm_install, not build_config.enable_tsan_non_ohos) if build_config.need_libs: if build_config.build_libs_with_hb: