libgcj and the NPTL posix threads implementation

Ulrich Weigand weigand@i1.informatik.uni-erlangen.de
Wed Mar 3 03:43:00 GMT 2004


Jeff Sturm wrote:
>static int __thread x;
>int t(void) {
> return x;
>}
>>compare the output compiled with -fPIC:
>>t:
> pushl %ebx
> call __i686.get_pc_thunk.bx
> addl $_GLOBAL_OFFSET_TABLE_, %ebx
> leal x@TLSLDM(%ebx), %eax
> call ___tls_get_addr@PLT
> popl %ebx
> movl x@DTPOFF(%eax), %eax
> ret
>>vs. without:
>>t:
> movl %gs:x@NTPOFF, %eax
> ret
>>The former is necessary in a DSO where the exact thread-local offset can't
>be known at compile time.

However, for smalls amount of data you're allowed to use
static int __thread x __attribute__ ((tls_model ("initial-exec")));
in a library; try this with -fPIC, it'll be much more efficient ...
Bye,
Ulrich
-- 
 Dr. Ulrich Weigand
 weigand@informatik.uni-erlangen.de


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /