]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Issue #21037: Add a build option to enable AddressSanitizer support.
authorCharles-François Natali <cf.natali@gmail.com>
Thu, 8 May 2014 22:08:51 +0000 (23:08 +0100)
committerCharles-François Natali <cf.natali@gmail.com>
Thu, 8 May 2014 22:08:51 +0000 (23:08 +0100)
Misc/NEWS
configure
configure.ac

index 9e9f2c23f68cf2f8a692cdc02a7db45295072026..22dfc1055245b5085966336cd1d8b70f3b619289 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -347,6 +347,8 @@ IDLE
 Build
 -----
 
+- Issue #21037: Add a build option to enable AddressSanitizer support.
+
 - The Windows build now includes OpenSSL 1.0.1g
 
 - Issue #19962: The Windows build process now creates "python.bat" in the
index c46fc267bebf942418182d5f05b461f15dfc168f..fbd4c24a8c6f66eb134d5b642520f9c1cbe4f2af 100755 (executable)
--- a/configure
+++ b/configure
@@ -796,6 +796,7 @@ enable_shared
 enable_profiling
 with_pydebug
 with_hash_algorithm
+with_address_sanitizer
 with_libs
 with_system_expat
 with_system_ffi
@@ -1472,6 +1473,8 @@ Optional Packages:
   --with-pydebug          build with Py_DEBUG defined
   --with-hash-algorithm=[fnv|siphash24]
                           select hash algorithm
+  --with-address-sanitizer
+                          enable AddressSanitizer
   --with-libs='lib1 ...'  link against additional libs
   --with-system-expat     build pyexpat module using an installed expat
                           library
@@ -9154,6 +9157,23 @@ $as_echo "default" >&6; }
 fi
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-address-sanitizer" >&5
+$as_echo_n "checking for --with-address-sanitizer... " >&6; }
+
+# Check whether --with-address_sanitizer was given.
+if test "${with_address_sanitizer+set}" = set; then :
+  withval=$with_address_sanitizer;
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5
+$as_echo "$withval" >&6; }
+BASECFLAGS="-fsanitize=address -fno-omit-frame-pointer $BASECFLAGS"
+LDFLAGS="-fsanitize=address $LDFLAGS"
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
 # Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for t_open in -lnsl" >&5
 $as_echo_n "checking for t_open in -lnsl... " >&6; }
index b2f519f5fa742738dd25298cba35573e2832ee2c..a6f613ae259973575b19d0c159ba978bf1dc0ba2 100644 (file)
@@ -2314,6 +2314,17 @@ esac
 ],
 [AC_MSG_RESULT(default)])
 
+AC_MSG_CHECKING(for --with-address-sanitizer)
+AC_ARG_WITH(address_sanitizer,
+            AS_HELP_STRING([--with-address-sanitizer],
+                           [enable AddressSanitizer]),
+[
+AC_MSG_RESULT($withval)
+BASECFLAGS="-fsanitize=address -fno-omit-frame-pointer $BASECFLAGS"
+LDFLAGS="-fsanitize=address $LDFLAGS"
+],
+[AC_MSG_RESULT(no)])
+
 # Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
 AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
 AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets