diff options
-rwxr-xr-x | SConstruct | 35 | ||||
-rwxr-xr-x | src/SConscript | 38 |
2 files changed, 35 insertions, 38 deletions
diff --git a/SConstruct b/SConstruct index 095b58be4..36db2162c 100755 --- a/SConstruct +++ b/SConstruct @@ -473,6 +473,25 @@ if main['GCC']: if compareVersions(gcc_version, "5.0") > 0: main.Append(CCFLAGS=['-Wno-error=suggest-override']) + # The address sanitizer is available for gcc >= 4.8 + if GetOption('with_asan'): + if GetOption('with_ubsan') and \ + compareVersions(env['GCC_VERSION'], '4.9') >= 0: + env.Append(CCFLAGS=['-fsanitize=address,undefined', + '-fno-omit-frame-pointer'], + LINKFLAGS='-fsanitize=address,undefined') + else: + env.Append(CCFLAGS=['-fsanitize=address', + '-fno-omit-frame-pointer'], + LINKFLAGS='-fsanitize=address') + # Only gcc >= 4.9 supports UBSan, so check both the version + # and the command-line option before adding the compiler and + # linker flags. + elif GetOption('with_ubsan') and \ + compareVersions(env['GCC_VERSION'], '4.9') >= 0: + env.Append(CCFLAGS='-fsanitize=undefined') + env.Append(LINKFLAGS='-fsanitize=undefined') + elif main['CLANG']: # Check for a supported version of clang, >= 3.1 is needed to # support similar features as gcc 4.8. See @@ -513,6 +532,22 @@ elif main['CLANG']: if sys.platform.startswith('freebsd'): main.Append(LIBS=['thr']) + # We require clang >= 3.1, so there is no need to check any + # versions here. + if GetOption('with_ubsan'): + if GetOption('with_asan'): + env.Append(CCFLAGS=['-fsanitize=address,undefined', + '-fno-omit-frame-pointer'], + LINKFLAGS='-fsanitize=address,undefined') + else: + env.Append(CCFLAGS='-fsanitize=undefined', + LINKFLAGS='-fsanitize=undefined') + + elif GetOption('with_asan'): + env.Append(CCFLAGS=['-fsanitize=address', + '-fno-omit-frame-pointer'], + LINKFLAGS='-fsanitize=address') + else: print termcap.Yellow + termcap.Bold + 'Error' + termcap.Normal, print "Don't know what compiler options to use for your compiler." diff --git a/src/SConscript b/src/SConscript index f9560afbc..a40955b68 100755 --- a/src/SConscript +++ b/src/SConscript @@ -952,44 +952,6 @@ def makeEnv(env, label, objsfx, strip=False, disable_partial=False, **kwargs): new_env.Label = label new_env.Append(**kwargs) - if env['GCC']: - # The address sanitizer is available for gcc >= 4.8 - if GetOption('with_asan'): - if GetOption('with_ubsan') and \ - compareVersions(env['GCC_VERSION'], '4.9') >= 0: - new_env.Append(CCFLAGS=['-fsanitize=address,undefined', - '-fno-omit-frame-pointer']) - new_env.Append(LINKFLAGS='-fsanitize=address,undefined') - else: - new_env.Append(CCFLAGS=['-fsanitize=address', - '-fno-omit-frame-pointer']) - new_env.Append(LINKFLAGS='-fsanitize=address') - # Only gcc >= 4.9 supports UBSan, so check both the version - # and the command-line option before adding the compiler and - # linker flags. - elif GetOption('with_ubsan') and \ - compareVersions(env['GCC_VERSION'], '4.9') >= 0: - new_env.Append(CCFLAGS='-fsanitize=undefined') - new_env.Append(LINKFLAGS='-fsanitize=undefined') - - - if env['CLANG']: - # We require clang >= 3.1, so there is no need to check any - # versions here. - if GetOption('with_ubsan'): - if GetOption('with_asan'): - new_env.Append(CCFLAGS=['-fsanitize=address,undefined', - '-fno-omit-frame-pointer']) - new_env.Append(LINKFLAGS='-fsanitize=address,undefined') - else: - new_env.Append(CCFLAGS='-fsanitize=undefined') - new_env.Append(LINKFLAGS='-fsanitize=undefined') - - elif GetOption('with_asan'): - new_env.Append(CCFLAGS=['-fsanitize=address', - '-fno-omit-frame-pointer']) - 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). |