This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
PATCH: Fix -z combreloc
- To: GNU C Library <libc-alpha at sourceware dot cygnus dot com>
- Subject: PATCH: Fix -z combreloc
- From: "H . J . Lu" <hjl at lucon dot org>
- Date: Tue, 28 Aug 2001 11:44:10 -0700
If ld supports `-z combreloc' and `-z combreloc' is not enabled by
default, ld.so won't run. Here is a patch.
H.J.
---
2001-08-28 H.J. Lu <hjl@gnu.org>
* Makeconfig (combreloc-LDFLAGS): New.
* config.make.in (have-z-combreloc): New.
* configure.in: Substitute libc_cv_z_combreloc.
* configure: Rebuild.
* elf/Makefile ($(objpfx)ld.so): Add $(combreloc-LDFLAGS).
--- libc/Makeconfig.combreloc Fri Jul 13 12:53:11 2001
+++ libc/Makeconfig Tue Aug 28 11:22:33 2001
@@ -380,6 +380,10 @@ ifndef static-start-installed-name
static-start-installed-name = $(start-installed-name)
endif
+ifeq (yesyesyes,$(build-shared)$(elf)$(have-z-combreloc))
+combreloc-LDFLAGS = -Wl,-z,combreloc
+endif
+
# Command for linking programs with the C library.
ifndef +link
+link = $(CC) -nostdlib -nostartfiles -o $@ \
--- libc/config.make.in.combreloc Mon Jul 9 15:02:21 2001
+++ libc/config.make.in Tue Aug 28 10:27:23 2001
@@ -40,6 +40,7 @@ have-protected = @libc_cv_asm_protected_
have-z-nodelete = @libc_cv_z_nodelete@
have-z-nodlopen = @libc_cv_z_nodlopen@
have-z-initfirst = @libc_cv_z_initfirst@
+have-z-combreloc = @libc_cv_z_combreloc@
have-initfini = @libc_cv_have_initfini@
have-Bgroup = @libc_cv_Bgroup@
need-nopic-initfini = @nopic_initfini@
--- libc/configure.in.combreloc Mon Aug 27 11:42:37 2001
+++ libc/configure.in Tue Aug 28 10:26:49 2001
@@ -1087,6 +1087,7 @@ dnl look for a section named .rel.dyn.
AC_DEFINE(HAVE_Z_COMBRELOC)
fi
fi
+AC_SUBST(libc_cv_z_combreloc)
if test $elf != yes; then
AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
--- libc/elf/Makefile.combreloc Fri Jul 27 11:01:30 2001
+++ libc/elf/Makefile Tue Aug 28 11:18:21 2001
@@ -166,7 +166,8 @@ $(rtld-ldscript): $(rtld-ldscript-in) $(
endif
$(objpfx)ld.so: $(objpfx)librtld.os $(rtld-ldscript) $(ld-map)
- $(LINK.o) -nostdlib -nostartfiles -shared -o $@ $(LDFLAGS-rtld) \
+ $(LINK.o) -nostdlib -nostartfiles -shared -o $@ \
+ $(combreloc-LDFLAGS) $(LDFLAGS-rtld) \
$(filter-out $(rtld-ldscript) $(map-file),$^) \
$(load-map-file) -Wl,-soname=$(rtld-installed-name)