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

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: