On Sun, May 21, 2006 at 05:35:27PM +0200, Aurelien Jarno wrote:
> Because libstdc6++ is now provided by gcc-4.1, which need TLS support.
> Without it you get when trying to run a C++ program:
> 
> libstdc++.so.6: cannot handle TLS data
> 
> Please see bug #361904 and all the merged ones for more information.

I don't see everything that's going on, but this makes no sense.

--with-tls is "support loading TLS data".  --with-__thread is "use TLS
data internally".

The error message in question is guarded by USE_TLS.  USE_TLS is
defined for ld.so if:

#if defined HAVE_TLS_SUPPORT \
    && (defined FLOATING_STACKS || !defined IS_IN_libpthread)

/* Signal that TLS support is available.  */
# define USE_TLS        1

i.e. by --with-tls.

How is an ld.so built using --with-tls generating the error message? 
That's a more serious, and I suspect different, problem.  If it were
really the case, then /lib/ld-linux.so.2 would not have been able to
load the NPTL libraries and a lot more than libstdc++ would have broken!

Either turning on --with-__thread is just hiding the bug, or else I
don't understand the problem.

>From #360776, it looks like it has to do with dynamically loading
libstdc++, which is a more complicated case.  From the example, I
would guess that LD_ASSUME_KERNEL=2.4.1 perl -MAptPkg would reproduce
it.

Sure enough, with 2.3.6-6:

[EMAIL PROTECTED]:~/oldlibc% LD_ASSUME_KERNEL=2.4.1 ./lib/ld-2.3.6.so
--library-path ./lib:./usr/lib /usr/bin/perl -MAptPkg
Can't load '/usr/lib/perl5/auto/AptPkg/AptPkg.so' for module AptPkg:
libstdc++.so.6: cannot handle TLS data at
/usr/lib/perl/5.8/DynaLoader.pm line 225.
 at - line 0
Compilation failed in require.
BEGIN failed--compilation aborted.

With 2.3.6-7:
[EMAIL PROTECTED]:~/oldlibc% LD_ASSUME_KERNEL=2.4.1 ./lib/ld-2.3.6.so
--library-path ./lib:./usr/lib /usr/bin/perl -MAptPkg
[no error]

So the change to use --with-__thread in 2.3.6-8 was not necessary to
fix the libstdc++ problem; why was it made, and can we revert it?

-- 
Daniel Jacobowitz
CodeSourcery


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to