[llvm] r351246 - gn build: Add build files for compiler-rt/lib/{hwasan, interception, sanitizer_common, ubsan}.

Peter Collingbourne via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 15 13:08:22 PST 2019


Author: pcc
Date: Tue Jan 15 13:08:21 2019
New Revision: 351246

URL: http://llvm.org/viewvc/llvm-project?rev=351246&view=rev
Log:
gn build: Add build files for compiler-rt/lib/{hwasan,interception,sanitizer_common,ubsan}.

This allows the hwasan runtime to be built for Android aarch64.

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

Added:
    llvm/trunk/utils/gn/secondary/compiler-rt/
    llvm/trunk/utils/gn/secondary/compiler-rt/lib/
    llvm/trunk/utils/gn/secondary/compiler-rt/lib/hwasan/
    llvm/trunk/utils/gn/secondary/compiler-rt/lib/hwasan/BUILD.gn
    llvm/trunk/utils/gn/secondary/compiler-rt/lib/interception/
    llvm/trunk/utils/gn/secondary/compiler-rt/lib/interception/BUILD.gn
    llvm/trunk/utils/gn/secondary/compiler-rt/lib/sanitizer_common/
    llvm/trunk/utils/gn/secondary/compiler-rt/lib/sanitizer_common/BUILD.gn
    llvm/trunk/utils/gn/secondary/compiler-rt/lib/ubsan/
    llvm/trunk/utils/gn/secondary/compiler-rt/lib/ubsan/BUILD.gn
Modified:
    llvm/trunk/utils/gn/build/BUILD.gn
    llvm/trunk/utils/gn/secondary/BUILD.gn

Modified: llvm/trunk/utils/gn/build/BUILD.gn
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/gn/build/BUILD.gn?rev=351246&r1=351245&r2=351246&view=diff
==============================================================================
--- llvm/trunk/utils/gn/build/BUILD.gn (original)
+++ llvm/trunk/utils/gn/build/BUILD.gn Tue Jan 15 13:08:21 2019
@@ -135,6 +135,15 @@ config("clang_code") {
   ]
 }
 
+config("crt_code") {
+  include_dirs = [ "//compiler-rt/lib" ]
+  cflags = [
+    "-fPIC",
+    "-funwind-tables",
+    "-gline-tables-only",
+  ]
+}
+
 config("warn_covered_switch_default") {
   if (is_clang) {
     cflags = [ "-Wcovered-switch-default" ]

Modified: llvm/trunk/utils/gn/secondary/BUILD.gn
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/gn/secondary/BUILD.gn?rev=351246&r1=351245&r2=351246&view=diff
==============================================================================
--- llvm/trunk/utils/gn/secondary/BUILD.gn (original)
+++ llvm/trunk/utils/gn/secondary/BUILD.gn Tue Jan 15 13:08:21 2019
@@ -12,7 +12,12 @@ group("default") {
   if (android_ndk_path != "") {
     # FIXME: This should be a dependency of a test target instead of being
     # depended on from here.
-    deps += [ "//llvm/tools/llvm-symbolizer(//llvm/utils/gn/build/toolchain:stage2_android_aarch64)" ]
+    android_aarch64_toolchain =
+        "//llvm/utils/gn/build/toolchain:stage2_android_aarch64"
+    deps += [
+      "//compiler-rt/lib/hwasan:hwasan_shared($android_aarch64_toolchain)",
+      "//llvm/tools/llvm-symbolizer($android_aarch64_toolchain)",
+    ]
   }
 
   testonly = true

Added: llvm/trunk/utils/gn/secondary/compiler-rt/lib/hwasan/BUILD.gn
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/gn/secondary/compiler-rt/lib/hwasan/BUILD.gn?rev=351246&view=auto
==============================================================================
--- llvm/trunk/utils/gn/secondary/compiler-rt/lib/hwasan/BUILD.gn (added)
+++ llvm/trunk/utils/gn/secondary/compiler-rt/lib/hwasan/BUILD.gn Tue Jan 15 13:08:21 2019
@@ -0,0 +1,107 @@
+import("//llvm/version.gni")
+
+# FIXME: Make this support more platforms.
+assert(current_os == "android")
+
+runtime_output_dir = "$root_build_dir/lib/clang/$llvm_version/lib/linux"
+runtime_target = "aarch64-android"
+
+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("$runtime_output_dir/libclang_rt.hwasan-$runtime_target.a",
+                root_build_dir),
+    rebase_path("$runtime_output_dir/libclang_rt.hwasan_cxx-$runtime_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_allocator.cc",
+    "hwasan_dynamic_shadow.cc",
+    "hwasan_interceptors.cc",
+    "hwasan_linux.cc",
+    "hwasan_memintrinsics.cc",
+    "hwasan_poisoning.cc",
+    "hwasan_report.cc",
+    "hwasan_thread.cc",
+    "hwasan_thread_list.cc",
+  ]
+}
+
+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 = runtime_output_dir
+  output_name = "clang_rt.hwasan-$runtime_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 = runtime_output_dir
+  output_name = "clang_rt.hwasan_cxx-$runtime_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 = runtime_output_dir
+  output_name = "clang_rt.hwasan-$runtime_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",
+  ]
+}

