diff options
author | Karel Zak | 2017-11-23 14:59:05 +0100 |
---|---|---|
committer | Karel Zak | 2017-11-23 14:59:05 +0100 |
commit | b97cc9a8299ad84bf75093dc390e36eb6ff77761 (patch) | |
tree | a8300730960d2378efadd3b867e73dd174d45e17 | |
parent | tests: rename --memcheck to --memcheck-valgrind (diff) | |
download | kernel-qcow2-util-linux-b97cc9a8299ad84bf75093dc390e36eb6ff77761.tar.gz kernel-qcow2-util-linux-b97cc9a8299ad84bf75093dc390e36eb6ff77761.tar.xz kernel-qcow2-util-linux-b97cc9a8299ad84bf75093dc390e36eb6ff77761.zip |
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 <kzak@redhat.com>
-rw-r--r-- | configure.ac | 11 | ||||
-rw-r--r-- | tests/functions.sh | 12 | ||||
-rwxr-xr-x | tests/run.sh | 2 |
3 files changed, 24 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac index eebe92259..28fd7760c 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 7152a4e33..5b9b61c05 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 1d4cc9d21..15e6c6baa 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" |