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(GSSAPI)
 | 
				
			||||||
find_package(SQLite)
 | 
					find_package(SQLite)
 | 
				
			||||||
find_package(ASAN)
 | 
					find_package(ASAN)
 | 
				
			||||||
 | 
					find_package(TSAN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Build PCRE2 so we always know the version
 | 
					# Build PCRE2 so we always know the version
 | 
				
			||||||
# Read BuildPCRE2 for details about how to add pcre2 as a dependency to a target
 | 
					# 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)
 | 
					if (WITH_ASAN AND ASAN_FOUND)
 | 
				
			||||||
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address")
 | 
					  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address")
 | 
				
			||||||
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_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()
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${DEBUG_FLAGS} -DSS_DEBUG -DLOG_ASSERT")
 | 
					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)
 | 
					find_library(ASAN_LIBRARIES NAMES libasan.so.0 libasan.so.1 libasan.so.2 libasan.so.3 libasan.so.4)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (ASAN_LIBRARIES)
 | 
					if (ASAN_LIBRARIES)
 | 
				
			||||||
  message(STATUS "Found AdressSanitizer libraries: ${ASAN_LIBRARIES}")
 | 
					  message(STATUS "Found AddressSanitizer libraries: ${ASAN_LIBRARIES}")
 | 
				
			||||||
  set(ASAN_FOUND TRUE CACHE INTERNAL "")
 | 
					  set(ASAN_FOUND TRUE CACHE INTERNAL "")
 | 
				
			||||||
else()
 | 
					else()
 | 
				
			||||||
  message(STATUS "Could not find AdressSanitizer")
 | 
					  message(STATUS "Could not find AddressSanitizer")
 | 
				
			||||||
endif()
 | 
					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