On Tue, Jul 29, 2003 at 07:03:58PM -0700, Ben Liblit wrote:
> Package: libc6
> Version: 2.3.1-17
> Severity: normal
> 
> gcc-3.3.1 understands a syntax for declaring C global variables with
> thread-local storage.  Programs using this extension compile and link
> fine, but fail at run time.  As soon as a program accesses or takes
> the address of any piece of thread-local storage, the program fails
> with a segmentation fault (SIGSEGV).
> 
> To reproduce the problem, compile the following simple program.  No
> special command line flags are needed:
> 
>       __thread int x;
> 
>       int main()
>       {
>               x = 0;
>               return 0;
>       }
> 
> Run the program, and observe that it dies with SIGSEGV.  Taking the
> address of a variable with thread-local storage exhibits the same
> problem.
> 
> My understanding is that while GCC has to generate the right code,
> thread-local storage also requires support from the linker, run-time
> loader, and C library.  I'm reporting this against libc6 on the
> assumption that either libc itself or the loader (/lib/ld-2.3.1.so) is
> at fault.  It's possible, though, that the problem is elsewhere.
> 
> For the record, I'm also using binutils 2.14.90.0.5-0.1 and gcc 3.3-2,
> all on Debian unstable.

You are correct that our glibc has this support disabled.  A future
version will have it enabled.

However, on some architectures, including i686, I believe that it also
requires kernel support.  Hmm, reading it again perhaps that's not
true.

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer


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

Reply via email to