Re: Library search path
On Tue, Nov 25, 2003 at 08:35:19PM +0100, Juergen Kreileder wrote:
> 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
No. /lib/ld-linux.so.2 _does_ support TLS. It'll work fine, I've
tested it. "/lib/tls" is a red herring.
However if, as seems likely, the NV "TLS" libraries are dependent on
NPTL then we need to do something different for them.
> > 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
That's why I said you could add the tag yourself. Hmm, might be tricky
to do.
> > 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).
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
Reply to: