On Tue, Nov 25, 2003 at 08:35:19PM +0100, Juergen Kreileder wrote: > Daniel Jacobowitz <[EMAIL PROTECTED]> 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

