summaryrefslogtreecommitdiffstats
path: root/libc
diff options
context:
space:
mode:
authorCarmelo Amoroso <carmelo.amoroso@st.com>2008-03-16 08:51:34 +0000
committerCarmelo Amoroso <carmelo.amoroso@st.com>2008-03-16 08:51:34 +0000
commite772b90e7e8190112a987f7c18c19a33766acfd0 (patch)
tree4d1400da48cfc116476ffe69bd76d6f782759c4c /libc
parent35201f6b3f772e03ce456d20605ba99f21e6a04a (diff)
downloaduClibc-alpine-e772b90e7e8190112a987f7c18c19a33766acfd0.tar.bz2
uClibc-alpine-e772b90e7e8190112a987f7c18c19a33766acfd0.tar.xz
Merge nptl branch tree with trunk.
Step 6: fix Makefiles to use $(VERSION) and the compiler-driver for the link stage Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
Diffstat (limited to 'libc')
-rw-r--r--libc/Makefile.in16
1 files changed, 11 insertions, 5 deletions
diff --git a/libc/Makefile.in b/libc/Makefile.in
index 12658c31f..cd6e316ae 100644
--- a/libc/Makefile.in
+++ b/libc/Makefile.in
@@ -12,17 +12,17 @@ libc_OUT := $(top_builddir)libc
# libc, and if so, include it when linking.
VERSION_SCRIPT := $(wildcard $(libc_DIR)/sysdeps/linux/$(TARGET_ARCH)/libc.map)
ifneq ($(VERSION_SCRIPT),)
-VERSION_SCRIPT := --version-script $(VERSION_SCRIPT)
+VERSION_SCRIPT := -Wl,--version-script,$(VERSION_SCRIPT)
endif
-LDFLAGS-libc.so := $(LDFLAGS) $(VERSION_SCRIPT) -init __uClibc_init
+LDFLAGS-libc.so := $(LDFLAGS) $(VERSION_SCRIPT) -Wl,-init,$(SYMBOL_PREFIX)__uClibc_init
ifeq ($(UCLIBC_HAS_STDIO_FUTEXES),y)
CFLAGS += -D__USE_STDIO_FUTEXES__
endif
LIBS-libc.so := $(interp) $(ldso) $(top_builddir)lib/$(NONSHARED_LIBNAME)
# we have SHARED_MAJORNAME=libc.so.$(MAJOR_VERSION) defined in Rules.mak
-libc_FULL_NAME := libuClibc-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so
+libc_FULL_NAME := libuClibc-$(VERSION).so
# this comes first, so duplicate removal works correctly
include $(libc_DIR)/sysdeps/Makefile.in
@@ -56,6 +56,8 @@ lib-gdb-y += $(top_builddir)lib/libc.gdb
lib-so-y += $(libc)
objclean-y += libc_clean
+OUTPUT_FORMAT = $(CC) $(CFLAGS) -Wl,--verbose 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/OUTPUT_FORMAT ( \1 )/p'
+
ifeq ($(DOMULTI),n)
$(libc:.$(MAJOR_VERSION)=): $(libc_OUT)/libc_so.a $(LIBS-libc.so)
$(call link.so,$(libc_FULL_NAME),$(MAJOR_VERSION))
@@ -66,6 +68,7 @@ $(libc:.$(MAJOR_VERSION)=): $(libc_OUT)/libc.oS $(libc-nomulti-y:.o=.oS) | $(LIB
endif
$(Q)$(RM) $@
$(Q)cp $(top_srcdir)extra/scripts/format.lds $@
+ $(Q)echo "$(shell $(OUTPUT_FORMAT))" >> $@
ifeq ($(COMPAT_ATEXIT),y)
$(Q)echo "GROUP ( $(NONSHARED_LIBNAME) $(SHARED_MAJORNAME) $(ASNEEDED) )" >> $@
else
@@ -92,8 +95,11 @@ $(top_builddir)lib/libc.a: $(libc-a-y) | $(crt-y)
$(do_strip)
$(do_ar)
-$(top_builddir)lib/libc.gdb: $(top_builddir)lib/libc.a $(LINK_FLAT_CRTS)
- $(call link-flat.so,$(@:.gdb=),$(SHARED_FLAT_ID))
+# We use libc_so.a so that we can compile the shared library with special
+# flags - i.e. -mleaf-id-shared-library. The static libc.a needs to be
+# compiled without it.
+$(top_builddir)lib/libc.gdb: $(libc_OUT)/libc_so.a $(LINK_FLAT_CRTS)
+ $(call link-flat.so,$(@:.gdb=),$(UCLIBC_SHARED_FLAT_ID))
libc_clean:
$(RM) $(libc_OUT)/*.{o,os,oS,a}