summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2016-01-09 09:09:51 +0100
committerWaldemar Brodkorb <wbx@openadk.org>2016-01-09 09:09:51 +0100
commit55532a6ae663cc0f20bdf62d6c5d06db766b55f3 (patch)
treee37c7df64cc9c54448864c77c0c6030b87c91ffa
parentfad6c6021feb6c2dd4a3bd5de1113994d4a9b04e (diff)
fix compile with DODEBUG=y
Since more projects using two-stage cross-compile process we cannot add libgcc_eh.a unconditionally. We must check if a real file is referenced by the cross-compiler. Toolchains with --disabel-shared build have a single libgcc.a containing all required symbols. Tested with a debug build for x86.
-rw-r--r--Rules.mak5
1 files changed, 4 insertions, 1 deletions
diff --git a/Rules.mak b/Rules.mak
index 38b4cc2b7..ab8847140 100644
--- a/Rules.mak
+++ b/Rules.mak
@@ -783,8 +783,11 @@ $(eval $(call cache-output-var,LIBGCC_A,$(CC) $(LIBGCC_CFLAGS) -print-libgcc-fil
$(eval $(call cache-output-var,LIBGCC_EH,$(CC) $(LIBGCC_CFLAGS) -print-file-name=libgcc_eh.a))
# with -O0 we (e.g. lockf) might end up with references to
# _Unwind_Resume, so pull in gcc_eh in this case..
+# with a --disable-shared toolchain, libgcc_eh.a and libgcc.a are combined
+# in libgcc.a, so check if the printed file exist, before adding to the commandline
+LIBGCC_EH_FILE := $(shell if [ -f $(LIBGCC_EH) ]; then echo $(LIBGCC_EH); fi)
LIBGCC_DIR := $(dir $(LIBGCC_A))
-LIBGCC := $(LIBGCC_A) $(if $(DODEBUG),$(LIBGCC_EH))
+LIBGCC := $(LIBGCC_A) $(if $(DODEBUG),$(LIBGCC_EH_FILE))
# moved from libpthread/linuxthreads
ifeq ($(UCLIBC_CTOR_DTOR),y)