]> granicus.if.org Git - jq/commitdiff
Add address sanitizer (ASAN) support (fix #1002) 1004/head
authorNicolas Williams <nico@cryptonector.com>
Wed, 28 Oct 2015 00:01:06 +0000 (19:01 -0500)
committerNicolas Williams <nico@cryptonector.com>
Wed, 28 Oct 2015 01:06:21 +0000 (20:06 -0500)
Makefile.am
configure.ac

index 01a7ed12b0a8b865c4b2f0613683d7711412b0fc..327dc6d0a8cadb3f89cca139d2687a542870ed94 100644 (file)
@@ -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
 
index 93a2fb6e4b393e6ce03a5f6875603b391bc24c68..9e2c8cf8e56f69cc8831e2f80d10e0bf37a156b2 100644 (file)
@@ -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])