diff options
author | Alexey Samsonov <samsonov@google.com> | 2014-05-12 18:39:22 +0000 |
---|---|---|
committer | Alexey Samsonov <samsonov@google.com> | 2014-05-12 18:39:22 +0000 |
commit | 7dd26ecdc8f191ad02120ea5d05e41bea3dd80a5 (patch) | |
tree | 6bb916f962bdd558983e0c7775c2b47c77b90595 /lib/asan/CMakeLists.txt | |
parent | 238b9fd4b7be732c87629d8fe7c583bbe7c002e9 (diff) |
[ASan] Split static ASan runtime in two parts: asan and asan_cxx.
asan_cxx containts replacements for new/delete operators, and should
only be linked in C++ mode. We plan to start building this part
with exception support to make new more standard-compliant.
See https://code.google.com/p/address-sanitizer/issues/detail?id=295
for more details.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@208609 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/asan/CMakeLists.txt')
-rw-r--r-- | lib/asan/CMakeLists.txt | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/lib/asan/CMakeLists.txt b/lib/asan/CMakeLists.txt index 88647b841..01db51b69 100644 --- a/lib/asan/CMakeLists.txt +++ b/lib/asan/CMakeLists.txt @@ -18,7 +18,6 @@ set(ASAN_SOURCES asan_malloc_linux.cc asan_malloc_mac.cc asan_malloc_win.cc - asan_new_delete.cc asan_poisoning.cc asan_posix.cc asan_report.cc @@ -28,6 +27,9 @@ set(ASAN_SOURCES asan_thread.cc asan_win.cc) +set(ASAN_CXX_SOURCES + asan_new_delete.cc) + set(ASAN_PREINIT_SOURCES asan_preinit.cc) @@ -70,12 +72,12 @@ if(APPLE) foreach(os ${SANITIZER_COMMON_SUPPORTED_DARWIN_OS}) add_compiler_rt_darwin_object_library(RTAsan ${os} ARCH ${ASAN_SUPPORTED_ARCH} - SOURCES ${ASAN_SOURCES} + SOURCES ${ASAN_SOURCES} ${ASAN_CXX_SOURCES} CFLAGS ${ASAN_CFLAGS} DEFS ${ASAN_COMMON_DEFINITIONS}) endforeach() elseif(ANDROID) - add_library(RTAsan.arm.android OBJECT ${ASAN_SOURCES}) + add_library(RTAsan.arm.android OBJECT ${ASAN_SOURCES} ${ASAN_CXX_SOURCES}) set_target_compile_flags(RTAsan.arm.android ${ASAN_CFLAGS}) set_property(TARGET RTAsan.arm.android APPEND PROPERTY COMPILE_DEFINITIONS ${ASAN_COMMON_DEFINITIONS}) @@ -84,12 +86,16 @@ else() add_compiler_rt_object_library(RTAsan ${arch} SOURCES ${ASAN_SOURCES} CFLAGS ${ASAN_CFLAGS} DEFS ${ASAN_COMMON_DEFINITIONS}) + add_compiler_rt_object_library(RTAsan_cxx ${arch} + SOURCES ${ASAN_CXX_SOURCES} CFLAGS ${ASAN_CFLAGS} + DEFS ${ASAN_COMMON_DEFINITIONS}) add_compiler_rt_object_library(RTAsan_preinit ${arch} SOURCES ${ASAN_PREINIT_SOURCES} CFLAGS ${ASAN_CFLAGS} DEFS ${ASAN_COMMON_DEFINITIONS}) if (COMPILER_RT_BUILD_SHARED_ASAN) add_compiler_rt_object_library(RTAsan_dynamic ${arch} - SOURCES ${ASAN_SOURCES} CFLAGS ${ASAN_DYNAMIC_CFLAGS} + SOURCES ${ASAN_SOURCES} ${ASAN_CXX_SOURCES} + CFLAGS ${ASAN_DYNAMIC_CFLAGS} DEFS ${ASAN_DYNAMIC_DEFINITIONS}) endif() endforeach() @@ -142,6 +148,12 @@ else() DEFS ${ASAN_COMMON_DEFINITIONS}) add_dependencies(asan clang_rt.asan-${arch}) + add_compiler_rt_runtime(clang_rt.asan_cxx-${arch} ${arch} STATIC + SOURCES $<TARGET_OBJECTS:RTAsan_cxx.${arch}> + CFLAGS ${ASAN_CFLAGS} + DEFS ${ASAN_COMMON_DEFINITIONS}) + add_dependencies(asan clang_rt.asan_cxx-${arch}) + if (COMPILER_RT_BUILD_SHARED_ASAN) add_compiler_rt_runtime(clang_rt.asan-preinit-${arch} ${arch} STATIC SOURCES $<TARGET_OBJECTS:RTAsan_preinit.${arch}> @@ -160,6 +172,8 @@ else() endif() if (UNIX AND NOT ${arch} STREQUAL "i386") + add_sanitizer_rt_symbols(clang_rt.asan_cxx-${arch}) + add_dependencies(asan clang_rt.asan_cxx-${arch}-symbols) add_sanitizer_rt_symbols(clang_rt.asan-${arch} asan.syms.extra) add_dependencies(asan clang_rt.asan-${arch}-symbols) endif() |