summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarel Zak2017-11-23 14:59:05 +0100
committerKarel Zak2017-11-23 14:59:05 +0100
commitb97cc9a8299ad84bf75093dc390e36eb6ff77761 (patch)
treea8300730960d2378efadd3b867e73dd174d45e17
parenttests: rename --memcheck to --memcheck-valgrind (diff)
downloadkernel-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.ac11
-rw-r--r--tests/functions.sh12
-rwxr-xr-xtests/run.sh2
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"