1include_directories(..) 2 3# Runtime library sources and build flags. 4set(MSAN_RTL_SOURCES 5 msan.cpp 6 msan_allocator.cpp 7 msan_chained_origin_depot.cpp 8 msan_interceptors.cpp 9 msan_linux.cpp 10 msan_report.cpp 11 msan_thread.cpp 12 msan_poisoning.cpp 13 ) 14 15set(MSAN_RTL_CXX_SOURCES 16 msan_new_delete.cpp 17 ) 18 19set(MSAN_RTL_HEADERS 20 msan.h 21 msan_allocator.h 22 msan_chained_origin_depot.h 23 msan_flags.h 24 msan_flags.inc 25 msan_interface_internal.h 26 msan_origin.h 27 msan_poisoning.h 28 msan_report.h 29 msan_thread.h 30 ) 31 32set(MSAN_RTL_CFLAGS ${SANITIZER_COMMON_CFLAGS}) 33if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") 34 append_list_if(COMPILER_RT_HAS_FTLS_MODEL_INITIAL_EXEC -ftls-model=initial-exec MSAN_RTL_CFLAGS) 35endif() 36append_rtti_flag(OFF MSAN_RTL_CFLAGS) 37if(NOT CMAKE_SYSTEM_NAME MATCHES "FreeBSD") 38 append_list_if(COMPILER_RT_HAS_FPIE_FLAG -fPIE MSAN_RTL_CFLAGS) 39endif() 40# Prevent clang from generating libc calls. 41append_list_if(COMPILER_RT_HAS_FFREESTANDING_FLAG -ffreestanding MSAN_RTL_CFLAGS) 42 43set(MSAN_RUNTIME_LIBRARIES) 44 45# Static runtime library. 46add_compiler_rt_component(msan) 47 48foreach(arch ${MSAN_SUPPORTED_ARCH}) 49 add_compiler_rt_runtime(clang_rt.msan 50 STATIC 51 ARCHS ${arch} 52 SOURCES ${MSAN_RTL_SOURCES} 53 $<TARGET_OBJECTS:RTInterception.${arch}> 54 $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> 55 $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> 56 $<TARGET_OBJECTS:RTSanitizerCommonCoverage.${arch}> 57 $<TARGET_OBJECTS:RTSanitizerCommonSymbolizer.${arch}> 58 $<TARGET_OBJECTS:RTUbsan.${arch}> 59 ADDITIONAL_HEADERS ${MSAN_RTL_HEADERS} 60 CFLAGS ${MSAN_RTL_CFLAGS} 61 PARENT_TARGET msan) 62 add_compiler_rt_runtime(clang_rt.msan_cxx 63 STATIC 64 ARCHS ${arch} 65 SOURCES ${MSAN_RTL_CXX_SOURCES} 66 $<TARGET_OBJECTS:RTUbsan_cxx.${arch}> 67 ADDITIONAL_HEADERS ${MSAN_RTL_HEADERS} 68 CFLAGS ${MSAN_RTL_CFLAGS} 69 PARENT_TARGET msan) 70 list(APPEND MSAN_RUNTIME_LIBRARIES clang_rt.msan-${arch} 71 clang_rt.msan_cxx-${arch}) 72 if(SANITIZER_USE_SYMBOLS) 73 add_sanitizer_rt_symbols(clang_rt.msan 74 ARCHS ${arch} 75 EXTRA msan.syms.extra) 76 add_sanitizer_rt_symbols(clang_rt.msan_cxx 77 ARCHS ${arch} 78 EXTRA msan.syms.extra) 79 add_dependencies(msan clang_rt.msan-${arch}-symbols 80 clang_rt.msan_cxx-${arch}-symbols) 81 endif() 82endforeach() 83 84add_compiler_rt_resource_file(msan_ignorelist msan_ignorelist.txt msan) 85list(APPEND MSAN_RUNTIME_LIBRARIES msan_ignorelist) 86 87if(COMPILER_RT_INCLUDE_TESTS) 88 add_subdirectory(tests) 89endif() 90