blob: de5980e5644bb17ff8136f594417434bd3119ab0 [file] [log] [blame]
Evgeniy Stepanov0231c502012-12-25 12:39:56 +00001include_directories(..)
Evgeniy Stepanov78c56c32012-12-11 12:27:27 +00002
Evgeniy Stepanov0231c502012-12-25 12:39:56 +00003# Runtime library sources and build flags.
4set(MSAN_RTL_SOURCES
Evgeniy Stepanov78c56c32012-12-11 12:27:27 +00005 msan.cc
6 msan_allocator.cc
Stephen Hines2d1fdb22014-05-28 23:58:16 -07007 msan_chained_origin_depot.cc
Evgeniy Stepanov78c56c32012-12-11 12:27:27 +00008 msan_interceptors.cc
9 msan_linux.cc
Evgeniy Stepanovdb010da2012-12-26 09:32:05 +000010 msan_report.cc
Stephen Hines2d1fdb22014-05-28 23:58:16 -070011 msan_thread.cc
Stephen Hines86277eb2015-03-23 12:06:32 -070012 msan_poisoning.cc
Evgeniy Stepanov78c56c32012-12-11 12:27:27 +000013 )
Stephen Hines2d1fdb22014-05-28 23:58:16 -070014
Pirama Arumuga Nainarcdce50b2015-07-01 12:26:56 -070015set(MSAN_RTL_CXX_SOURCES
16 msan_new_delete.cc)
17
18
Stephen Hines2d1fdb22014-05-28 23:58:16 -070019set(MSAN_RTL_CFLAGS ${SANITIZER_COMMON_CFLAGS})
20append_no_rtti_flag(MSAN_RTL_CFLAGS)
Stephen Hines6d186232014-11-26 17:56:19 -080021append_list_if(COMPILER_RT_HAS_FPIE_FLAG -fPIE MSAN_RTL_CFLAGS)
Stephen Hines2d1fdb22014-05-28 23:58:16 -070022# Prevent clang from generating libc calls.
Stephen Hines6d186232014-11-26 17:56:19 -080023append_list_if(COMPILER_RT_HAS_FFREESTANDING_FLAG -ffreestanding MSAN_RTL_CFLAGS)
Stephen Hines2d1fdb22014-05-28 23:58:16 -070024
25set(MSAN_RUNTIME_LIBRARIES)
Evgeniy Stepanov78c56c32012-12-11 12:27:27 +000026
Evgeniy Stepanov0231c502012-12-25 12:39:56 +000027# Static runtime library.
Stephen Hines2d1fdb22014-05-28 23:58:16 -070028add_custom_target(msan)
Stephen Hines6d186232014-11-26 17:56:19 -080029foreach(arch ${MSAN_SUPPORTED_ARCH})
Stephen Hines2d1fdb22014-05-28 23:58:16 -070030 add_compiler_rt_runtime(clang_rt.msan-${arch} ${arch} STATIC
Alexey Samsonov7eca1522013-01-20 14:14:13 +000031 SOURCES ${MSAN_RTL_SOURCES}
32 $<TARGET_OBJECTS:RTInterception.${arch}>
33 $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>
Peter Collingbourne0c547de2013-05-17 16:17:19 +000034 $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>
Pirama Arumuga Nainarcdce50b2015-07-01 12:26:56 -070035 $<TARGET_OBJECTS:RTUbsan.${arch}>
Alexey Samsonove5fa2432013-08-27 15:08:02 +000036 CFLAGS ${MSAN_RTL_CFLAGS})
Pirama Arumuga Nainarcdce50b2015-07-01 12:26:56 -070037 add_compiler_rt_runtime(clang_rt.msan_cxx-${arch} ${arch} STATIC
38 SOURCES ${MSAN_RTL_CXX_SOURCES}
39 $<TARGET_OBJECTS:RTUbsan_cxx.${arch}>
40 CFLAGS ${MSAN_RTL_CFLAGS})
41 add_dependencies(msan clang_rt.msan-${arch}
42 clang_rt.msan_cxx-${arch})
43 list(APPEND MSAN_RUNTIME_LIBRARIES clang_rt.msan-${arch}
44 clang_rt.msan_cxx-${arch})
Alexey Samsonov544bdfb2013-08-28 08:07:04 +000045 if(UNIX)
46 add_sanitizer_rt_symbols(clang_rt.msan-${arch} msan.syms.extra)
Pirama Arumuga Nainarcdce50b2015-07-01 12:26:56 -070047 add_sanitizer_rt_symbols(clang_rt.msan_cxx-${arch} msan.syms.extra)
48 add_dependencies(msan clang_rt.msan-${arch}-symbols
49 clang_rt.msan_cxx-${arch}-symbols)
Alexey Samsonov544bdfb2013-08-28 08:07:04 +000050 endif()
Stephen Hines6d186232014-11-26 17:56:19 -080051endforeach()
Evgeniy Stepanov0231c502012-12-25 12:39:56 +000052
Alexey Samsonov4d1b3832013-05-21 13:55:56 +000053add_compiler_rt_resource_file(msan_blacklist msan_blacklist.txt)
Stephen Hines2d1fdb22014-05-28 23:58:16 -070054add_dependencies(msan msan_blacklist)
55add_dependencies(compiler-rt msan)
Alexey Samsonov4d1b3832013-05-21 13:55:56 +000056
Stephen Hines2d1fdb22014-05-28 23:58:16 -070057if(COMPILER_RT_INCLUDE_TESTS)
Evgeniy Stepanov0231c502012-12-25 12:39:56 +000058 add_subdirectory(tests)
59endif()