import("//compiler-rt/target.gni") action("version_script") { script = "//compiler-rt/lib/sanitizer_common/scripts/gen_dynamic_list.py" sources = [ "hwasan.syms.extra" ] deps = [ ":hwasan", ":hwasan_cxx", ] outputs = [ "$target_gen_dir/hwasan.vers" ] args = [ "--version-list", "--extra", rebase_path(sources[0], root_build_dir), rebase_path( "$crt_current_out_dir/libclang_rt.hwasan$crt_current_target_suffix.a", root_build_dir), rebase_path( "$crt_current_out_dir/libclang_rt.hwasan_cxx$crt_current_target_suffix.a", root_build_dir), "--nm-executable", "nm", "-o", rebase_path(outputs[0], root_build_dir), ] } source_set("sources") { configs -= [ "//llvm/utils/gn/build:llvm_code" ] configs += [ "//llvm/utils/gn/build:crt_code" ] defines = [ "HWASAN_WITH_INTERCEPTORS=1" ] deps = [ "//compiler-rt/lib/interception:sources", "//compiler-rt/lib/sanitizer_common:sources", "//compiler-rt/lib/ubsan:sources", ] sources = [ "hwasan.cpp", "hwasan.h", "hwasan_allocator.cpp", "hwasan_allocator.h", "hwasan_dynamic_shadow.cpp", "hwasan_dynamic_shadow.h", "hwasan_exceptions.cpp", "hwasan_flags.h", "hwasan_globals.cpp", "hwasan_globals.h", "hwasan_interceptors.cpp", "hwasan_interceptors_vfork.S", "hwasan_interface_internal.h", "hwasan_linux.cpp", "hwasan_malloc_bisect.h", "hwasan_mapping.h", "hwasan_memintrinsics.cpp", "hwasan_poisoning.cpp", "hwasan_poisoning.h", "hwasan_report.cpp", "hwasan_report.h", "hwasan_setjmp.S", "hwasan_tag_mismatch_aarch64.S", "hwasan_thread.cpp", "hwasan_thread.h", "hwasan_thread_list.cpp", "hwasan_thread_list.h", "hwasan_type_test.cpp", ] } source_set("cxx_sources") { configs -= [ "//llvm/utils/gn/build:llvm_code" ] configs += [ "//llvm/utils/gn/build:crt_code" ] defines = [ "HWASAN_WITH_INTERCEPTORS=1" ] deps = [ "//compiler-rt/lib/ubsan:cxx_sources" ] sources = [ "hwasan_new_delete.cpp" ] } static_library("hwasan") { output_dir = crt_current_out_dir output_name = "clang_rt.hwasan$crt_current_target_suffix" complete_static_lib = true configs -= [ "//llvm/utils/gn/build:llvm_code", "//llvm/utils/gn/build:thin_archive", ] configs += [ "//llvm/utils/gn/build:crt_code" ] deps = [ ":sources" ] } static_library("hwasan_cxx") { output_dir = crt_current_out_dir output_name = "clang_rt.hwasan_cxx$crt_current_target_suffix" complete_static_lib = true configs -= [ "//llvm/utils/gn/build:llvm_code", "//llvm/utils/gn/build:thin_archive", ] configs += [ "//llvm/utils/gn/build:crt_code" ] deps = [ ":cxx_sources" ] } shared_library("hwasan_shared") { output_dir = crt_current_out_dir output_name = "clang_rt.hwasan$crt_current_target_suffix" configs -= [ "//llvm/utils/gn/build:llvm_code" ] configs += [ "//llvm/utils/gn/build:crt_code" ] deps = [ ":cxx_sources", ":sources", ":version_script", ] inputs = [ "$target_gen_dir/hwasan.vers" ] ldflags = [ "-Wl,--version-script," + rebase_path(inputs[0], root_build_dir), "-Wl,-z,global", ] }