diff options
Diffstat (limited to 'lib/sanitizer_common/tests/CMakeLists.txt')
-rw-r--r-- | lib/sanitizer_common/tests/CMakeLists.txt | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/lib/sanitizer_common/tests/CMakeLists.txt b/lib/sanitizer_common/tests/CMakeLists.txt index 25e57507ad14..5b66917b05b0 100644 --- a/lib/sanitizer_common/tests/CMakeLists.txt +++ b/lib/sanitizer_common/tests/CMakeLists.txt @@ -5,20 +5,24 @@ set(SANITIZER_UNITTESTS sanitizer_atomic_test.cc sanitizer_common_test.cc sanitizer_flags_test.cc + sanitizer_ioctl_test.cc sanitizer_libc_test.cc sanitizer_linux_test.cc sanitizer_list_test.cc sanitizer_mutex_test.cc + sanitizer_nolibc_test.cc + sanitizer_posix_test.cc sanitizer_printf_test.cc sanitizer_scanf_interceptor_test.cc sanitizer_stackdepot_test.cc sanitizer_stacktrace_test.cc sanitizer_stoptheworld_test.cc + sanitizer_suppressions_test.cc sanitizer_test_main.cc - sanitizer_thread_registry_test.cc - ) + sanitizer_thread_registry_test.cc) -set(SANITIZER_TEST_HEADERS) +set(SANITIZER_TEST_HEADERS + sanitizer_test_utils.h) foreach(header ${SANITIZER_HEADERS}) list(APPEND SANITIZER_TEST_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/../${header}) endforeach() @@ -86,6 +90,24 @@ macro(add_sanitizer_tests_for_arch arch) DEPS ${SANITIZER_TEST_OBJECTS} ${SANITIZER_COMMON_LIB} LINK_FLAGS ${SANITIZER_TEST_LINK_FLAGS_COMMON} -lpthread ${TARGET_FLAGS}) + + if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" AND "${arch}" STREQUAL "x86_64") + # Test that the libc-independent part of sanitizer_common is indeed + # independent of libc, by linking this binary without libc (here) and + # executing it (unit test in sanitizer_nolibc_test.cc). + clang_compile(sanitizer_nolibc_test_main.${arch}.o + sanitizer_nolibc_test_main.cc + CFLAGS ${SANITIZER_TEST_CFLAGS_COMMON} ${TARGET_FLAGS} + DEPS ${SANITIZER_RUNTIME_LIBRARIES} ${SANITIZER_TEST_HEADERS}) + add_compiler_rt_test(SanitizerUnitTests "Sanitizer-${arch}-Test-Nolibc" + OBJECTS sanitizer_nolibc_test_main.${arch}.o + -Wl,-whole-archive + libRTSanitizerCommon.test.nolibc.${arch}.a + -Wl,-no-whole-archive + DEPS sanitizer_nolibc_test_main.${arch}.o + RTSanitizerCommon.test.nolibc.${arch} + LINK_FLAGS -nostdlib ${TARGET_FLAGS}) + endif() endmacro() if(COMPILER_RT_CAN_EXECUTE_TESTS) @@ -99,6 +121,8 @@ if(COMPILER_RT_CAN_EXECUTE_TESTS) add_sanitizer_common_lib("RTSanitizerCommon.test.x86_64" $<TARGET_OBJECTS:RTSanitizerCommon.x86_64> $<TARGET_OBJECTS:RTSanitizerCommonLibc.x86_64>) + add_sanitizer_common_lib("RTSanitizerCommon.test.nolibc.x86_64" + $<TARGET_OBJECTS:RTSanitizerCommon.x86_64>) endif() if(CAN_TARGET_i386) add_sanitizer_common_lib("RTSanitizerCommon.test.i386" |