1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00

[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
This commit is contained in:
Nico Weber 2021-05-14 23:07:09 -04:00
parent 4f5c40575e
commit 3e66c8c917
3 changed files with 77 additions and 1 deletions

View File

@ -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

View File

@ -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",

View File

@ -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" ]
}