[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Library search path



Daniel Jacobowitz <dan@debian.org> writes:

> Oh-oh.  Here's the scoop.  The way we currently manage /lib/tls is
> by always searching it but tagging the NPTL libraries as requiring
> kernel 2.6.0; so it's always searched but they may be ignored.  The
> "tls" subdir means "things which require thread-local-storage",
> which does not correspond directly to NPTL; NPTL happens to require
> thread local storage _and_ a 2.6.0 kernel.

> TLS works on older kernels.

Yes, but Debian's libc builds with TLS support are tagged for 2.6:

% objdump -sj.note.ABI-tag /lib/tls/libc.so.6 

/lib/tls/libc.so.6:     file format elf32-i386

Contents of section .note.ABI-tag:
 0134 04000000 10000000 01000000 474e5500  ............GNU.
 0144 00000000 02000000 06000000 00000000  ................

% /sbin/ldconfig -p | grep libc.so
        libc.so.6 (libc6, hwcap: 0x8008000000008000, OS ABI: Linux 2.6.0) => /lib/tls/i686/cmov/libc.so.6
        libc.so.6 (libc6, hwcap: 0x8000000000000000, OS ABI: Linux 2.6.0) => /lib/tls/libc.so.6
        libc.so.6 (libc6, OS ABI: Linux 2.2.0) => /lib/libc.so.6


> If the TLS versions of the GLX libraries require NPTL, as seems
> likely,

[I don't know, I've got no TLS version of LinuxThreads handy.]

> then either they need to be tagged as requiring 2.6.0

This won't work in general, at least not with binary-only stuff.
RedHat supports TLS (and NPTL) with their 2.4 kernels, so vendors like
NVIDIA won't tag libraries for 2.6.

NVIDIA's TLS libs have no ABI tag at all:

% /sbin/ldconfig -p | egrep "GL.so|GLcore.so"
        libGLcore.so.1 (ELF, hwcap: 0x8000000000000000) => /usr/lib/tls/libGLcore.so.1
        libGLcore.so.1 (ELF) => /usr/lib/libGLcore.so.1
        libGL.so.1 (libc6, hwcap: 0x8000000000000000) => /usr/lib/tls/libGL.so.1
        libGL.so.1 (libc6) => /usr/lib/libGL.so.1
        libGL.so (libc6) => /usr/lib/libGL.so

> or we need to think of a better way to do this.  If you want to tag
> them as a short-term solution, compare the ".note.ABI-tag" section
> in /lib/libc.so.6 and /lib/tls/libc.so.6 (using objdump).


        Juergen

-- 
Juergen Kreileder, Blackdown Java-Linux Team
http://www.blackdown.org/java-linux/java2-status/



Reply to: