[git commit prelink] Add Makefile support for DSBT ELF.
BerndSchmidtbernds_cb1 at t-online.de
BerndSchmidtbernds_cb1 at t-online.de
Wed Apr 6 13:19:48 UTC 2011
commit: http://git.uclibc.org/uClibc/commit/?id=f4eebb6146ea3f6917481d5d24f3d99e97236399
branch: http://git.uclibc.org/uClibc/commit/?id=refs/heads/prelink
This adds support for a new binary format, DSBT ELF, to the Makefiles.
Every shared library is assigned a DSBT index, and the link.so macro is
adjusted to ensure the correct linker argument is passed.
Configuration and ldso support will follow in separate commits.
Signed-off-by: Bernd Schmidt <bernds at codesourcery.com>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop at gmail.com>
---
Makerules | 3 ++-
ldso/ldso/Makefile.in | 1 +
ldso/libdl/Makefile.in | 1 +
libc/Makefile.in | 1 +
libcrypt/Makefile.in | 1 +
libm/Makefile.in | 1 +
libnsl/Makefile.in | 1 +
libpthread/linuxthreads.old/Makefile.in | 1 +
libresolv/Makefile.in | 1 +
librt/Makefile.in | 1 +
libutil/Makefile.in | 1 +
11 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/Makerules b/Makerules
index 84eeaea..3a4d566 100644
--- a/Makerules
+++ b/Makerules
@@ -297,7 +297,8 @@ cmd_hcompile.o = $(HOSTCC) $(filter-out $(PHONY),$<) $(DEPS-$(notdir $@)) -c -o
define link.so
$(Q)$(RM) $@ $@.$(2) $(dir $@)$(1)
@$(disp_ld)
- $(Q)$(CC) $(LDFLAGS-$(notdir $@)) -Wl,-soname=$(notdir $@).$(2) \
+ $(Q)$(CC) $(LDFLAGS-$(notdir $@)) $(LDFLAGS-y-$(@F)) \
+ -Wl,-soname=$(notdir $@).$(2) \
$(NOSTDLIB_CFLAGS) -o $(dir $@)$(1) $(START_FILE-$(notdir $@)) \
-Wl,--whole-archive $(firstword $^) -Wl,--no-whole-archive \
$(LIBS-$(notdir $@)) $(LIBGCC) $(END_FILE-$(notdir $@))
diff --git a/ldso/ldso/Makefile.in b/ldso/ldso/Makefile.in
index e71ae15..7a9ffa6 100644
--- a/ldso/ldso/Makefile.in
+++ b/ldso/ldso/Makefile.in
@@ -30,6 +30,7 @@ CFLAGS-ldso/ldso/$(TARGET_ARCH)/ := $(CFLAGS-ldso)
CFLAGS-ldso.c := -DLDSO_ELFINTERP=\"$(TARGET_ARCH)/elfinterp.c\" $(CFLAGS-ldso)
+LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-$(UCLIBC_LDSO_NAME).so := -Wl,--dsbt-index=1
ifneq ($(SUPPORT_LD_DEBUG),y)
LDFLAGS-$(UCLIBC_LDSO_NAME).so := $(LDFLAGS)
else
diff --git a/ldso/libdl/Makefile.in b/ldso/libdl/Makefile.in
index 39db7a8..152185e 100644
--- a/ldso/libdl/Makefile.in
+++ b/ldso/libdl/Makefile.in
@@ -19,6 +19,7 @@ endif
CFLAGS-libdl.c := -DLDSO_ELFINTERP=\"$(TARGET_ARCH)/elfinterp.c\"
+LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-libdl.so := -Wl,--dsbt-index=3
LDFLAGS-libdl.so := $(LDFLAGS) -Wl,-fini,dl_cleanup
LIBS-libdl.so := $(LIBS) $(ldso)
diff --git a/libc/Makefile.in b/libc/Makefile.in
index dd666ac..3b6a17b 100644
--- a/libc/Makefile.in
+++ b/libc/Makefile.in
@@ -15,6 +15,7 @@ ifneq ($(VERSION_SCRIPT),)
VERSION_SCRIPT := -Wl,--version-script,$(VERSION_SCRIPT)
endif
+LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-libc.so := -Wl,--dsbt-index=2
LDFLAGS-libc.so := $(LDFLAGS) $(VERSION_SCRIPT) -Wl,-init,$(SYMBOL_PREFIX)__uClibc_init
ifeq ($(UCLIBC_HAS_STDIO_FUTEXES),y)
CFLAGS += -D__USE_STDIO_FUTEXES__
diff --git a/libcrypt/Makefile.in b/libcrypt/Makefile.in
index 3cbf9d0..1d1fb55 100644
--- a/libcrypt/Makefile.in
+++ b/libcrypt/Makefile.in
@@ -9,6 +9,7 @@ subdirs += libcrypt
CFLAGS-libcrypt := -DNOT_IN_libc -DIS_IN_libcrypt $(SSP_ALL_CFLAGS)
+LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-libcrypt.so := -Wl,--dsbt-index=4
LDFLAGS-libcrypt.so := $(LDFLAGS)
LIBS-libcrypt.so := $(LIBS)
diff --git a/libm/Makefile.in b/libm/Makefile.in
index 384365c..2235933 100644
--- a/libm/Makefile.in
+++ b/libm/Makefile.in
@@ -25,6 +25,7 @@ subdirs += libm
CFLAGS-libm := -DNOT_IN_libc -DIS_IN_libm $(SSP_ALL_CFLAGS)
CFLAGS-libm += -D_IEEE_LIBM
+LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-libm.so := -Wl,--dsbt-index=5
LDFLAGS-libm.so := $(LDFLAGS)
LIBS-libm.so := $(LIBS)
diff --git a/libnsl/Makefile.in b/libnsl/Makefile.in
index 3aa05a0..333c490 100644
--- a/libnsl/Makefile.in
+++ b/libnsl/Makefile.in
@@ -9,6 +9,7 @@ subdirs += libnsl
CFLAGS-libnsl := -DNOT_IN_libc -DIS_IN_libnsl $(SSP_ALL_CFLAGS)
+LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-libnsl.so := -Wl,--dsbt-index=6
LDFLAGS-libnsl.so := $(LDFLAGS) $(call link.asneeded,-lc)
LIBS-libnsl.so := $(LIBS)
diff --git a/libpthread/linuxthreads.old/Makefile.in b/libpthread/linuxthreads.old/Makefile.in
index d2e29c7..f599b16 100644
--- a/libpthread/linuxthreads.old/Makefile.in
+++ b/libpthread/linuxthreads.old/Makefile.in
@@ -18,6 +18,7 @@ LDFLAGS-libpthread.so := $(LDFLAGS_NOSTRIP) -Wl,-z,defs
else
LDFLAGS-libpthread.so := $(LDFLAGS)
endif
+LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-libpthread.so := -Wl,--dsbt-index=10
LIBS-libpthread.so := $(LIBS) $(ldso)
diff --git a/libresolv/Makefile.in b/libresolv/Makefile.in
index fb71b42..fa3c341 100644
--- a/libresolv/Makefile.in
+++ b/libresolv/Makefile.in
@@ -9,6 +9,7 @@ subdirs += libresolv
CFLAGS-libresolv := -DNOT_IN_libc -DIS_IN_libresolv $(SSP_ALL_CFLAGS)
+LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-libresolv.so := -Wl,--dsbt-index=7
LDFLAGS-libresolv.so := $(LDFLAGS) $(call link.asneeded,-lc)
LIBS-libresolv.so := $(LIBS)
diff --git a/librt/Makefile.in b/librt/Makefile.in
index 6eb508c..7d295d4 100644
--- a/librt/Makefile.in
+++ b/librt/Makefile.in
@@ -9,6 +9,7 @@ subdirs += librt
CFLAGS-librt := -DNOT_IN_libc -DIS_IN_librt $(SSP_ALL_CFLAGS)
+LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-librt.so := -Wl,--dsbt-index=9
LDFLAGS-librt.so := $(LDFLAGS)
LIBS-librt.so := $(LIBS)
ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
diff --git a/libutil/Makefile.in b/libutil/Makefile.in
index 057d02d..f904fc7 100644
--- a/libutil/Makefile.in
+++ b/libutil/Makefile.in
@@ -9,6 +9,7 @@ subdirs += libutil
CFLAGS-libutil := -DNOT_IN_libc -DIS_IN_libutil $(SSP_ALL_CFLAGS)
+LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-libutil.so := -Wl,--dsbt-index=8
LDFLAGS-libutil.so := $(LDFLAGS)
LIBS-libutil.so := $(LIBS)
--
1.7.3.4
More information about the uClibc-cvs
mailing list