Bug#325226: libc6: Wrong dynamic linker on amd64.
Hello,
On 05-Aug-28 09:02, GOTO Masanori wrote:
> At Sat, 27 Aug 2005 00:07:17 +0200,
> Kurt Roeckx wrote:
> > It seems that on amd64, all binaries and libraries in the libc6
> > pacakge have a wrong dynamic linker in the binaries.
> >
> > ldd /lib/libc.so.6
> > /lib/ld-linux-x86-64.so.2 (0x0000002a95556000)
> > ldd /usr/bin/iconv
> > libc.so.6 => /lib/libc.so.6 (0x0000002a9566e000)
> > /lib/ld-linux-x86-64.so.2 (0x0000002a95556000)
The attached patch fixes this problem, i.e. it causes glibc to use
the correct linker path '/lib64/ld-linux-x86-64.so.2' for '/lib/libc.so.6',
'/usr/bin/iconv' and the other libc binaries and libraries on amd64.
The patch could be added to the existing debian/patches/amd64-lib.dpatch.
Regards
Andreas Jochens
diff -urN ../glibc-2.3.5/Makeconfig glibc-2.3.5/Makeconfig
--- ../glibc-2.3.5/Makeconfig 2005-08-30 17:48:26.000000000 +0000
+++ glibc-2.3.5/Makeconfig 2005-08-30 18:38:37.000000000 +0000
@@ -436,9 +436,13 @@
$(common-objpfx)libc% $(+postinit),$^) \
$(link-extra-libs-bounded) $(link-libc-bounded) $(+postctor) $(+postinit)
endif
+rtlddir=$(slibdir)
+ifneq ('',$(findstring $(slibdir)/$(config-machine)/,/lib/x86_64/ /lib/powerpc64/))
+ rtlddir=/lib64
+endif
ifndef config-LDFLAGS
ifeq (yesyes,$(build-shared)$(elf))
-config-LDFLAGS = -Wl,-dynamic-linker=$(slibdir)/$(rtld-installed-name)
+config-LDFLAGS = -Wl,-dynamic-linker=$(rtlddir)/$(rtld-installed-name)
endif
endif
ifndef link-libc
diff -urN ../glibc-2.3.5/dlfcn/Makefile glibc-2.3.5/dlfcn/Makefile
--- ../glibc-2.3.5/dlfcn/Makefile 2004-10-18 23:08:31.000000000 +0000
+++ glibc-2.3.5/dlfcn/Makefile 2005-08-30 18:38:37.000000000 +0000
@@ -65,7 +65,7 @@
include ../Rules
-LDFLAGS-dl.so = -Wl,-dynamic-linker,$(slibdir)/$(rtld-installed-name)
+LDFLAGS-dl.so = -Wl,-dynamic-linker,$(rtlddir)/$(rtld-installed-name)
test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(modules-names)))
$(test-modules): $(objpfx)%.so: $(objpfx)%.os $(common-objpfx)shlib.lds
diff -urN ../glibc-2.3.5/elf/Makefile glibc-2.3.5/elf/Makefile
--- ../glibc-2.3.5/elf/Makefile 2005-08-30 17:48:26.000000000 +0000
+++ glibc-2.3.5/elf/Makefile 2005-08-30 18:38:37.000000000 +0000
@@ -296,7 +296,7 @@
rm -f $@.lds
# interp.c exists just to get this string into the libraries.
-CFLAGS-interp.c = -D'RUNTIME_LINKER="$(slibdir)/$(rtld-installed-name)"' \
+CFLAGS-interp.c = -D'RUNTIME_LINKER="$(rtlddir)/$(rtld-installed-name)"' \
-DNOT_IN_libc=1
$(objpfx)interp.os: $(common-objpfx)config.make
Reply to: