From b97cc9a8299ad84bf75093dc390e36eb6ff77761 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Thu, 23 Nov 2017 14:59:05 +0100 Subject: [PATCH] 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 --- configure.ac | 11 +++++++++++ tests/functions.sh | 12 +++++++++++- tests/run.sh | 2 ++ 3 files changed, 24 insertions(+), 1 deletion(-) 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" -- 2.47.3