summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Williams <nico@cryptonector.com>2015-10-27 19:01:06 -0500
committerNicolas Williams <nico@cryptonector.com>2015-10-27 20:06:21 -0500
commit8f115e9eed8e71816b9f3a86e0d3aabd47a750d9 (patch)
treef4631abbc843cc80b1cea12a8d126ac6d5e3b52d
parente17ccf229723d776c0d49341665256b855c70bda (diff)
Add address sanitizer (ASAN) support (fix #1002)
-rw-r--r--Makefile.am5
-rw-r--r--configure.ac8
2 files changed, 12 insertions, 1 deletions
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])