Add AddressSanitizer (ASAN) build option

--enable-asan for autotools
-D ENABLE_ASAN:BOOL=TRUE for CMake

Need Clang/LLVM >= 3.1 or GCC >= 4.9

More information about ASAN https://code.google.com/p/address-sanitizer/wiki/AddressSanitizer

Change-Id: I833d4216d9508b8f7550ebc1dff6326734bdb53a
Reviewed-on: https://code.wireshark.org/review/1727
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
This commit is contained in:
Alexis La Goutte 2014-05-22 21:44:06 +02:00
parent b35688760a
commit 0dd7714d4d
3 changed files with 30 additions and 0 deletions

View File

@ -354,6 +354,17 @@ else()
)
endif()
set(WIRESHARK_ASAN_FLAGS
# With Clang >= 3.5 Leak detection is enable by default
# and no yet all leak is fixed...
# use ASAN_OPTIONS=detect_leaks=0 to disable detect_leaks
-fsanitize=address
)
if(ENABLE_ASAN)
set(WIRESHARK_COMMON_FLAGS ${WIRESHARK_COMMON_FLAGS} ${WIRESHARK_ASAN_FLAGS})
endif()
if(ENABLE_EXTRA_COMPILER_WARNINGS) # This overrides -Werror
set(WIRESHARK_COMMON_FLAGS ${WIRESHARK_COMMON_FLAGS} ${WIRESHARK_EXTRA_COMPILER_COMMON_FLAGS})
set(WIRESHARK_C_ONLY_FLAGS ${WIRESHARK_C_ONLY_FLAGS} ${WIRESHARK_EXTRA_COMPILER_C_ONLY_FLAGS})

View File

@ -20,6 +20,7 @@ option(AUTOGEN_pidl "Autogenerate pidl dissectors" OFF)
option(DISABLE_WERROR "Do not treat warnings as errors" OFF)
option(ENABLE_EXTRA_COMPILER_WARNINGS "Do additional compiler warnings (disables -Werror)" OFF)
option(ENABLE_CODE_ANALYSIS "Enable the compiler's static analyzer if possible" OFF)
option(ENABLE_ASAN "Enable AddressSanitizer (ASAN) for debugging (May be slow down)" OFF)
#
# Leave GTK2 the default on Windows, looks better than GTK3

View File

@ -922,6 +922,24 @@ AC_ARG_ENABLE(extra-compiler-warnings,
fi
],)
# Try to add ASAN address analyze.
# Only needed for analyse
#
AC_ARG_ENABLE(asan,
AC_HELP_STRING( [--enable-asan],
[Enable AddressSanitizer (ASAN) for debugging (May be slow down)@<:@default=no@:>@]),
[
#
# With Clang >= 3.5 Leak detection is enable by default
# and no yet all leak is fixed...
# use ASAN_OPTIONS=detect_leaks=0 to disable detect_leaks
#
AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fsanitize=address)
],)
#
# The following are for C and C++
#