|
Description
|
ldd(1) provided unused dependency processing under -u and -U. However, if
these arguments are used when relocations errors occur, false unused errors
can occur.
For example:
% ldd -Ur libxml2.so.2
ld.so.1: lddstub: fatal: relocation error: R_AMD64_32: file libxml2.so.2: \
symbol realloc: value 0xfffffd7ffed073b0 does not fit
ld.so.1: lddstub: fatal: relocation error: R_AMD64_32: file libxml2.so.2: \
symbol free: value 0xfffffd7ffed07e60 does not fit
unreferenced object=/usr/lib/64/libz.so.1; unused dependency of libxml2.so.2
unused object=/usr/lib/64/libz.so.1
unreferenced object=/lib/64/libm.so.2; unused dependency of libxml2.so.2
unreferenced object=/lib/64/libnsl.so.1; unused dependency of libxml2.so.2
The procssing is carried out by ld.so.1, and references that are bound to
definitions result in data structures being established between the objects
to provide for symbol lookup etc. As a failure is occuring, ld.so.1 isn't
establishing these data structures - ld.so.1 is assuming the objects will
be torn down and unloaded. The unused processing triggers off these data
structures too.
ld.so.1 needs to create these data structures when no errors occur and when being
executed under ldd.
|