Enable use of TSAN

The -DWITH_TSAN option enables the ThreadSanitizer if libtsan is
installed.
This commit is contained in:
Markus Mäkelä
2018-07-25 23:20:35 +03:00
parent 00c107e051
commit 7e857e36eb
3 changed files with 20 additions and 2 deletions

View File

@ -43,6 +43,7 @@ find_package(Avro)
find_package(GSSAPI)
find_package(SQLite)
find_package(ASAN)
find_package(TSAN)
# Build PCRE2 so we always know the version
# Read BuildPCRE2 for details about how to add pcre2 as a dependency to a target
@ -159,6 +160,9 @@ endif()
if (WITH_ASAN AND ASAN_FOUND)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
elseif (WITH_TSAN AND TSAN_FOUND)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=thread")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread")
endif()
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${DEBUG_FLAGS} -DSS_DEBUG -DLOG_ASSERT")

View File

@ -7,8 +7,8 @@
find_library(ASAN_LIBRARIES NAMES libasan.so.0 libasan.so.1 libasan.so.2 libasan.so.3 libasan.so.4)
if (ASAN_LIBRARIES)
message(STATUS "Found AdressSanitizer libraries: ${ASAN_LIBRARIES}")
message(STATUS "Found AddressSanitizer libraries: ${ASAN_LIBRARIES}")
set(ASAN_FOUND TRUE CACHE INTERNAL "")
else()
message(STATUS "Could not find AdressSanitizer")
message(STATUS "Could not find AddressSanitizer")
endif()

14
cmake/FindTSAN.cmake Normal file
View File

@ -0,0 +1,14 @@
# Find ThreadSanitizer libraries
#
# The following variables are set:
# TSAN_FOUND - If ThreadSanitizer was found
# TSAN_LIBRARIES - Path to the libasan library
find_library(TSAN_LIBRARIES NAMES libtsan.so.0 libtsan.so.1 libtsan.so.2 libtsan.so.3 libtsan.so.4)
if (TSAN_LIBRARIES)
message(STATUS "Found ThreadSanitizer libraries: ${TSAN_LIBRARIES}")
set(TSAN_FOUND TRUE CACHE INTERNAL "")
else()
message(STATUS "Could not find AdressSanitizer")
endif()