gold not finding symbols in ld-linux.so.2

Eric Frias efrias@syncad.com
Wed Jul 2 13:40:00 GMT 2008


Cary Coutant wrote:
> Gold deliberately avoids doing this; it searches only the libraries
> that are named explicitly on the link line.
Thanks for the explanation. 
> My guess
> is that this reference is coming from a static archive portion of
> libpthread (/usr/lib/libpthread_nonshared.a) -- is your
> /usr/lib/libpthread.so just a text file that contains something like
> the following?
>
>     GROUP ( /lib/libpthread.so.0 /usr/lib/libpthread_nonshared.a )
>   
As far as I can tell, libpthread is just a plain shared library.  "ld 
-verbose" reports finding /usr/lib/libpthread.so, which is a symlink to 
/lib/libpthread.so.0 which itself is a symlink to 
/lib/libpthread-0.9.so, which is a ELF 32-bit LSB shared object.  If I 
trace the DT_NEEDED attributes, they are exactly as you said:

$ readelf -d /lib/libpthread-0.9.so | grep NEEDED
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]
$ readelf -d /lib/libc.so.6 | grep NEEDED
 0x00000001 (NEEDED)                     Shared library: [ld-linux.so.2]

> I don't see _dl_cpuclock_offset in either libpthread or ld-linux.so on
> my system, so I can't check this out.
>   
$ readelf -sW /lib/libpthread-0.9.so | grep _dl_cpuclock_offset
   131: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND _dl_cpuclock_offset
$ readelf -sW /lib/ld-linux.so.2 | grep _dl_cpuclock_offset
    57: 000162f0     8 OBJECT  GLOBAL DEFAULT   11 
_dl_cpuclock_offset@@GLIBC_2.2.3
   335: 000162f0     8 OBJECT  GLOBAL DEFAULT   11 _dl_cpuclock_offset

This symbol is also undefined in librt.so.1.
> We've seen a similar problem with a reference from libpthread.so to
> ld-linux.so before, but haven't figured out what the best approach is
> yet.
Good to hear I'm not the only one.  Is there a recommended workaround?  
I haven't worked with linker scripts before... Is this as simple as 
creating a text file containing "GROUP ( /lib/libpthread-0.9.so 
/lib/ld-linux.so.2 )" and placing it somewhere before all of the real 
pthread libraries in my link path?

Eric



More information about the Binutils mailing list