From 86387f9ab1dd855470ec8d75780ad56d2b238bcd Mon Sep 17 00:00:00 2001 From: firewave Date: Sat, 21 Dec 2024 12:48:13 +0100 Subject: [PATCH] added CMake option `ANALYZE_TYPE` to use the TypeSanitizer --- cmake/dynamic_analyzer_options.cmake | 6 ++++++ cmake/options.cmake | 1 + cmake/printInfo.cmake | 1 + 3 files changed, 8 insertions(+) diff --git a/cmake/dynamic_analyzer_options.cmake b/cmake/dynamic_analyzer_options.cmake index 1d82fc2dbf46..45d4674c3a30 100644 --- a/cmake/dynamic_analyzer_options.cmake +++ b/cmake/dynamic_analyzer_options.cmake @@ -31,3 +31,9 @@ if(ANALYZE_UNDEFINED) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=nullability") endif() endif() + +if(ANALYZE_TYPE) + add_compile_options(-fsanitize=type) + + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=type") +endif() diff --git a/cmake/options.cmake b/cmake/options.cmake index dc68e03fe84d..cbb3007627d3 100644 --- a/cmake/options.cmake +++ b/cmake/options.cmake @@ -20,6 +20,7 @@ endif() option(ANALYZE_ADDRESS "Build with AddressSanitzer to detect memory error" OFF) option(ANALYZE_THREAD "Build with ThreadSanitizer to detect data races" OFF) option(ANALYZE_UNDEFINED "Build with UndefinedBehaviorSanitizer to detect undefined behavior" OFF) +option(ANALYZE_TYPE "Build with TypeSanitizer to detect aliasing issues" OFF) option(WARNINGS_ARE_ERRORS "Treat warnings as errors" OFF) if(WARNINGS_ARE_ERRORS) diff --git a/cmake/printInfo.cmake b/cmake/printInfo.cmake index 7feaf60f603b..3869629f7a3d 100644 --- a/cmake/printInfo.cmake +++ b/cmake/printInfo.cmake @@ -30,6 +30,7 @@ message(STATUS "ANALYZE_MEMORY = ${ANALYZE_MEMORY}") message(STATUS "ANALYZE_ADDRESS = ${ANALYZE_ADDRESS}") message(STATUS "ANALYZE_THREAD = ${ANALYZE_THREAD}") message(STATUS "ANALYZE_UNDEFINED = ${ANALYZE_UNDEFINED}") +message(STATUS "ANALYZE_TYPE = ${ANALYZE_TYPE}") message(STATUS) message(STATUS "WARNINGS_ARE_ERRORS = ${WARNINGS_ARE_ERRORS}") message(STATUS "EXTERNALS_AS_SYSTEM = ${EXTERNALS_AS_SYSTEM}")