forked from OSchip/llvm-project
[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:
parent
747e5cfb9f
commit
452e035729
|
@ -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")
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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" ]
|
||||
}
|
Loading…
Reference in New Issue