Hi,
running tests for Asan-bootstrapped GCC, I've noted that tests for
libiberty and libbacktrace fail to link with sanitized libbacktrace.a
and libiberty.a because of missing -static-libasan -fsanitize=address
linker flags. This patch adds necessary flags to provide a linkage of
these tests in bootstrap-asan case.
This patch was approved by DJ
(https://gcc.gnu.org/ml/gcc-patches/2015-01/msg02460.html) for stage1,
but this was long time ago...
I've checked that regression tests pass with disabled bootstrap, normal
bootstrap (stage1, stage3) and Asan-bootstrap (stage 1, stage3) on
x86_64-unknown-linux-gnu again, no issues occurred.
Is this ok for trunk now?
--Maxim
libiberty/ChangeLog:
2015-04-14 Max Ostapenko <m.ostape...@partner.samsung.com>
* testsuite/Makefile.in (LIBCFLAGS): Add LDFLAGS.
ChangeLog:
2015-04-14 Max Ostapenko <m.ostape...@partner.samsung.com>
* Makefile.tpl (EXTRA_HOST_EXPORTS): New variables.
(EXTRA_BOOTSTRAP_FLAGS): Likewise.
(check-[+module+]): Add EXTRA_HOST_EXPORTS and EXTRA_BOOTSTRAP_FLAGS.
* Makefile.in: Regenerate.
diff --git a/Makefile.tpl b/Makefile.tpl
index f7c7e38..0e0fc04 100644
--- a/Makefile.tpl
+++ b/Makefile.tpl
@@ -637,6 +637,14 @@ POSTSTAGE1_FLAGS_TO_PASS = \
$(LTO_FLAGS_TO_PASS) \
"`echo 'ADAFLAGS=$(BOOT_ADAFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`"
+@if gcc-bootstrap
+EXTRA_HOST_EXPORTS = if [ $(current_stage) != stage1 ]; then \
+ $(POSTSTAGE1_HOST_EXPORTS) \
+ fi ;
+
+EXTRA_BOOTSTRAP_FLAGS = CC="$$CC" CXX="$$CXX" LDFLAGS="$$LDFLAGS"
+@endif gcc-bootstrap
+
# Flags to pass down to makes which are built with the target environment.
# The double $ decreases the length of the command line; those variables
# are set in BASE_FLAGS_TO_PASS, and the sub-make will expand them. The
@@ -1189,18 +1197,22 @@ check-[+module+]:
@if [ '$(host)' = '$(target)' ] ; then \
r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- $(HOST_EXPORTS) \
+ $(HOST_EXPORTS) [+ IF bootstrap +]$(EXTRA_HOST_EXPORTS)[+
+ ENDIF bootstrap +] \
(cd $(HOST_SUBDIR)/[+module+] && \
- $(MAKE) $(FLAGS_TO_PASS) [+extra_make_flags+] check); \
+ $(MAKE) $(FLAGS_TO_PASS) [+extra_make_flags+][+
+ IF bootstrap +] $(EXTRA_BOOTSTRAP_FLAGS)[+ ENDIF bootstrap +] check)
fi
[+ ELSE check +]
check-[+module+]:
@: $(MAKE); $(unstage)
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- $(HOST_EXPORTS) \
+ $(HOST_EXPORTS) [+ IF bootstrap +]$(EXTRA_HOST_EXPORTS)[+
+ ENDIF bootstrap +] \
(cd $(HOST_SUBDIR)/[+module+] && \
- $(MAKE) $(FLAGS_TO_PASS) [+extra_make_flags+] check)
+ $(MAKE) $(FLAGS_TO_PASS) [+extra_make_flags+][+
+ IF bootstrap +] $(EXTRA_BOOTSTRAP_FLAGS)[+ ENDIF bootstrap +] check)
[+ ENDIF no_check +]
@endif [+module+]
diff --git a/libiberty/testsuite/Makefile.in b/libiberty/testsuite/Makefile.in
index 4324a8f..8f5f7b5 100644
--- a/libiberty/testsuite/Makefile.in
+++ b/libiberty/testsuite/Makefile.in
@@ -33,7 +33,7 @@ SHELL = @SHELL@
CC = @CC@
CFLAGS = @CFLAGS@
-LIBCFLAGS = $(CFLAGS)
+LIBCFLAGS = $(CFLAGS) $(LDFLAGS)
# Multilib support variables.
MULTISRCTOP =