On 07/06/2012 19.32, Kevin Cernekee wrote: > Currently, the installed libubacktrace linker script entry always uses > HARDWIRED_ABSPATH semantics, even if HARDWIRED_ABSPATH is disabled: > > $ grep GROUP $PREFIX/mipsel-linux-uclibc/sys-root/usr/lib/libc.so > GROUP ( libc.so.0 uclibc_nonshared.a AS_NEEDED ( ld-uClibc.so.0 ) ) > GROUP ( AS_NEEDED ( /lib/libubacktrace.so.0 ) ) > > This causes problems when building a non-sysroot toolchain. > > Move the AS_NEEDED insertion into libc/Makefile.in, and add a case to > the HARDWIRED_ABSPATH substitution command so libubacktrace is handled > the same way as the other libraries listed in the script. > > Signed-off-by: Kevin Cernekee <cerne...@gmail.com> > --- > Makefile.in | 7 +------ > Rules.mak | 8 +++++--- > libc/Makefile.in | 1 + > 3 files changed, 7 insertions(+), 9 deletions(-) > > diff --git a/Makefile.in b/Makefile.in > index fb118c0..8405f43 100644 > --- a/Makefile.in > +++ b/Makefile.in > @@ -341,18 +341,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 > -ifeq ($(UCLIBC_HAS_BACKTRACE),y) > -# Add the AS_NEEDED entry for libubacktrace.so > - if [ -f $(top_builddir)lib/libc.so -a -f > $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(SHARED_LIBNAME) ] ; then \ > - echo "GROUP ( $(UBACKTRACE_ASNEEDED) )" >> > $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so; \ > - fi > -endif > ifeq ($(UCLIBC_HAS_THREADS),y) > ifneq ($(LINUXTHREADS_OLD),y) > ifeq ($(HARDWIRED_ABSPATH),y) > diff --git a/Rules.mak b/Rules.mak > index 00e8481..320b952 100644 > --- a/Rules.mak > +++ b/Rules.mak > @@ -575,10 +575,12 @@ link.asneeded = $(if $(findstring > yy,$(CC_FLAG_ASNEEDED)$(CC_FLAG_NO_ASNEEDED)), > # Check for AS_NEEDED support in linker script (binutils>=2.16.1 has it) > ifndef ASNEEDED > export ASNEEDED:=$(shell $(LD) --help 2>/dev/null | grep -q -- --as-needed > && echo "AS_NEEDED ( $(UCLIBC_LDSO) )" || echo "$(UCLIBC_LDSO)") > -ifeq ($(UCLIBC_HAS_BACKTRACE),y) > + > # Only used in installed libc.so linker script > -UBACKTRACE_FULL_NAME := $(RUNTIME_PREFIX)lib/$(UBACKTRACE_DSO) > -export UBACKTRACE_ASNEEDED:=$(shell $(LD) --help 2>/dev/null | grep -q -- > --as-needed && echo "AS_NEEDED ( $(UBACKTRACE_FULL_NAME) )" || echo > "$(UBACKTRACE_FULL_NAME)") > +ifeq ($(UCLIBC_HAS_BACKTRACE),y) > +export UBACKTRACE_ASNEEDED:=$(shell $(LD) --help 2>/dev/null | grep -q -- > --as-needed && \ > + echo "GROUP ( AS_NEEDED ( $(UBACKTRACE_DSO) ) )" || \ > + echo "GROUP ( $(UBACKTRACE_DSO) )") > else > export UBACKTRACE_ASNEEDED:="" > endif > diff --git a/libc/Makefile.in b/libc/Makefile.in > index 3b6a17b..d8ea7bd 100644 > --- a/libc/Makefile.in > +++ b/libc/Makefile.in > @@ -74,6 +74,7 @@ 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)
Looks fine to me. Carmelo _______________________________________________ uClibc mailing list uClibc@uclibc.org http://lists.busybox.net/mailman/listinfo/uclibc