OpenSolaris

Printable Version Enter a New Search
Bug ID 6672394
Synopsis ldd(1) unused dependency processing is tricked by relocations errors
State 10-Fix Delivered (Fix available in build)
Category:Subcategory compiler:linker
Keywords
Responsible Engineer Rod Evans
Reported Against
Duplicate Of
Introduced In
Commit to Fix snv_86
Fixed In snv_86
Release Fixed solaris_nevada(snv_86)
Related Bugs
Submit Date 6-March-2008
Last Update Date 28-March-2008
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.
Work Around
N/A
Comments
N/A