How does LD find /lib/tls/i686/cmov?
I'm running Debian Lenny/Sid, BTW. More and more, I've been (forced to) download binary-only (no source code available) software for my linux system (for example, Flash and the Android SDK). The problem is, it's all failing lately with:
/lib/tls/i686/cmov/libc.so.6: version `GLIBC_2.4' not found
I look at /lib/tls/i686/cmov/libc.so.6 with objdump (it doesn't work with nm - (?)), and I see:
debian:tools$ objdump -p /lib/tls/i686/cmov/libc.so.6
13 0x00 0x0d696913 GLIBC_2.3
14 0x00 0x09691972 GLIBC_2.3.2
15 0x00 0x09691973 GLIBC_2.3.3
16 0x00 0x09691974 GLIBC_2.3.4
And no GLIBC_2.4.
So... I know I'm going to have to upgrade libc (although I've seen some pretty dire warnings against doing so). However, I'm still just trying to figure out where this is coming from!
debian:tools$ echo $LD_LIBRARY_PATH
not /lib/tls/i686/cmov - and /etc/ld.so.conf.d contains one file whose contents also don't include this mysterious /lib/tls/i686/cmov:
debian:ld.so.conf.d$ cat i486-linux-gnu.conf
# Multiarch support
Where the heck is "/lib/tls/i686/cmov" coming from? Is this just some "magic" inside ld.so? I don't see it documented anywhere - the man page says it should be looking in the following order:
Using the environment variable LD_LIBRARY_PATH
(LD_AOUT_LIBRARY_PATH for a.out programs). Except if the exe‐
cutable is a setuid/setgid binary, in which case it is ignored.
o From the cache file /etc/ld.so.cache which contains a compiled
list of candidate libraries previously found in the augmented
o In the default path /usr/lib, and then /lib.
I see a /lib/libc.so.6, but it's not a symlink to /lib/tls/i686/cmov...