Apparently the test binaries are built with minimal LDFLAGS, only adding dependency specific LDFLAGS as needed. However because some of the test binaries incorporate notmuch object files, it is necessary to use the same link flags as notmuch. For example user provided CFLAGS/CXXFLAGS/LDFLAGS with -fsanitize=undefined fails to build the test binaries if the flags differ.
--- With this I could do CFLAGS="-fsanitize=undefined -g" CXXFLAGS="-fsanitize=undefined -g" LDFLAGS="-fsanitize=undefined -g" ./configure to try ubsan with gcc 4.9. No problems found while running make test (and it did find an UB I planted to ensure I had it all set up right). --- test/Makefile.local | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test/Makefile.local b/test/Makefile.local index a2d58fc1a1b0..2331ceb15e33 100644 --- a/test/Makefile.local +++ b/test/Makefile.local @@ -13,10 +13,10 @@ smtp_dummy_srcs = \ smtp_dummy_modules = $(smtp_dummy_srcs:.c=.o) $(dir)/arg-test: $(dir)/arg-test.o command-line-arguments.o util/libutil.a - $(call quiet,CC) $^ -o $@ + $(call quiet,CC) $^ -o $@ $(LDFLAGS) $(dir)/hex-xcode: $(dir)/hex-xcode.o command-line-arguments.o util/libutil.a - $(call quiet,CC) $^ $(TALLOC_LDFLAGS) -o $@ + $(call quiet,CC) $^ -o $@ $(LDFLAGS) $(TALLOC_LDFLAGS) random_corpus_deps = $(dir)/random-corpus.o $(dir)/database-test.o \ notmuch-config.o command-line-arguments.o \ @@ -24,19 +24,19 @@ random_corpus_deps = $(dir)/random-corpus.o $(dir)/database-test.o \ parse-time-string/libparse-time-string.a $(dir)/random-corpus: $(random_corpus_deps) - $(call quiet,CXX) $(CFLAGS_FINAL) $^ -o $@ $(CONFIGURE_LDFLAGS) + $(call quiet,CXX) $^ -o $@ $(LDFLAGS) $(CONFIGURE_LDFLAGS) $(dir)/smtp-dummy: $(smtp_dummy_modules) - $(call quiet,CC) $^ -o $@ + $(call quiet,CC) $^ -o $@ $(LDFLAGS) $(dir)/symbol-test: $(dir)/symbol-test.o lib/$(LINKER_NAME) - $(call quiet,CXX) $^ -o $@ -Llib -lnotmuch $(XAPIAN_LDFLAGS) + $(call quiet,CXX) $^ -o $@ $(LDFLAGS) -Llib -lnotmuch $(XAPIAN_LDFLAGS) $(dir)/parse-time: $(dir)/parse-time.o parse-time-string/parse-time-string.o - $(call quiet,CC) $^ -o $@ + $(call quiet,CC) $^ -o $@ $(LDFLAGS) $(dir)/make-db-version: $(dir)/make-db-version.o - $(call quiet,CXX) $^ -o $@ $(XAPIAN_LDFLAGS) + $(call quiet,CXX) $^ -o $@ $(LDFLAGS) $(XAPIAN_LDFLAGS) .PHONY: test check -- 2.1.1