From: Pierre Ossman Date: Tue, 29 Sep 2015 07:40:20 +0000 (+0200) Subject: Add address sanitizer switch X-Git-Tag: v1.5.90~25 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=86640e8f91ff01ef3b409371deb7e2efe7d43593;p=tigervnc.git Add address sanitizer switch Useful for debugging memory leaks and access violations. It is not available on Windows though, and there is some problem compiling ObjectiveC++ with it turned on. --- diff --git a/CMakeLists.txt b/CMakeLists.txt index a46679b8..08ef25cc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -76,6 +76,12 @@ IF(CMAKE_BUILD_TYPE MATCHES Debug) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror") ENDIF() +option(ENABLE_ASAN "Enable address sanitizer support" OFF) +if(ENABLE_ASAN AND NOT WIN32 AND NOT APPLE) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address") +endif() + if(NOT DEFINED BUILD_WINVNC) set(BUILD_WINVNC 1) endif() diff --git a/cmake/StaticBuild.cmake b/cmake/StaticBuild.cmake index cc03487b..25c10777 100644 --- a/cmake/StaticBuild.cmake +++ b/cmake/StaticBuild.cmake @@ -109,6 +109,9 @@ if(BUILD_STATIC) # This ensures that we don't depend on libstdc++ or libgcc_s set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -nodefaultlibs") set(STATIC_BASE_LIBRARIES "-Wl,-Bstatic -lstdc++ -Wl,-Bdynamic") + if(ENABLE_ASAN AND NOT WIN32 AND NOT APPLE) + set(STATIC_BASE_LIBRARIES "${STATIC_BASE_LIBRARIES} -Wl,-Bstatic -lasan -Wl,-Bdynamic -ldl -lm -lpthread") + endif() if(WIN32) set(STATIC_BASE_LIBRARIES "${STATIC_BASE_LIBRARIES} -lmingw32 -lgcc_eh -lgcc -lmoldname -lmingwex -lmsvcrt") set(STATIC_BASE_LIBRARIES "${STATIC_BASE_LIBRARIES} -luser32 -lkernel32 -ladvapi32 -lshell32")