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