changeset a4d19e7cd26d in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=a4d19e7cd26d
description:
        scons: Enable building with the gcc/clang Address Sanitizer

        Allow the user to easily build gem5 with the Address Sanitizer, part
        of both gcc and clang these days.

diffstat:

 SConstruct     |   3 +++
 src/SConscript |  14 ++++++++++++--
 2 files changed, 15 insertions(+), 2 deletions(-)

diffs (53 lines):

diff -r bda2c39fd9fd -r a4d19e7cd26d SConstruct
--- a/SConstruct        Mon Feb 15 03:40:32 2016 -0500
+++ b/SConstruct        Wed Feb 17 03:56:20 2016 -0500
@@ -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
diff -r bda2c39fd9fd -r a4d19e7cd26d src/SConscript
--- a/src/SConscript    Mon Feb 15 03:40:32 2016 -0500
+++ b/src/SConscript    Wed Feb 17 03:56:20 2016 -0500
@@ -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).
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to