From: Charles-François Natali Date: Thu, 8 May 2014 22:08:51 +0000 (+0100) Subject: Issue #21037: Add a build option to enable AddressSanitizer support. X-Git-Tag: v3.5.0a1~1717 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d30b022b5ea1b73595b330d9d4aba36aa0ebdd29;p=thirdparty%2FPython%2Fcpython.git Issue #21037: Add a build option to enable AddressSanitizer support. --- diff --git a/Misc/NEWS b/Misc/NEWS index 9e9f2c23f68c..22dfc1055245 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 c46fc267bebf..fbd4c24a8c6f 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 b2f519f5fa74..a6f613ae2599 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