diff options
author | Kevin Cernekee <cernekee@gmail.com> | 2012-06-07 11:32:24 -0700 |
---|---|---|
committer | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2012-06-13 09:53:30 +0200 |
commit | 01c125c3bd8f949f8e5711e09152859eecd1b004 (patch) | |
tree | ca78a878a7c8f3fdaab2f8c5bd150d8ac496c3a7 | |
parent | 9af6ea0bc9db91e151fb7c34862c667b7acb584b (diff) |
buildsys: clean up libubacktrace linker script handling
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 <cernekee@gmail.com>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
-rw-r--r-- | Makefile.in | 7 | ||||
-rw-r--r-- | Rules.mak | 8 | ||||
-rw-r--r-- | libc/Makefile.in | 1 |
3 files changed, 7 insertions, 9 deletions
diff --git a/Makefile.in b/Makefile.in index fb118c0b9..8405f43ef 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) @@ -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 3b6a17b32..d8ea7bd99 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) |