summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCharles-François Natali <cf.natali@gmail.com>2014-05-08 22:08:51 (GMT)
committerCharles-François Natali <cf.natali@gmail.com>2014-05-08 22:08:51 (GMT)
commitd30b022b5ea1b73595b330d9d4aba36aa0ebdd29 (patch)
tree6243159ef1ee2dfae02e38b7658af7418d933e21
parentef8f7792f3763b21b452c0859660b24473e7a345 (diff)
downloadcpython-d30b022b5ea1b73595b330d9d4aba36aa0ebdd29.zip
cpython-d30b022b5ea1b73595b330d9d4aba36aa0ebdd29.tar.gz
cpython-d30b022b5ea1b73595b330d9d4aba36aa0ebdd29.tar.bz2
Issue #21037: Add a build option to enable AddressSanitizer support.
-rw-r--r--Misc/NEWS2
-rwxr-xr-xconfigure20
-rw-r--r--configure.ac11
3 files changed, 33 insertions, 0 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index 9e9f2c2..22dfc10 100644
--- 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
diff --git a/configure b/configure
index c46fc26..fbd4c24 100755
--- 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; }
diff --git a/configure.ac b/configure.ac
index b2f519f..a6f613a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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