[llvm] 452e035 - [gn build] Add build file for msan runtime
Nico Weber via llvm-commits
llvm-commits at lists.llvm.org
Mon May 17 03:59:01 PDT 2021
Author: Nico Weber
Date: 2021-05-17T06:58:10-04:00
New Revision: 452e035729a4544a8defda806c1010c7111d5231
URL: https://github.com/llvm/llvm-project/commit/452e035729a4544a8defda806c1010c7111d5231
DIFF: https://github.com/llvm/llvm-project/commit/452e035729a4544a8defda806c1010c7111d5231.diff
LOG: [gn build] Add build file for msan runtime
Works for the examples on
https://clang.llvm.org/docs/MemorySanitizer.html
Differential Revision: https://reviews.llvm.org/D102554
Added:
llvm/utils/gn/secondary/compiler-rt/lib/msan/BUILD.gn
Modified:
compiler-rt/lib/msan/CMakeLists.txt
llvm/utils/gn/TODO.txt
llvm/utils/gn/secondary/compiler-rt/lib/BUILD.gn
Removed:
################################################################################
diff --git a/compiler-rt/lib/msan/CMakeLists.txt b/compiler-rt/lib/msan/CMakeLists.txt
index cb1a784eee8b7..b115f68db3e2f 100644
--- a/compiler-rt/lib/msan/CMakeLists.txt
+++ b/compiler-rt/lib/msan/CMakeLists.txt
@@ -26,7 +26,8 @@ set(MSAN_RTL_HEADERS
msan_origin.h
msan_poisoning.h
msan_report.h
- msan_thread.h)
+ msan_thread.h
+ )
set(MSAN_RTL_CFLAGS ${SANITIZER_COMMON_CFLAGS})
if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
diff --git a/llvm/utils/gn/TODO.txt b/llvm/utils/gn/TODO.txt
index f573481e049ec..97b64d48cbb29 100644
--- a/llvm/utils/gn/TODO.txt
+++ b/llvm/utils/gn/TODO.txt
@@ -1,6 +1,6 @@
Ideas for things to do:
-- more projects (compiler-rt's asan/ubsan/msan/tsan, lldb)
+- more projects (lldb, check- targets for compiler-rt's asan/ubsan/msan/tsan)
- once there are more projects, have an llvm_enable_projects arg, modeled
after llvm_targets_to_build in the GN build
- a check-all build target that runs test of all projects
diff --git a/llvm/utils/gn/secondary/compiler-rt/lib/BUILD.gn b/llvm/utils/gn/secondary/compiler-rt/lib/BUILD.gn
index b98b85e3b77c7..45ba4837160ee 100644
--- a/llvm/utils/gn/secondary/compiler-rt/lib/BUILD.gn
+++ b/llvm/utils/gn/secondary/compiler-rt/lib/BUILD.gn
@@ -1,5 +1,8 @@
group("lib") {
deps = [ "//compiler-rt/lib/profile" ]
+ if (current_os == "linux") {
+ deps += [ "//compiler-rt/lib/msan" ]
+ }
if (current_os != "win") {
deps += [
"//compiler-rt/lib/asan",
diff --git a/llvm/utils/gn/secondary/compiler-rt/lib/msan/BUILD.gn b/llvm/utils/gn/secondary/compiler-rt/lib/msan/BUILD.gn
new file mode 100644
index 0000000000000..92be6dffa7562
--- /dev/null
+++ b/llvm/utils/gn/secondary/compiler-rt/lib/msan/BUILD.gn
@@ -0,0 +1,73 @@
+import("//compiler-rt/target.gni")
+
+static_library("msan") {
+ configs -= [ "//llvm/utils/gn/build:llvm_code" ]
+ configs += [ "//llvm/utils/gn/build:crt_code" ]
+
+ output_dir = crt_current_out_dir
+ assert(current_os == "linux", "MSan only works on Linux")
+ output_name = "clang_rt.msan$crt_current_target_suffix"
+
+ deps = [
+ "//compiler-rt/lib/interception:sources",
+ "//compiler-rt/lib/sanitizer_common:sources",
+ "//compiler-rt/lib/ubsan:sources",
+ ]
+
+ complete_static_lib = true
+ configs -= [ "//llvm/utils/gn/build:thin_archive" ]
+ deps += [ ":msan_cxx" ]
+
+ sources = [
+ "msan.cpp",
+ "msan.h",
+ "msan_allocator.cpp",
+ "msan_allocator.h",
+ "msan_chained_origin_depot.cpp",
+ "msan_chained_origin_depot.h",
+ "msan_flags.h",
+ "msan_flags.inc",
+ "msan_interceptors.cpp",
+ "msan_interface_internal.h",
+ "msan_linux.cpp",
+ "msan_origin.h",
+ "msan_poisoning.cpp",
+ "msan_poisoning.h",
+ "msan_report.cpp",
+ "msan_report.h",
+ "msan_thread.cpp",
+ "msan_thread.h",
+ ]
+
+ # To be able to include sanitizer_common.
+ include_dirs = [ ".." ]
+
+ # FIXME: have SANITIZER_COMMON_CFLAGS thingy? should fno-builtin be in
+ # crt_code?
+ cflags = [ "-fno-builtin" ]
+
+ cflags += [ "-fPIE" ]
+
+ # Prevent clang from generating libc calls.
+ cflags += [ "-ffreestanding" ]
+
+ # FIXME: link rt dl m pthread log
+ # FIXME: need libclang_rt.msan*.a.syms?
+ # FIXME: msan_ignorelist.txt
+}
+
+static_library("msan_cxx") {
+ configs -= [ "//llvm/utils/gn/build:llvm_code" ]
+ configs += [ "//llvm/utils/gn/build:crt_code" ]
+
+ output_dir = crt_current_out_dir
+ assert(current_os == "linux", "MSan only works on Linux")
+ output_name = "clang_rt.msan_cxx$crt_current_target_suffix"
+
+ complete_static_lib = true
+ configs -= [ "//llvm/utils/gn/build:thin_archive" ]
+
+ deps = [ "//compiler-rt/lib/ubsan:cxx_sources" ]
+
+ sources = [ "msan_new_delete.cpp" ]
+}
More information about the llvm-commits
mailing list