Enable use of TSAN
The -DWITH_TSAN option enables the ThreadSanitizer if libtsan is installed.
This commit is contained in:
		@ -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")
 | 
			
		||||
 | 
			
		||||
@ -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
									
								
							
							
						
						
									
										14
									
								
								cmake/FindTSAN.cmake
									
									
									
									
									
										Normal 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()
 | 
			
		||||
		Reference in New Issue
	
	Block a user