From: Simon McVittie Date: Wed, 29 Aug 2018 19:06:00 +0000 (+0100) Subject: build: Add a way to set CFLAGS for AddressSanitizer etc. X-Git-Tag: dbus-1.13.10~40^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0c9f9432770596ec77a83f7a302c46108a651979;p=thirdparty%2Fdbus.git 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 --- diff --git a/bus/Makefile.am b/bus/Makefile.am index d74080493..fe0f92b16 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 5723ae48d..4636062ab 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 c003b3998..f9561bef1 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 2f649837b..b8df15acd 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 ea63e5792..280eb8ea0 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 f34500302..85dcba649 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