Purpose of attribute_tls_model_ie

Florian Weimer fweimer@redhat.com
Fri Oct 16 14:00:00 GMT 2015


On 10/16/2015 03:31 PM, Joseph Myers wrote:
> On Fri, 16 Oct 2015, Florian Weimer wrote:
> 
>> Why are some thread-local variables marked with attribute_tls_model_ie?
> 
> Maybe to indicate variables located in initial modules that are accessed 
> from other modules (i.e. for use when those other modules are being built, 
> without -ftls-model=initial-exec)?

But this would not apply to the arena pointer in malloc/arena.c, right?
 (It's a static TLS variable, after all.)  So we could drop it there and
get better code for statically linked glibc.

>> As far as I can tell, the default for PIC is set by
>> -ftls-model=initial-exec, and for non-PIC, it's the compiler default.
>> The latter is more efficient (no GOT indirection), but
>> attribute_tls_model_ie overrides this.
> 
> I suppose there's a case for static libraries being built for local-exec.

Yes, the code looks quite a bit better on x86_64 in the statically
linked case.

Florian



More information about the Libc-alpha mailing list