[gn build] Add ubsan libraries
authorArthur Eubanks <aeubanks@google.com>
Mon, 15 Aug 2022 20:04:09 +0000 (13:04 -0700)
committerArthur Eubanks <aeubanks@google.com>
Mon, 15 Aug 2022 20:55:36 +0000 (13:55 -0700)
clang -fsanitize=undefined works with this.

Reviewed By: thakis

Differential Revision: https://reviews.llvm.org/D131916

llvm/utils/gn/secondary/compiler-rt/lib/BUILD.gn
llvm/utils/gn/secondary/compiler-rt/lib/ubsan/BUILD.gn

index 52c6431..324ec38 100644 (file)
@@ -7,7 +7,10 @@ group("lib") {
     deps += [ "//compiler-rt/lib/msan" ]
   }
   if (current_os == "linux" || current_os == "android") {
-    deps += [ "//compiler-rt/lib/ubsan_minimal" ]
+    deps += [
+      "//compiler-rt/lib/ubsan",
+      "//compiler-rt/lib/ubsan_minimal",
+    ]
   }
   if (current_os != "win" && current_os != "baremetal") {
     deps += [ "//compiler-rt/lib/asan" ]
index 35b4c20..6679523 100644 (file)
@@ -1,3 +1,12 @@
+import("//compiler-rt/target.gni")
+
+group("ubsan") {
+  deps = [
+    ":ubsan_standalone",
+    ":ubsan_standalone_cxx",
+  ]
+}
+
 source_set("sources") {
   configs -= [ "//llvm/utils/gn/build:llvm_code" ]
   configs += [ "//llvm/utils/gn/build:crt_code" ]
@@ -46,7 +55,6 @@ source_set("dynamic_runtime_thunk") {
   sources = [ "ubsan_win_dynamic_runtime_thunk.cpp" ]
 }
 
-# Unreferenced; at the moment exists to make sync_source_lists_from_cmake happy.
 source_set("standalone_sources") {
   configs -= [ "//llvm/utils/gn/build:llvm_code" ]
   configs -= [ "//llvm/utils/gn/build:no_rtti" ]
@@ -57,6 +65,11 @@ source_set("standalone_sources") {
     "ubsan_init_standalone.cpp",
     "ubsan_signals_standalone.cpp",
   ]
+  deps = [
+    ":sources",
+    "//compiler-rt/lib/interception:sources",
+    "//compiler-rt/lib/sanitizer_common:sources",
+  ]
 }
 
 source_set("cxx_sources") {
@@ -72,3 +85,31 @@ source_set("cxx_sources") {
     "ubsan_type_hash_win.cpp",
   ]
 }
+
+static_library("ubsan_standalone") {
+  output_dir = crt_current_out_dir
+  output_name = "clang_rt.ubsan_standalone$crt_current_target_suffix"
+  complete_static_lib = true
+  configs -= [
+    "//llvm/utils/gn/build:llvm_code",
+    "//llvm/utils/gn/build:thin_archive",
+  ]
+  deps = [
+    ":sources",
+    ":standalone_sources",
+  ]
+  configs += [ "//llvm/utils/gn/build:crt_code" ]
+  sources = [ "ubsan_init_standalone_preinit.cpp" ]
+}
+
+static_library("ubsan_standalone_cxx") {
+  output_dir = crt_current_out_dir
+  output_name = "clang_rt.ubsan_standalone_cxx$crt_current_target_suffix"
+  complete_static_lib = true
+  configs -= [
+    "//llvm/utils/gn/build:llvm_code",
+    "//llvm/utils/gn/build:thin_archive",
+  ]
+  deps = [ ":cxx_sources" ]
+  configs += [ "//llvm/utils/gn/build:crt_code" ]
+}