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>
This commit is contained in:
Simon McVittie 2018-08-29 20:06:00 +01:00
parent 64f94d3f5b
commit 0c9f943277
6 changed files with 14 additions and 0 deletions

View file

@ -38,6 +38,7 @@ AM_LDFLAGS = @R_DYNAMIC_LDFLAG@
AM_CFLAGS = \
$(CODE_COVERAGE_CFLAGS) \
$(SANITIZE_CFLAGS) \
$(NULL)
EFENCE=

View file

@ -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...

View file

@ -17,6 +17,7 @@ AM_CPPFLAGS = \
AM_CFLAGS = \
$(CODE_COVERAGE_CFLAGS) \
$(SANITIZE_CFLAGS) \
$(NULL)
if HAVE_VISIBILITY

View file

@ -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

View file

@ -7,6 +7,7 @@ AM_CPPFLAGS = \
AM_CFLAGS = \
$(CODE_COVERAGE_CFLAGS) \
$(SANITIZE_CFLAGS) \
$(NULL)
# if assertions are enabled, improve backtraces

View file

@ -8,6 +8,7 @@ AM_CPPFLAGS = \
AM_CFLAGS = \
$(CODE_COVERAGE_CFLAGS) \
$(SANITIZE_CFLAGS) \
$(NULL)
# if assertions are enabled, improve backtraces