From 578761a27723e6563d6cd356d6efa981e5b18b83 Mon Sep 17 00:00:00 2001 From: Brian Cain Date: Sat, 23 Dec 2017 22:17:34 -0600 Subject: [PATCH] Add ASan, TSan support --- CMakeLists.txt | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f095adfb..d08951f0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,9 +7,11 @@ set (CPACK_PACKAGE_VERSION_PATCH "0") set (RAIBLOCKS_GUI OFF CACHE BOOL "") set (RAIBLOCKS_TEST OFF CACHE BOOL "") - +option(RAIBLOCKS_ASAN_INT "Enable ASan+UBSan+Integer overflow" OFF) +option(RAIBLOCKS_ASAN "Enable ASan+UBSan" OFF) option(RAIBLOCKS_SIMD_OPTIMIZATIONS "Enable CPU-specific SIMD optimizations (SSE/AVX or NEON, e.g.)" ON) + if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE) endif(NOT CMAKE_BUILD_TYPE) @@ -19,6 +21,14 @@ if (WIN32) set (BLAKE2_IMPLEMENTATION "blake2/blake2b.c") else (WIN32) set (PLATFORM_COMPILE_FLAGS "-DBOOST_SPIRIT_THREADSAFE -Werror=switch -fPIC") + if (RAIBLOCKS_ASAN) + set (PLATFORM_COMPILE_FLAGS "${PLATFORM_COMPILE_FLAGS} -fsanitize=address,undefined -DED25519_NO_INLINE_ASM") + elseif (RAIBLOCKS_ASAN_INT) + set (PLATFORM_COMPILE_FLAGS "${PLATFORM_COMPILE_FLAGS} -fsanitize=address,undefined,integer -DED25519_NO_INLINE_ASM") + elseif (RAIBLOCKS_TSAN) + set (PLATFORM_COMPILE_FLAGS "${PLATFORM_COMPILE_FLAGS} -fsanitize=thread -DED25519_NO_INLINE_ASM") + endif() + IF (CMAKE_SYSTEM_PROCESSOR MATCHES "^(i.86|x86(_64)?)$") if (RAIBLOCKS_SIMD_OPTIMIZATIONS) set (PLATFORM_COMPILE_FLAGS "${PLATFORM_COMPILE_FLAGS} -msse4") @@ -62,6 +72,13 @@ elseif (WIN32) set (PLATFORM_LINK_FLAGS "") else () set (PLATFORM_LINK_FLAGS "-static-libgcc -static-libstdc++") + if (RAIBLOCKS_ASAN) + set (PLATFORM_LINK_FLAGS "${PLATFORM_LINK_FLAGS} -fsanitize=address,undefined") + elseif (RAIBLOCKS_ASAN_INT) + set (PLATFORM_LINK_FLAGS "${PLATFORM_LINK_FLAGS} -fsanitize=address,undefined,integer") + elseif (RAIBLOCKS_TSAN) + set (PLATFORM_LINK_FLAGS "${PLATFORM_LINK_FLAGS} -fsanitize=thread") + endif() endif (APPLE) if (RAIBLOCKS_GUI)