Added: llvm/trunk/utils/gn/secondary/compiler-rt/lib/interception/BUILD.gn
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/gn/secondary/compiler-rt/lib/interception/BUILD.gn?rev=351246&view=auto
==============================================================================
--- llvm/trunk/utils/gn/secondary/compiler-rt/lib/interception/BUILD.gn (added)
+++ llvm/trunk/utils/gn/secondary/compiler-rt/lib/interception/BUILD.gn Tue Jan 15 13:08:21 2019
@@ -0,0 +1,13 @@
+source_set("sources") {
+  configs -= [ "//llvm/utils/gn/build:llvm_code" ]
+  configs += [ "//llvm/utils/gn/build:crt_code" ]
+  deps = [
+    "//compiler-rt/lib/sanitizer_common:sources",
+  ]
+  sources = [
+    "interception_linux.cc",
+    "interception_mac.cc",
+    "interception_type_test.cc",
+    "interception_win.cc",
+  ]
+}

Added: llvm/trunk/utils/gn/secondary/compiler-rt/lib/sanitizer_common/BUILD.gn
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/gn/secondary/compiler-rt/lib/sanitizer_common/BUILD.gn?rev=351246&view=auto
==============================================================================
--- llvm/trunk/utils/gn/secondary/compiler-rt/lib/sanitizer_common/BUILD.gn (added)
+++ llvm/trunk/utils/gn/secondary/compiler-rt/lib/sanitizer_common/BUILD.gn Tue Jan 15 13:08:21 2019
@@ -0,0 +1,70 @@
+source_set("sources") {
+  configs -= [ "//llvm/utils/gn/build:llvm_code" ]
+  configs += [ "//llvm/utils/gn/build:crt_code" ]
+  sources = [
+    "sancov_flags.cc",
+    "sanitizer_allocator.cc",
+    "sanitizer_allocator_checks.cc",
+    "sanitizer_allocator_report.cc",
+    "sanitizer_common.cc",
+    "sanitizer_common_libcdep.cc",
+    "sanitizer_coverage_fuchsia.cc",
+    "sanitizer_coverage_libcdep_new.cc",
+    "sanitizer_coverage_win_sections.cc",
+    "sanitizer_deadlock_detector1.cc",
+    "sanitizer_deadlock_detector2.cc",
+    "sanitizer_errno.cc",
+    "sanitizer_file.cc",
+    "sanitizer_flag_parser.cc",
+    "sanitizer_flags.cc",
+    "sanitizer_fuchsia.cc",
+    "sanitizer_libc.cc",
+    "sanitizer_libignore.cc",
+    "sanitizer_linux.cc",
+    "sanitizer_linux_libcdep.cc",
+    "sanitizer_linux_s390.cc",
+    "sanitizer_mac.cc",
+    "sanitizer_mac_libcdep.cc",
+    "sanitizer_netbsd.cc",
+    "sanitizer_openbsd.cc",
+    "sanitizer_persistent_allocator.cc",
+    "sanitizer_platform_limits_freebsd.cc",
+    "sanitizer_platform_limits_linux.cc",
+    "sanitizer_platform_limits_netbsd.cc",
+    "sanitizer_platform_limits_openbsd.cc",
+    "sanitizer_platform_limits_posix.cc",
+    "sanitizer_platform_limits_solaris.cc",
+    "sanitizer_posix.cc",
+    "sanitizer_posix_libcdep.cc",
+    "sanitizer_printf.cc",
+    "sanitizer_procmaps_bsd.cc",
+    "sanitizer_procmaps_common.cc",
+    "sanitizer_procmaps_linux.cc",
+    "sanitizer_procmaps_mac.cc",
+    "sanitizer_procmaps_solaris.cc",
+    "sanitizer_rtems.cc",
+    "sanitizer_solaris.cc",
+    "sanitizer_stackdepot.cc",
+    "sanitizer_stacktrace.cc",
+    "sanitizer_stacktrace_libcdep.cc",
+    "sanitizer_stacktrace_printer.cc",
+    "sanitizer_stacktrace_sparc.cc",
+    "sanitizer_stoptheworld_linux_libcdep.cc",
+    "sanitizer_stoptheworld_mac.cc",
+    "sanitizer_suppressions.cc",
+    "sanitizer_symbolizer.cc",
+    "sanitizer_symbolizer_libbacktrace.cc",
+    "sanitizer_symbolizer_libcdep.cc",
+    "sanitizer_symbolizer_mac.cc",
+    "sanitizer_symbolizer_markup.cc",
+    "sanitizer_symbolizer_posix_libcdep.cc",
+    "sanitizer_symbolizer_report.cc",
+    "sanitizer_symbolizer_win.cc",
+    "sanitizer_termination.cc",
+    "sanitizer_thread_registry.cc",
+    "sanitizer_tls_get_addr.cc",
+    "sanitizer_unwind_linux_libcdep.cc",
+    "sanitizer_unwind_win.cc",
+    "sanitizer_win.cc",
+  ]
+}

