diff options
author | Gabe Black <gabeblack@google.com> | 2017-11-20 18:21:19 -0800 |
---|---|---|
committer | Gabe Black <gabeblack@google.com> | 2017-11-27 22:10:05 +0000 |
commit | 316ef3d9be995c3e625266386afeeb037a255180 (patch) | |
tree | 7f68d17ccf87fdd6192f27198c22cb5657511829 /SConstruct | |
parent | 9185479ca1ce2f3f227d4a11f17717409aefb2f4 (diff) | |
download | gem5-316ef3d9be995c3e625266386afeeb037a255180.tar.xz |
scons: Move some compiler flag setting code to the SConstruct.
These settings are invariant, so there's no reason to apply them over
and over again for the child environments used for various build
products.
Change-Id: Icb4053105e4f1c43008f2422ba30c7206b7ff365
Reviewed-on: https://gem5-review.googlesource.com/5981
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Diffstat (limited to 'SConstruct')
-rwxr-xr-x | SConstruct | 35 |
1 files changed, 35 insertions, 0 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." |