From: <er...@he...> - 2004-03-08 17:27:52
|
On Thu, Mar 04, 2004 at 05:31:20PM -0600, Jim Phillips wrote: > Hi, > > Can anyone explain (and tell me how to eliminate) this difference between > a normal Red Hat 9 machine: > > jim@belfast>ldd /bin/ls > libtermcap.so.2 => /lib/libtermcap.so.2 (0x40026000) > libc.so.6 => /lib/tls/libc.so.6 (0x42000000) > /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) > > and a Clustermatic 4 machine: > > jim@delhi>ldd /bin/ls > libtermcap.so.2 => /lib/libtermcap.so.2 (0x40027000) > libc.so.6 => /lib/libc.so.6 (0x4002b000) > /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) > > Why does Clustermatic ignore the /lib/tls library versions? This doesn't > seem to be a ldconfig or LD_LIBRARY_PATH option. For some reason, > /lib/libpthread.so.0 instead of /lib/tls/libpthread.so.0 seems hard wired. > Is there a way to change this? I'm not sure what "tls" is in this case but I'll assume it's got something to do with the new threading stuff in 2.6 and TLS means "thread local storage." Linux 2.6 has a bunch of new stuff in it to better support threading. In particular the futex stuff and it's also got some TLS stuff. Red Hat has back ported some of this stuff to Linux 2.4. The Clustermatic kernels do not have these features since they are stock kernel.org kernels plus patches for BProc and couple of other small things. While tinkering on Linux 2.6, I came across the TLS stuff. The C library uses this stuff for itself even when there isn't any threading involved. I presume the linker or the C library is detecting whether or not this feature is present and choosing a C library based on that. FWIW, that's my best guess... - Erik |