Bug#60869: ld-linux.so problem breaks ldd and dpkg_shlibdeps on pure libc6
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.