| 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.a", |
| root_build_dir), |
| rebase_path( |
| "$crt_current_out_dir/libclang_rt.hwasan_cxx-$crt_current_target.a", |
| root_build_dir), |
| "-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.cc", |
| "hwasan.h", |
| "hwasan_allocator.cc", |
| "hwasan_allocator.h", |
| "hwasan_dynamic_shadow.cc", |
| "hwasan_dynamic_shadow.h", |
| "hwasan_flags.h", |
| "hwasan_interceptors.cc", |
| "hwasan_interface_internal.h", |
| "hwasan_linux.cc", |
| "hwasan_mapping.h", |
| "hwasan_memintrinsics.cc", |
| "hwasan_poisoning.cc", |
| "hwasan_poisoning.h", |
| "hwasan_report.cc", |
| "hwasan_report.h", |
| "hwasan_thread.cc", |
| "hwasan_thread.h", |
| "hwasan_thread_list.cc", |
| "hwasan_thread_list.h", |
| ] |
| } |
| |
| source_set("cxx_sources") { |
| configs -= [ "//llvm/utils/gn/build:llvm_code" ] |
| configs += [ "//llvm/utils/gn/build:crt_code" ] |
| deps = [ |
| "//compiler-rt/lib/ubsan:cxx_sources", |
| ] |
| sources = [ |
| "hwasan_new_delete.cc", |
| ] |
| } |
| |
| static_library("hwasan") { |
| output_dir = crt_current_out_dir |
| output_name = "clang_rt.hwasan-$crt_current_target" |
| complete_static_lib = true |
| configs -= [ "//llvm/utils/gn/build:llvm_code" ] |
| 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" |
| complete_static_lib = true |
| configs -= [ "//llvm/utils/gn/build:llvm_code" ] |
| 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" |
| 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", |
| ] |
| } |