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

Bug#60869: ld-linux.so problem breaks ldd and dpkg_shlibdeps on pure libc6



Package: libc6
Version: 2.1.3-7
Severity: important

On architectures which do not receive an `ldd' from ld.so (ARM at least,
anything else without libc5 support), ldd is a shell script that invokes
ld-linux.so with the --list option.

In the current release, when a shared library can not be located the
program exits with an error condition instead of just printing a 
'not found' line.  This breaks dpkg-shlibdeps and makes it impossible
to build many packages unless they are already installed.

For example, the current broken behavior...
	
$ ldd debian/usr/bin/python
../python-1.5.2/debian/tmp/usr/bin/python: error in loading shared 
libraries: libpython1.5.so.0.0: cannot open shared object file: 
No such file or directory

... the fixed behavior ...
$ ldd debian/tmp/usr/bin/python
        libpython1.5.so.0.0 => not found
        libdl.so.2 => /lib/libdl.so.2 (0x40007000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x40012000)
        libm.so.6 => /lib/libm.so.6 (0x4002d000)
        libc.so.6 => /lib/libc.so.6 (0x4005b000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x2aaaa000)

The problem can be fixed in elf/rtld.c, line 780...
  _dl_map_object_deps (_dl_loaded, preloads, npreloads, mode == trace, 0);
... by changing it to pass the ?? flag on both list and trace...
  _dl_map_object_deps (_dl_loaded, preloads, npreloads, 
                       (mode == list || mode == trace), 0);

-- 
                                     Jim Studt, President
                                     The Federated Software Group, Inc.


Reply to: