TLS on amd64

Adam Lackorzynski adam at os.inf.tu-dresden.de
Fri Jul 15 00:02:58 CEST 2011


On Thu Jul 14, 2011 at 20:39:48 +0200, Daniel Müller wrote:
> On 13.07.2011 22:38, Adam Lackorzynski wrote:
> > On Wed Jul 13, 2011 at 22:10:15 +0200, Daniel Müller wrote:
> >> I want to use the __thread keyword gcc provides. I was told this was
> >> recently adjusted to work (at least in the private repository which I am
> >> using). It appears to be working when building for IA32 but when I
> >> compile the same program for amd64 I get a page fault when running it
> >> (it is a simple program just incrementing a __thread declared int).
> >>
> >> It faults at 10010f4 (the first access of the variable).
> >>
> >> 00000000010010f0 <main>:
> >>  10010f0:    48 83 ec 08              sub    rsp,0x8
> >>  10010f4:    64 c7 04 25 fc ff ff     mov    DWORD PTR
> >> fs:0xfffffffffffffffc,0x0
> >>  10010fb:    ff 00 00 00 00
> >>  1001100:    bf 60 48 01 01           mov    edi,0x1014860
> >>  1001105:    e8 36 88 00 00           call   1009940 <puts>
> >>  100110a:    64 83 04 25 fc ff ff     add    DWORD PTR
> >> fs:0xfffffffffffffffc,0x1
> >>  1001111:    ff 01
> >>  1001113:    bf 01 00 00 00           mov    edi,0x1
> >>  1001118:    e8 d3 71 00 00           call   10082f0 <sleep>
> >>  100111d:    eb e1                    jmp    1001100 <main+0x10>
> >>  100111f:    90                       nop
> >>
> >> Is TLS for amd64 supposed to work? Any idea on the problem?
> > It's currently only supposed to work on x86-32, other archs haven't been
> > done yet.
> This is unfortunate. Are there plans to fix this in the near future?

Yes, but no promises on the when.


Adam
-- 
Adam                 adam at os.inf.tu-dresden.de
  Lackorzynski         http://os.inf.tu-dresden.de/~adam/




More information about the l4-hackers mailing list