summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xSConstruct35
-rwxr-xr-xsrc/SConscript38
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).