diff --git a/Makefile.am b/Makefile.am index 01a7ed12..327dc6d0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -54,11 +54,16 @@ include_HEADERS = src/jv.h src/jq.h ### Running tests under Valgrind +if ENABLE_ASAN +AM_CFLAGS += -fsanitize=address +NO_VALGRIND = 1 +else if ENABLE_VALGRIND NO_VALGRIND = else NO_VALGRIND = 1 endif +endif ### Code coverage with gcov diff --git a/configure.ac b/configure.ac index 93a2fb6e..9e2c8cf8 100644 --- a/configure.ac +++ b/configure.ac @@ -89,6 +89,11 @@ dnl fix leaks. AC_ARG_ENABLE([valgrind], AC_HELP_STRING([--disable-valgrind], [do not run tests under Valgrind])) +dnl Running tests with Valgrind is slow; address sanitizer (ASAN) is +dnl faster. +AC_ARG_ENABLE([asan], + AC_HELP_STRING([--enable-asan], [enable address sanitizer])) + dnl Code coverage AC_ARG_ENABLE([gcov], AC_HELP_STRING([--enable-gcov], [enable gcov code coverage tool])) @@ -117,7 +122,7 @@ AS_IF([test "x$enable_docs" != "xno"],[ ***************************************************************** * Ruby dependencies for building jq documentation not found. * * You can still build, install and hack on jq, but the manpage * -* will not be rebuilt and some of the tests won't run. * +* will not be rebuilt and some of the tests will not run. * * See docs/README.md for how to install the docs dependencies. * ***************************************************************** EOF @@ -130,6 +135,7 @@ EOF ]) AM_CONDITIONAL([ENABLE_VALGRIND], [test "x$enable_valgrind" != xno]) +AM_CONDITIONAL([ENABLE_ASAN], [test "x$enable_asan" = xyes]) AM_CONDITIONAL([ENABLE_GCOV], [test "x$enable_gcov" = xyes]) AM_CONDITIONAL([ENABLE_DOCS], [test "x$enable_docs" != xno]) AM_CONDITIONAL([ENABLE_ERROR_INJECTION], [test "x$enable_error_injection" = xyes])