xref: /netbsd-src/external/apache2/llvm/dist/llvm/utils/gn/secondary/compiler-rt/lib/hwasan/BUILD.gn (revision 82d56013d7b633d116a93943de88e08335357a7c)
1import("//compiler-rt/target.gni")
2
3if (current_cpu == "x64") {
4  hwasan_name = "hwasan_aliases"
5} else {
6  hwasan_name = "hwasan"
7}
8
9action("version_script") {
10  script = "//compiler-rt/lib/sanitizer_common/scripts/gen_dynamic_list.py"
11  sources = [ "hwasan.syms.extra" ]
12  deps = [
13    ":hwasan",
14    ":hwasan_cxx",
15  ]
16  outputs = [ "$target_gen_dir/hwasan.vers" ]
17  args = [
18    "--version-list",
19    "--extra",
20    rebase_path(sources[0], root_build_dir),
21    rebase_path(
22        "$crt_current_out_dir/libclang_rt.$hwasan_name$crt_current_target_suffix.a",
23        root_build_dir),
24    rebase_path(
25        "$crt_current_out_dir/libclang_rt.${hwasan_name}_cxx$crt_current_target_suffix.a",
26        root_build_dir),
27    "--nm-executable",
28    "nm",
29    "-o",
30    rebase_path(outputs[0], root_build_dir),
31  ]
32}
33
34source_set("sources") {
35  configs -= [ "//llvm/utils/gn/build:llvm_code" ]
36  configs += [ "//llvm/utils/gn/build:crt_code" ]
37  defines = [ "HWASAN_WITH_INTERCEPTORS=1" ]
38  if (current_cpu == "x64") {
39    defines += [ "HWASAN_ALIASING_MODE" ]
40  }
41  deps = [
42    "//compiler-rt/lib/interception:sources",
43    "//compiler-rt/lib/sanitizer_common:sources",
44    "//compiler-rt/lib/ubsan:sources",
45  ]
46  sources = [
47    "hwasan.cpp",
48    "hwasan.h",
49    "hwasan_allocator.cpp",
50    "hwasan_allocator.h",
51    "hwasan_dynamic_shadow.cpp",
52    "hwasan_dynamic_shadow.h",
53    "hwasan_exceptions.cpp",
54    "hwasan_flags.h",
55    "hwasan_globals.cpp",
56    "hwasan_globals.h",
57    "hwasan_interceptors.cpp",
58    "hwasan_interceptors_vfork.S",
59    "hwasan_interface_internal.h",
60    "hwasan_linux.cpp",
61    "hwasan_malloc_bisect.h",
62    "hwasan_mapping.h",
63    "hwasan_memintrinsics.cpp",
64    "hwasan_poisoning.cpp",
65    "hwasan_poisoning.h",
66    "hwasan_report.cpp",
67    "hwasan_report.h",
68    "hwasan_setjmp.S",
69    "hwasan_tag_mismatch_aarch64.S",
70    "hwasan_thread.cpp",
71    "hwasan_thread.h",
72    "hwasan_thread_list.cpp",
73    "hwasan_thread_list.h",
74    "hwasan_type_test.cpp",
75  ]
76}
77
78source_set("cxx_sources") {
79  configs -= [ "//llvm/utils/gn/build:llvm_code" ]
80  configs += [ "//llvm/utils/gn/build:crt_code" ]
81  defines = [ "HWASAN_WITH_INTERCEPTORS=1" ]
82  deps = [ "//compiler-rt/lib/ubsan:cxx_sources" ]
83  sources = [ "hwasan_new_delete.cpp" ]
84}
85
86static_library("hwasan") {
87  output_dir = crt_current_out_dir
88  output_name = "clang_rt.$hwasan_name$crt_current_target_suffix"
89  complete_static_lib = true
90  configs -= [
91    "//llvm/utils/gn/build:llvm_code",
92    "//llvm/utils/gn/build:thin_archive",
93  ]
94  configs += [ "//llvm/utils/gn/build:crt_code" ]
95  deps = [ ":sources" ]
96}
97
98static_library("hwasan_cxx") {
99  output_dir = crt_current_out_dir
100  output_name = "clang_rt.${hwasan_name}_cxx$crt_current_target_suffix"
101  complete_static_lib = true
102  configs -= [
103    "//llvm/utils/gn/build:llvm_code",
104    "//llvm/utils/gn/build:thin_archive",
105  ]
106  configs += [ "//llvm/utils/gn/build:crt_code" ]
107  deps = [ ":cxx_sources" ]
108}
109
110shared_library("hwasan_shared") {
111  output_dir = crt_current_out_dir
112  output_name = "clang_rt.$hwasan_name$crt_current_target_suffix"
113  configs -= [ "//llvm/utils/gn/build:llvm_code" ]
114  configs += [ "//llvm/utils/gn/build:crt_code" ]
115  deps = [
116    ":cxx_sources",
117    ":sources",
118    ":version_script",
119  ]
120  inputs = [ "$target_gen_dir/hwasan.vers" ]
121  ldflags = [
122    "-Wl,--version-script," + rebase_path(inputs[0], root_build_dir),
123    "-Wl,-z,global",
124  ]
125}
126