diff options
23 files changed, 58 insertions, 14 deletions
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 4ab1e933a..461579068 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -36,6 +36,10 @@ function(compiler_rt_build_sanitizer sanitizer) endif() endfunction() +if(COMPILER_RT_HAS_SANITIZER_COMMON) + add_subdirectory(sancov) +endif() + if(COMPILER_RT_BUILD_SANITIZERS) compiler_rt_build_runtime(interception) diff --git a/lib/asan/CMakeLists.txt b/lib/asan/CMakeLists.txt index 5ac5708a6..e265343ca 100644 --- a/lib/asan/CMakeLists.txt +++ b/lib/asan/CMakeLists.txt @@ -118,6 +118,7 @@ if(APPLE) RTInterception RTSanitizerCommon RTSanitizerCommonLibc + RTSancovLibc RTLSanCommon RTUbsan CFLAGS ${ASAN_DYNAMIC_CFLAGS} @@ -131,6 +132,7 @@ else() RTInterception RTSanitizerCommon RTSanitizerCommonLibc + RTSancovLibc RTLSanCommon RTUbsan) diff --git a/lib/asan/tests/CMakeLists.txt b/lib/asan/tests/CMakeLists.txt index 8089d51ef..0d53e0fee 100644 --- a/lib/asan/tests/CMakeLists.txt +++ b/lib/asan/tests/CMakeLists.txt @@ -281,6 +281,7 @@ macro(add_asan_tests_for_arch_and_kind arch kind) $<TARGET_OBJECTS:RTInterception.osx> $<TARGET_OBJECTS:RTSanitizerCommon.osx> $<TARGET_OBJECTS:RTSanitizerCommonLibc.osx> + $<TARGET_OBJECTS:RTSancovLibc.osx> $<TARGET_OBJECTS:RTLSanCommon.osx> $<TARGET_OBJECTS:RTUbsan.osx>) else() @@ -290,6 +291,7 @@ macro(add_asan_tests_for_arch_and_kind arch kind) $<TARGET_OBJECTS:RTInterception.${arch}> $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> + $<TARGET_OBJECTS:RTSancovLibc.${arch}> $<TARGET_OBJECTS:RTLSanCommon.${arch}> $<TARGET_OBJECTS:RTUbsan.${arch}> $<TARGET_OBJECTS:RTUbsan_cxx.${arch}>) @@ -342,6 +344,7 @@ if(ANDROID) $<TARGET_OBJECTS:RTInterception.${arch}> $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> + $<TARGET_OBJECTS:RTSancovLibc.${arch}> $<TARGET_OBJECTS:RTUbsan.${arch}> $<TARGET_OBJECTS:RTUbsan_cxx.${arch}> ${COMPILER_RT_GTEST_SOURCE} diff --git a/lib/cfi/CMakeLists.txt b/lib/cfi/CMakeLists.txt index 206400201..cf0fb3e82 100644 --- a/lib/cfi/CMakeLists.txt +++ b/lib/cfi/CMakeLists.txt @@ -20,6 +20,7 @@ foreach(arch ${CFI_SUPPORTED_ARCH}) OBJECT_LIBS RTInterception RTSanitizerCommon RTSanitizerCommonLibc + RTSancovLibc CFLAGS ${CFI_CFLAGS} PARENT_TARGET cfi) add_compiler_rt_runtime(clang_rt.cfi_diag @@ -29,6 +30,7 @@ foreach(arch ${CFI_SUPPORTED_ARCH}) OBJECT_LIBS RTInterception RTSanitizerCommon RTSanitizerCommonLibc + RTSancovLibc RTUbsan CFLAGS ${CFI_CFLAGS} ${CFI_DIAG_CFLAGS} PARENT_TARGET cfi) diff --git a/lib/dfsan/CMakeLists.txt b/lib/dfsan/CMakeLists.txt index 2c486bff8..cf843410e 100644 --- a/lib/dfsan/CMakeLists.txt +++ b/lib/dfsan/CMakeLists.txt @@ -23,6 +23,7 @@ foreach(arch ${DFSAN_SUPPORTED_ARCH}) $<TARGET_OBJECTS:RTInterception.${arch}> $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> + $<TARGET_OBJECTS:RTSancovLibc.${arch}> CFLAGS ${DFSAN_CFLAGS} PARENT_TARGET dfsan) add_sanitizer_rt_symbols(clang_rt.dfsan diff --git a/lib/esan/CMakeLists.txt b/lib/esan/CMakeLists.txt index 2012ab642..635f697de 100644 --- a/lib/esan/CMakeLists.txt +++ b/lib/esan/CMakeLists.txt @@ -26,6 +26,7 @@ foreach (arch ${ESAN_SUPPORTED_ARCH}) $<TARGET_OBJECTS:RTInterception.${arch}> $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> + $<TARGET_OBJECTS:RTSancovLibc.${arch}> CFLAGS ${ESAN_RTL_CFLAGS}) add_sanitizer_rt_symbols(clang_rt.esan ARCHS ${arch} diff --git a/lib/lsan/CMakeLists.txt b/lib/lsan/CMakeLists.txt index b782f2421..eb2100318 100644 --- a/lib/lsan/CMakeLists.txt +++ b/lib/lsan/CMakeLists.txt @@ -32,6 +32,7 @@ if(COMPILER_RT_HAS_LSAN) $<TARGET_OBJECTS:RTInterception.${arch}> $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> + $<TARGET_OBJECTS:RTSancovLibc.${arch}> $<TARGET_OBJECTS:RTLSanCommon.${arch}> CFLAGS ${LSAN_CFLAGS} PARENT_TARGET lsan) diff --git a/lib/msan/CMakeLists.txt b/lib/msan/CMakeLists.txt index 598ae5458..d9492760d 100644 --- a/lib/msan/CMakeLists.txt +++ b/lib/msan/CMakeLists.txt @@ -35,6 +35,7 @@ foreach(arch ${MSAN_SUPPORTED_ARCH}) $<TARGET_OBJECTS:RTInterception.${arch}> $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> + $<TARGET_OBJECTS:RTSancovLibc.${arch}> $<TARGET_OBJECTS:RTUbsan.${arch}> CFLAGS ${MSAN_RTL_CFLAGS} PARENT_TARGET msan) diff --git a/lib/sancov/CMakeLists.txt b/lib/sancov/CMakeLists.txt new file mode 100644 index 000000000..6ad03508b --- /dev/null +++ b/lib/sancov/CMakeLists.txt @@ -0,0 +1,16 @@ +set(SANITIZER_CFLAGS ${SANITIZER_COMMON_CFLAGS}) +append_rtti_flag(OFF SANITIZER_CFLAGS) + +set(SANCOV_LIBCDEP_SOURCES + sancov_flags.cc + sanitizer_coverage_libcdep.cc) + +add_compiler_rt_object_libraries(RTSancovLibc + ${OS_OPTION} + ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH} + SOURCES ${SANCOV_LIBCDEP_SOURCES} + CFLAGS ${SANITIZER_CFLAGS} + DEFS ${SANITIZER_COMMON_DEFINITIONS}) + +include_directories(..) + diff --git a/lib/sanitizer_common/sancov_flags.cc b/lib/sancov/sancov_flags.cc index 08fd2a436..14473a381 100644 --- a/lib/sanitizer_common/sancov_flags.cc +++ b/lib/sancov/sancov_flags.cc @@ -12,8 +12,8 @@ //===----------------------------------------------------------------------===// #include "sancov_flags.h" -#include "sanitizer_flag_parser.h" -#include "sanitizer_platform.h" +#include "sanitizer_common/sanitizer_flag_parser.h" +#include "sanitizer_common/sanitizer_platform.h" #if !SANITIZER_LINUX // other platforms do not have weak symbols out of the box. diff --git a/lib/sanitizer_common/sancov_flags.h b/lib/sancov/sancov_flags.h index 5fbd7ad06..3fe17dbf2 100644 --- a/lib/sanitizer_common/sancov_flags.h +++ b/lib/sancov/sancov_flags.h @@ -13,8 +13,8 @@ #ifndef SANCOV_FLAGS_H #define SANCOV_FLAGS_H -#include "sanitizer_flag_parser.h" -#include "sanitizer_internal_defs.h" +#include "sanitizer_common/sanitizer_flag_parser.h" +#include "sanitizer_common/sanitizer_internal_defs.h" namespace __sancov { diff --git a/lib/sanitizer_common/sancov_flags.inc b/lib/sancov/sancov_flags.inc index 63a1f0cbc..63a1f0cbc 100644 --- a/lib/sanitizer_common/sancov_flags.inc +++ b/lib/sancov/sancov_flags.inc diff --git a/lib/sanitizer_common/sanitizer_coverage_libcdep_new.cc b/lib/sancov/sanitizer_coverage_libcdep.cc index df6d10f81..92026bae0 100644 --- a/lib/sanitizer_common/sanitizer_coverage_libcdep_new.cc +++ b/lib/sancov/sanitizer_coverage_libcdep.cc @@ -9,10 +9,10 @@ // Sanitizer Coverage Controller for Trace PC Guard. #include "sancov_flags.h" -#include "sanitizer_allocator_internal.h" -#include "sanitizer_atomic.h" -#include "sanitizer_common.h" -#include "sanitizer_symbolizer.h" +#include "sanitizer_common/sanitizer_allocator_internal.h" +#include "sanitizer_common/sanitizer_atomic.h" +#include "sanitizer_common/sanitizer_common.h" +#include "sanitizer_common/sanitizer_symbolizer.h" using namespace __sanitizer; diff --git a/lib/sanitizer_common/CMakeLists.txt b/lib/sanitizer_common/CMakeLists.txt index c70b8be6d..007d93cc1 100644 --- a/lib/sanitizer_common/CMakeLists.txt +++ b/lib/sanitizer_common/CMakeLists.txt @@ -52,9 +52,7 @@ set(SANITIZER_NOLIBC_SOURCES set(SANITIZER_LIBCDEP_SOURCES sanitizer_common_libcdep.cc - sancov_flags.cc sanitizer_coverage_libcdep.cc - sanitizer_coverage_libcdep_new.cc sanitizer_coverage_mapping_libcdep.cc sanitizer_linux_libcdep.cc sanitizer_posix_libcdep.cc diff --git a/lib/sanitizer_common/sanitizer_coverage_libcdep.cc b/lib/sanitizer_common/sanitizer_coverage_libcdep.cc index ebdee33d7..5945ebbe9 100644 --- a/lib/sanitizer_common/sanitizer_coverage_libcdep.cc +++ b/lib/sanitizer_common/sanitizer_coverage_libcdep.cc @@ -954,7 +954,9 @@ SANITIZER_INTERFACE_ATTRIBUTE void __sanitizer_cov_init() { } SANITIZER_INTERFACE_ATTRIBUTE void __sanitizer_cov_dump() { coverage_data.DumpAll(); +#if SANITIZER_LINUX __sanitizer_dump_trace_pc_guard_coverage(); +#endif } SANITIZER_INTERFACE_ATTRIBUTE void __sanitizer_cov_module_init(s32 *guards, uptr npcs, u8 *counters, diff --git a/lib/sanitizer_common/tests/CMakeLists.txt b/lib/sanitizer_common/tests/CMakeLists.txt index 20698b9a8..f03b5a15c 100644 --- a/lib/sanitizer_common/tests/CMakeLists.txt +++ b/lib/sanitizer_common/tests/CMakeLists.txt @@ -200,7 +200,8 @@ if(COMPILER_RT_CAN_EXECUTE_TESTS AND NOT ANDROID) if(APPLE) add_sanitizer_common_lib("RTSanitizerCommon.test.osx" $<TARGET_OBJECTS:RTSanitizerCommon.osx> - $<TARGET_OBJECTS:RTSanitizerCommonLibc.osx>) + $<TARGET_OBJECTS:RTSanitizerCommonLibc.osx> + $<TARGET_OBJECTS:RTSancovLibc.osx>) else() if(CAN_TARGET_x86_64) add_sanitizer_common_lib("RTSanitizerCommon.test.nolibc.x86_64" @@ -210,7 +211,8 @@ if(COMPILER_RT_CAN_EXECUTE_TESTS AND NOT ANDROID) foreach(arch ${SANITIZER_UNITTEST_SUPPORTED_ARCH}) add_sanitizer_common_lib("RTSanitizerCommon.test.${arch}" $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> - $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>) + $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> + $<TARGET_OBJECTS:RTSancovLibc.${arch}>) endforeach() endif() foreach(arch ${SANITIZER_UNITTEST_SUPPORTED_ARCH}) @@ -224,7 +226,8 @@ if(ANDROID) ${SANITIZER_UNITTESTS} ${COMPILER_RT_GTEST_SOURCE} $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> - $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>) + $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> + $<TARGET_OBJECTS:RTSancovLibc.${arch}>) set_target_compile_flags(SanitizerTest ${SANITIZER_COMMON_CFLAGS} ${SANITIZER_TEST_CFLAGS_COMMON}) diff --git a/lib/scudo/CMakeLists.txt b/lib/scudo/CMakeLists.txt index 4f1acec78..7a386811a 100644 --- a/lib/scudo/CMakeLists.txt +++ b/lib/scudo/CMakeLists.txt @@ -29,6 +29,7 @@ if(COMPILER_RT_HAS_SCUDO) $<TARGET_OBJECTS:RTInterception.${arch}> $<TARGET_OBJECTS:RTSanitizerCommonNoTermination.${arch}> $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> + $<TARGET_OBJECTS:RTSancovLibc.${arch}> CFLAGS ${SCUDO_CFLAGS} PARENT_TARGET scudo) endforeach() diff --git a/lib/stats/CMakeLists.txt b/lib/stats/CMakeLists.txt index 2b3d6474b..27f5fa0f1 100644 --- a/lib/stats/CMakeLists.txt +++ b/lib/stats/CMakeLists.txt @@ -22,6 +22,7 @@ add_compiler_rt_runtime(clang_rt.stats SOURCES stats.cc OBJECT_LIBS RTSanitizerCommon RTSanitizerCommonLibc + RTSancovLibc CFLAGS ${SANITIZER_COMMON_CFLAGS} LINK_FLAGS ${WEAK_SYMBOL_LINK_FLAGS} PARENT_TARGET stats) diff --git a/lib/tsan/CMakeLists.txt b/lib/tsan/CMakeLists.txt index d51954596..c0bb48083 100644 --- a/lib/tsan/CMakeLists.txt +++ b/lib/tsan/CMakeLists.txt @@ -119,6 +119,7 @@ if(APPLE) OBJECT_LIBS RTInterception RTSanitizerCommon RTSanitizerCommonLibc + RTSancovLibc RTUbsan CFLAGS ${TSAN_RTL_CFLAGS} LINK_FLAGS ${WEAK_SYMBOL_LINK_FLAGS} @@ -179,6 +180,7 @@ else() $<TARGET_OBJECTS:RTInterception.${arch}> $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> + $<TARGET_OBJECTS:RTSancovLibc.${arch}> $<TARGET_OBJECTS:RTUbsan.${arch}> CFLAGS ${TSAN_RTL_CFLAGS}) add_compiler_rt_runtime(clang_rt.tsan_cxx diff --git a/lib/tsan/dd/CMakeLists.txt b/lib/tsan/dd/CMakeLists.txt index bcff35f20..be862d51c 100644 --- a/lib/tsan/dd/CMakeLists.txt +++ b/lib/tsan/dd/CMakeLists.txt @@ -26,6 +26,7 @@ if(CAN_TARGET_x86_64 AND UNIX AND NOT APPLE AND NOT ANDROID) $<TARGET_OBJECTS:RTInterception.${arch}> $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> + $<TARGET_OBJECTS:RTSancovLibc.${arch}> CFLAGS ${DD_CFLAGS} PARENT_TARGET dd) @@ -40,6 +41,7 @@ if(CAN_TARGET_x86_64 AND UNIX AND NOT APPLE AND NOT ANDROID) $<TARGET_OBJECTS:RTInterception.${arch}> $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> + $<TARGET_OBJECTS:RTSancovLibc.${arch}> LINK_LIBS ${DD_LINKLIBS} PARENT_TARGET dd) endif() diff --git a/lib/tsan/tests/CMakeLists.txt b/lib/tsan/tests/CMakeLists.txt index 87e14174a..d972f54de 100644 --- a/lib/tsan/tests/CMakeLists.txt +++ b/lib/tsan/tests/CMakeLists.txt @@ -69,6 +69,7 @@ macro(add_tsan_unittest testname) $<TARGET_OBJECTS:RTInterception.osx> $<TARGET_OBJECTS:RTSanitizerCommon.osx> $<TARGET_OBJECTS:RTSanitizerCommonLibc.osx> + $<TARGET_OBJECTS:RTSancovLibc.osx> $<TARGET_OBJECTS:RTUbsan.osx>) set(TSAN_TEST_RUNTIME RTTsanTest.${testname}.${arch}) add_library(${TSAN_TEST_RUNTIME} STATIC ${TSAN_TEST_RUNTIME_OBJECTS}) diff --git a/lib/ubsan/CMakeLists.txt b/lib/ubsan/CMakeLists.txt index 9bb36edc7..e3ad52eb9 100644 --- a/lib/ubsan/CMakeLists.txt +++ b/lib/ubsan/CMakeLists.txt @@ -67,6 +67,7 @@ if(APPLE) RTUbsan_standalone RTSanitizerCommon RTSanitizerCommonLibc + RTSancovLibc LINK_FLAGS ${WEAK_SYMBOL_LINK_FLAGS} PARENT_TARGET ubsan) endif() @@ -102,6 +103,7 @@ else() ARCHS ${UBSAN_SUPPORTED_ARCH} OBJECT_LIBS RTSanitizerCommon RTSanitizerCommonLibc + RTSancovLibc RTUbsan RTUbsan_standalone CFLAGS ${UBSAN_CFLAGS} diff --git a/lib/xray/CMakeLists.txt b/lib/xray/CMakeLists.txt index 9c7cf6ce3..fc1e0909f 100644 --- a/lib/xray/CMakeLists.txt +++ b/lib/xray/CMakeLists.txt @@ -51,7 +51,8 @@ add_compiler_rt_component(xray-fdr) set(XRAY_COMMON_RUNTIME_OBJECT_LIBS RTSanitizerCommon - RTSanitizerCommonLibc) + RTSanitizerCommonLibc + RTSancovLibc) foreach(arch ${XRAY_SUPPORTED_ARCH}) if(CAN_TARGET_${arch}) |