diff -r b318499f676c -r 76150c590b6e src/SConscript --- a/src/SConscript Wed Feb 10 04:08:27 2016 -0500 +++ b/src/SConscript Mon Feb 15 08:59:49 2016 +0000 @@ -1083,17 +1083,27 @@ new_env.Append(CCFLAGS='-fsanitize=undefined') new_env.Append(LINKFLAGS='-fsanitize=undefined') + # The address sanitizer is available for gcc >= 4.8 + if GetOption('with_asan') and \ + compareVersions(env['GCC_VERSION'], '4.8') >= 0: + new_env.Append(CCFLAGS='-fsanitize=address') + new_env.Append(LINKFLAGS='-fsanitize=address') + if env['CLANG']: swig_env.Append(CCFLAGS=['-Wno-sometimes-uninitialized', '-Wno-deprecated-register', '-Wno-tautological-compare']) - # All supported clang versions have support for UBSan, so if - # asked to use it, append the compiler and linker flags. + # We require clang >= 3.1, so there is no need to check any + # versions here. if GetOption('with_ubsan'): new_env.Append(CCFLAGS='-fsanitize=undefined') new_env.Append(LINKFLAGS='-fsanitize=undefined') + if GetOption('with_asan'): + new_env.Append(CCFLAGS='-fsanitize=address') + new_env.Append(LINKFLAGS='-fsanitize=address') + werror_env = new_env.Clone() # Treat warnings as errors but white list some warnings that we # want to allow (e.g., deprecation warnings). diff -r b318499f676c -r 76150c590b6e SConstruct --- a/SConstruct Wed Feb 10 04:08:27 2016 -0500 +++ b/SConstruct Mon Feb 15 08:59:49 2016 +0000 @@ -194,6 +194,8 @@ help='Disable linking against tcmalloc') AddLocalOption('--with-ubsan', dest='with_ubsan', action='store_true', help='Build with Undefined Behavior Sanitizer if available') +AddLocalOption('--with-asan', dest='with_asan', action='store_true', + help='Build with Address Sanitizer if available') termcap = get_termcap(GetOption('use_colors')) @@ -209,6 +211,7 @@ 'PYTHONPATH', 'RANLIB', 'SWIG', 'TERM' ]) use_prefixes = [ + "ASAN_", # address sanitizer symbolizer path and settings "CCACHE_", # ccache (caching compiler wrapper) configuration "CCC_", # clang static analyzer configuration "DISTCC_", # distcc (distributed compiler wrapper) configuration