From 55532a6ae663cc0f20bdf62d6c5d06db766b55f3 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sat, 9 Jan 2016 09:09:51 +0100 Subject: 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. --- Rules.mak | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'Rules.mak') 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) -- cgit v1.2.3