Added: llvm/trunk/utils/gn/secondary/compiler-rt/lib/ubsan/BUILD.gn
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/gn/secondary/compiler-rt/lib/ubsan/BUILD.gn?rev=351246&view=auto
==============================================================================
--- llvm/trunk/utils/gn/secondary/compiler-rt/lib/ubsan/BUILD.gn (added)
+++ llvm/trunk/utils/gn/secondary/compiler-rt/lib/ubsan/BUILD.gn Tue Jan 15 13:08:21 2019
@@ -0,0 +1,30 @@
+source_set("sources") {
+  configs -= [ "//llvm/utils/gn/build:llvm_code" ]
+  configs += [ "//llvm/utils/gn/build:crt_code" ]
+  defines = [ "UBSAN_CAN_USE_CXXABI" ]
+  deps = [
+    "//compiler-rt/lib/interception:sources",
+    "//compiler-rt/lib/sanitizer_common:sources",
+  ]
+  sources = [
+    "ubsan_diag.cc",
+    "ubsan_flags.cc",
+    "ubsan_handlers.cc",
+    "ubsan_init.cc",
+    "ubsan_monitor.cc",
+    "ubsan_value.cc",
+  ]
+}
+
+source_set("cxx_sources") {
+  configs -= [ "//llvm/utils/gn/build:llvm_code" ]
+  configs -= [ "//llvm/utils/gn/build:no_rtti" ]
+  configs += [ "//llvm/utils/gn/build:crt_code" ]
+  defines = [ "UBSAN_CAN_USE_CXXABI" ]
+  sources = [
+    "ubsan_handlers_cxx.cc",
+    "ubsan_type_hash.cc",
+    "ubsan_type_hash_itanium.cc",
+    "ubsan_type_hash_win.cc",
+  ]
+}




More information about the llvm-commits mailing list