CMakeLists.txt revision 5e5be21cc6165ae16a3002f0c3bace10c493491b
14a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org# Build for the AddressSanitizer runtime support library. 243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenset(ASAN_SOURCES 443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen asan_allocator.cc 543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen asan_allocator2.cc 643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen asan_fake_stack.cc 743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen asan_globals.cc 843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen asan_interceptors.cc 943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen asan_linux.cc 1043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen asan_mac.cc 1143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen asan_malloc_linux.cc 1243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen asan_malloc_mac.cc 1343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen asan_malloc_win.cc 1443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen asan_new_delete.cc 1543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen asan_poisoning.cc 1643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen asan_posix.cc 1743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen asan_report.cc 1843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen asan_rtl.cc 1943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen asan_stack.cc 2043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen asan_stats.cc 2143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen asan_thread.cc 2243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen asan_thread_registry.cc 2343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen asan_win.cc 2443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen ) 2543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 2643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenset(ASAN_DYLIB_SOURCES 2743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen ${ASAN_SOURCES} 2843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen dynamic/asan_interceptors_dynamic.cc 2943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen ) 305323a9c29497eb5a52821d396990c6d75a37baf7jkummerow@chromium.org 31b4968bea48ba224f54110f626278e2c04649dd5bmstarzinger@chromium.orginclude_directories(..) 3243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 33c514574143c1bf74d4fb6e7dccb175fe9ff2f5d3sgjesse@chromium.orgset(ASAN_CFLAGS ${SANITIZER_COMMON_CFLAGS}) 3443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 35a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.orgset(ASAN_COMMON_DEFINITIONS 3690dca01eac542464c29011d239bf18f26e0b8f00machenbach@chromium.org ASAN_HAS_EXCEPTIONS=1) 372c9426bdda5e95459527292063d885c98180cb0fjkummerow@chromium.org 3843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenif(ANDROID) 39a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org list(APPEND ASAN_COMMON_DEFINITIONS 404efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org ASAN_FLEXIBLE_MAPPING_AND_OFFSET=0 417c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org ASAN_NEEDS_SEGV=0 4243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen ASAN_LOW_MEMORY=1) 43a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.orgelse() 44a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org list(APPEND ASAN_COMMON_DEFINITIONS 45c1789eecd43bf9c5497636592bf14fa754d04c89machenbach@chromium.org ASAN_FLEXIBLE_MAPPING_AND_OFFSET=1 462c9426bdda5e95459527292063d885c98180cb0fjkummerow@chromium.org ASAN_NEEDS_SEGV=1) 4743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenendif() 48c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com 4943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenset(ASAN_DYLIB_DEFINITIONS 50c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com ${ASAN_COMMON_DEFINITIONS} 51a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org MAC_INTERPOSE_FUNCTIONS=1) 5243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 53ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org# Architectures supported by ASan. 5443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfilter_available_targets(ASAN_SUPPORTED_ARCH 5531e7138e1a05e29ceefa8919ae12cb621a48ca7fmads.s.ager x86_64 i386 powerpc64 powerpc) 56a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 5731e7138e1a05e29ceefa8919ae12cb621a48ca7fmads.s.agerset(ASAN_RUNTIME_LIBRARIES) 5831e7138e1a05e29ceefa8919ae12cb621a48ca7fmads.s.agerif(APPLE) 5931e7138e1a05e29ceefa8919ae12cb621a48ca7fmads.s.ager # Build universal binary on APPLE. 6071affb54842da76b24f0bb3184e9f0960523f89dkasperl@chromium.org add_compiler_rt_osx_static_runtime(clang_rt.asan_osx 6171affb54842da76b24f0bb3184e9f0960523f89dkasperl@chromium.org ARCH ${ASAN_SUPPORTED_ARCH} 6243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen SOURCES ${ASAN_SOURCES} 63394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com $<TARGET_OBJECTS:RTInterception.osx> 64303ada708275d2d425b846fb237f1ba7598ee239lrn@chromium.org $<TARGET_OBJECTS:RTSanitizerCommon.osx> 65303ada708275d2d425b846fb237f1ba7598ee239lrn@chromium.org CFLAGS ${ASAN_CFLAGS} 66303ada708275d2d425b846fb237f1ba7598ee239lrn@chromium.org DEFS ${ASAN_COMMON_DEFINITIONS}) 67ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org list(APPEND ASAN_RUNTIME_LIBRARIES clang_rt.asan_osx) 68ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.orgelseif(ANDROID) 69303ada708275d2d425b846fb237f1ba7598ee239lrn@chromium.org add_library(clang_rt.asan-arm-android SHARED 70303ada708275d2d425b846fb237f1ba7598ee239lrn@chromium.org ${ASAN_SOURCES} 7143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen $<TARGET_OBJECTS:RTInterception.arm.android> 7243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen $<TARGET_OBJECTS:RTSanitizerCommon.arm.android> 7343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen ) 7443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen set_target_compile_flags(clang_rt.asan-arm-android 7543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen ${ASAN_CFLAGS}) 7646839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org set_property(TARGET clang_rt.asan-arm-android APPEND PROPERTY 7743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen COMPILE_DEFINITIONS ${ASAN_COMMON_DEFINITIONS}) 7846839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org target_link_libraries(clang_rt.asan-arm-android dl) 7943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen list(APPEND ASAN_RUNTIME_LIBRARIES clang_rt.asan-arm-android) 8046839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.orgelse() 8143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen # Otherwise, build separate libraries for each target. 8246839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org foreach(arch ${ASAN_SUPPORTED_ARCH}) 83f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org add_compiler_rt_static_runtime(clang_rt.asan-${arch} ${arch} 84f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org SOURCES ${ASAN_SOURCES} 8543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen $<TARGET_OBJECTS:RTInterception.${arch}> 8643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> 8743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen CFLAGS ${ASAN_CFLAGS} 8843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen DEFS ${ASAN_COMMON_DEFINITIONS}) 8943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen list(APPEND ASAN_RUNTIME_LIBRARIES clang_rt.asan-${arch}) 9043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen endforeach() 913d00d0a753cf5e5091f883517e6612ece769f999jkummerow@chromium.orgendif() 9234e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org 9343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenset(ASAN_DYNAMIC_RUNTIME_LIBRARIES) 9443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenif(APPLE) 9546839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org # Build universal binary on APPLE. 9646839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org add_compiler_rt_osx_dynamic_runtime(clang_rt.asan_osx_dynamic 9743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen ARCH ${ASAN_SUPPORTED_ARCH} 9846839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org SOURCES ${ASAN_DYLIB_SOURCES} 9946839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org $<TARGET_OBJECTS:RTInterception.osx> 10043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen $<TARGET_OBJECTS:RTSanitizerCommon.osx> 10146839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org CFLAGS ${ASAN_CFLAGS} 10246839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org DEFS ${ASAN_DYLIB_DEFINITIONS} 103f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.org # Dynamic lookup is needed because shadow scale and offset are 104f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.org # provided by the instrumented modules. 105f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.org LINKFLAGS "-framework Foundation" 10643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen "-undefined dynamic_lookup") 10743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen list(APPEND ASAN_DYNAMIC_RUNTIME_LIBRARIES clang_rt.asan_osx_dynamic) 10843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenendif() 10943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 11043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenif(LLVM_INCLUDE_TESTS) 11143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen add_subdirectory(tests) 11243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenendif() 1139faefa4670e0c454c6e56bb87b4410d73828e84fsvenpanne@chromium.org 1149faefa4670e0c454c6e56bb87b4410d73828e84fsvenpanne@chromium.orgadd_subdirectory(lit_tests) 1159faefa4670e0c454c6e56bb87b4410d73828e84fsvenpanne@chromium.org