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