From: Karel Zak Date: Thu, 23 Nov 2017 13:59:05 +0000 (+0100) Subject: build-sys: add --enable-asan and --memcheck-asan for tests X-Git-Tag: v2.32-rc1~180 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b97cc9a8299ad84bf75093dc390e36eb6ff77761;p=thirdparty%2Futil-linux.git build-sys: add --enable-asan and --memcheck-asan for tests The command ./configure --enable-asan adds -fsanitize=address to the compiler command line. In the regression tests leaks detection is disabled by default. You have to use --memcheck-asan on test command line to enable. Signed-off-by: Karel Zak --- diff --git a/configure.ac b/configure.ac index eebe922591..28fd7760ce 100644 --- a/configure.ac +++ b/configure.ac @@ -141,6 +141,17 @@ AC_SUBST([BSD_WARN_CFLAGS]) UL_WARN_ADD([-Wno-unused-parameter], [NO_UNUSED_WARN_CFLAGS]) AC_SUBST([NO_UNUSED_WARN_CFLAGS]) + +AC_ARG_ENABLE([asan], + AS_HELP_STRING([--enable-asan], [compile with Address Sanitizer]), + [], [enable_asan=no] +) +AS_IF([test "x$enable_asan" == xyes], [ + UL_WARN_ADD([-fsanitize=address]) +]) + + + dnl libtool-2 LT_INIT diff --git a/tests/functions.sh b/tests/functions.sh index 7152a4e33a..5b9b61c05c 100644 --- a/tests/functions.sh +++ b/tests/functions.sh @@ -230,8 +230,9 @@ function ts_init_env { LANGUAGE="POSIX" LC_ALL="POSIX" CHARSET="UTF-8" + ASAN_OPTIONS="detect_leaks=0" - export LANG LANGUAGE LC_ALL CHARSET + export LANG LANGUAGE LC_ALL CHARSET ASAN_OPTIONS mydir=$(ts_canonicalize "$mydir") @@ -284,6 +285,10 @@ function ts_init_env { if [ "$tmp" == "yes" -a -f /usr/bin/valgrind ]; then TS_VALGRIND_CMD="/usr/bin/valgrind" fi + tmp=$( ts_has_option "memcheck-asan" "$*") + if [ "$tmp" == "yes" ]; then + TS_ENABLE_ASAN="yes" + fi BLKID_FILE="$TS_OUTDIR/${TS_TESTNAME}.blkidtab" @@ -384,6 +389,11 @@ function ts_run { $TS_VALGRIND_CMD --tool=memcheck --leak-check=full \ --leak-resolution=high --num-callers=20 \ --log-file="$TS_VGDUMP" "$@" + # + # ASAN mode + # + elif [ "$TS_ENABLE_ASAN" == "yes" ]; then + ASAN_OPTIONS='detect_leaks=1' "$@" # # Default mode diff --git a/tests/run.sh b/tests/run.sh index 1d4cc9d218..15e6c6baa8 100755 --- a/tests/run.sh +++ b/tests/run.sh @@ -46,6 +46,7 @@ while [ -n "$1" ]; do --force |\ --fake |\ --memcheck-valgrind |\ + --memcheck-asan |\ --show-diff |\ --verbose |\ --skip-loopdevs |\ @@ -82,6 +83,7 @@ while [ -n "$1" ]; do echo " --force execute demanding tests" echo " --fake do not run, setup tests only" echo " --memcheck-valgrind run with valgrind" + echo " --memcheck-asan enable ASAN (requires ./configure --enable-asan)" echo " --verbose verbose mode" echo " --show-diff show diff from failed tests" echo " --nonroot ignore test suite if user is root"