FWIW here is what I wound up using locally to work around the issue. It mostly reverts back to the original logic (write out lib/libc.so sans libubacktrace reference in libc/Makefile.in, then hack the final installed version to reference libubacktrace.so). But it does respect the HARDWIRED_ABSPATH setting now, and introduces slightly less cruft in Makefile.in.
-- 8< -- From: Kevin Cernekee <cerne...@gmail.com> Commit 01c125c3bd8f949f8e5711e09152859eecd1b004 (buildsys: clean up libubacktrace linker script handling) caused a regression seen when bootstrapping a new compiler: the libc.so linker script referenced libubacktrace.so.0, which had not yet been installed. Therefore, it is necessary to partially revert the change, and go back to the old method of appending $(UBACKTRACE_ASNEEDED) to the installed libc.so script instead of the copy under lib/ in the source tree. Signed-off-by: Kevin Cernekee <cerne...@gmail.com> --- Makefile.in | 2 +- Rules.mak | 11 +++++++++-- libc/Makefile.in | 1 - 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Makefile.in b/Makefile.in index 9d18cfe..612cc9b 100644 --- a/Makefile.in +++ b/Makefile.in @@ -345,13 +345,13 @@ ifeq ($(HARDWIRED_ABSPATH),y) $(SED) -e 's:$(NONSHARED_LIBNAME):$(DEVEL_PREFIX)$(MULTILIB_DIR)/$(NONSHARED_LIBNAME):' \ -e 's:$(SHARED_LIBNAME):$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(SHARED_LIBNAME):' \ -e 's:$(UCLIBC_LDSO):$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(UCLIBC_LDSO):' \ - -e 's:$(UBACKTRACE_DSO):$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(UBACKTRACE_DSO):' \ $(top_builddir)lib/libc.so > $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so; \ $(SED) -i -e 's://:/:g' $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so; \ fi else -$(INSTALL) -m 755 $(top_builddir)lib/libc.so $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/ endif + echo "$(UBACKTRACE_ASNEEDED)" >> $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so ifeq ($(UCLIBC_HAS_THREADS),y) ifneq ($(LINUXTHREADS_OLD),y) ifeq ($(HARDWIRED_ABSPATH),y) diff --git a/Rules.mak b/Rules.mak index 320b952..58968ae 100644 --- a/Rules.mak +++ b/Rules.mak @@ -578,9 +578,16 @@ export ASNEEDED:=$(shell $(LD) --help 2>/dev/null | grep -q -- --as-needed && ec # Only used in installed libc.so linker script ifeq ($(UCLIBC_HAS_BACKTRACE),y) + +ifeq ($(HARDWIRED_ABSPATH),y) +UBACKTRACE_FULL_NAME := $(subst //,/,$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(UBACKTRACE_DSO)) +else +UBACKTRACE_FULL_NAME := $(UBACKTRACE_DSO) +endif + export UBACKTRACE_ASNEEDED:=$(shell $(LD) --help 2>/dev/null | grep -q -- --as-needed && \ - echo "GROUP ( AS_NEEDED ( $(UBACKTRACE_DSO) ) )" || \ - echo "GROUP ( $(UBACKTRACE_DSO) )") + echo "GROUP ( AS_NEEDED ( $(UBACKTRACE_FULL_NAME) ) )" || \ + echo "GROUP ( $(UBACKTRACE_FULL_NAME) )") else export UBACKTRACE_ASNEEDED:="" endif diff --git a/libc/Makefile.in b/libc/Makefile.in index d8ea7bd..3b6a17b 100644 --- a/libc/Makefile.in +++ b/libc/Makefile.in @@ -74,7 +74,6 @@ ifeq ($(COMPAT_ATEXIT),y) else $(Q)echo "GROUP ( $(SHARED_LIBNAME) $(NONSHARED_LIBNAME) $(ASNEEDED) )" >> $@.tmp endif - $(Q)echo "$(UBACKTRACE_ASNEEDED)" >> $@.tmp $(Q)mv $@.tmp $@ $(libc_OUT)/libc_so.a: $(libc-so-y) | $(top_builddir)lib/libc.a $(top_builddir)lib/$(NONSHARED_LIBNAME) -- 1.7.8.3 _______________________________________________ uClibc mailing list uClibc@uclibc.org http://lists.busybox.net/mailman/listinfo/uclibc