diff options
author | Simon McVittie <smcv@collabora.com> | 2018-08-29 20:06:00 +0100 |
---|---|---|
committer | Simon McVittie <smcv@collabora.com> | 2018-12-11 12:47:22 +0000 |
commit | 0c9f9432770596ec77a83f7a302c46108a651979 (patch) | |
tree | 2bee6d85809e5386abb7ae8656c98701a8ec04e6 | |
parent | 64f94d3f5bc4e1229abc5a9ec7ae089b3b259719 (diff) | |
download | dbus-0c9f9432770596ec77a83f7a302c46108a651979.tar.gz |
build: Add a way to set CFLAGS for AddressSanitizer etc.
We don't want to set these globally via the normal CFLAGS, because if
we did, AddressSanitizer would catch test-segfault deliberately
segfaulting, and "helpfully" turn it into exit status 1, which in turn
makes our test fail because it asserts that the segfault is reported
as a segfault.
A typical use with gcc as compiler, on a reasonably recent Debian,
would be:
./configure SANITIZE_CFLAGS="-fsanitize=address -fsanitize=undefined -fPIE -pie"
Signed-off-by: Simon McVittie <smcv@collabora.com>
-rw-r--r-- | bus/Makefile.am | 1 | ||||
-rw-r--r-- | configure.ac | 3 | ||||
-rw-r--r-- | dbus/Makefile.am | 1 | ||||
-rw-r--r-- | test/Makefile.am | 7 | ||||
-rw-r--r-- | test/name-test/Makefile.am | 1 | ||||
-rw-r--r-- | tools/Makefile.am | 1 |
6 files changed, 14 insertions, 0 deletions
diff --git a/bus/Makefile.am b/bus/Makefile.am index d7408049..fe0f92b1 100644 --- a/bus/Makefile.am +++ b/bus/Makefile.am @@ -38,6 +38,7 @@ AM_LDFLAGS = @R_DYNAMIC_LDFLAG@ AM_CFLAGS = \ $(CODE_COVERAGE_CFLAGS) \ + $(SANITIZE_CFLAGS) \ $(NULL) EFENCE= diff --git a/configure.ac b/configure.ac index 5723ae48..4636062a 100644 --- a/configure.ac +++ b/configure.ac @@ -1224,6 +1224,9 @@ CFLAGS="$EXTRA_CFLAGS $CFLAGS" CXXFLAGS="$EXTRA_CXXFLAGS $CXXFLAGS" LDFLAGS="$EXTRA_LDFLAGS $LDFLAGS" +AC_ARG_VAR([SANITIZE_CFLAGS], + [Extra CFLAGS for modules that are instrumented for error-checking]) + case $host_os in solaris*) # Solaris' C library apparently needs these runes to be threadsafe... diff --git a/dbus/Makefile.am b/dbus/Makefile.am index c003b399..f9561bef 100644 --- a/dbus/Makefile.am +++ b/dbus/Makefile.am @@ -17,6 +17,7 @@ AM_CPPFLAGS = \ AM_CFLAGS = \ $(CODE_COVERAGE_CFLAGS) \ + $(SANITIZE_CFLAGS) \ $(NULL) if HAVE_VISIBILITY diff --git a/test/Makefile.am b/test/Makefile.am index 2f649837..b8df15ac 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -23,6 +23,7 @@ AM_LDFLAGS = @R_DYNAMIC_LDFLAG@ AM_CFLAGS = \ $(CODE_COVERAGE_CFLAGS) \ + $(SANITIZE_CFLAGS) \ $(NULL) noinst_LTLIBRARIES = libdbus-testutils.la @@ -91,6 +92,12 @@ endif !DBUS_ENABLE_EMBEDDED_TESTS noinst_PROGRAMS= $(TEST_BINARIES) +# This helper is meant to crash, so if we're compiling the rest with +# AddressSanitizer, we need to stop it from catching the SIGSEGV and +# turning it into _exit(1); so don't give it SANITIZE_CFLAGS. +# CODE_COVERAGE_CFLAGS are fairly pointless here, too. +test_segfault_CFLAGS = + test_service_LDADD = libdbus-testutils.la test_names_LDADD = libdbus-testutils.la ## break_loader_LDADD = $(top_builddir)/dbus/libdbus-internal.la diff --git a/test/name-test/Makefile.am b/test/name-test/Makefile.am index ea63e579..280eb8ea 100644 --- a/test/name-test/Makefile.am +++ b/test/name-test/Makefile.am @@ -7,6 +7,7 @@ AM_CPPFLAGS = \ AM_CFLAGS = \ $(CODE_COVERAGE_CFLAGS) \ + $(SANITIZE_CFLAGS) \ $(NULL) # if assertions are enabled, improve backtraces diff --git a/tools/Makefile.am b/tools/Makefile.am index f3450030..85dcba64 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -8,6 +8,7 @@ AM_CPPFLAGS = \ AM_CFLAGS = \ $(CODE_COVERAGE_CFLAGS) \ + $(SANITIZE_CFLAGS) \ $(NULL) # if assertions are enabled, improve backtraces |