[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: