Browse Source

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.
Waldemar Brodkorb 8 years ago
parent
commit
55532a6ae6
1 changed files with 4 additions and 1 deletions
  1. 4 1
      Rules.mak

+ 4 - 1
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)