This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 0/7] Disable lazy tlsdesc on aarch64 and arm


On 24/10/17 15:54, H.J. Lu wrote:
> On Tue, Oct 24, 2017 at 7:23 AM, Szabolcs Nagy <szabolcs.nagy@arm.com> wrote:
>> Reorganized the aarch64 patches a bit and added patches for arm too.
>>
>> The reason behind this change is the data race BZ #18034 on aarch64
>> and equivalent BZ #18572 on arm.  The aarch64 bug was fixed by adding
>> synchronization but that causes significant performance regression
>> of tls access. Lazy initialization of tlsdesc was never justified,
>> so i'm proposing to remove it on weakly ordered memory architectures.
>> (For consistency i think it should be removed on x86 too, but i don't
>> have patches for that.)
>>
>> Szabolcs Nagy (7):
>>   Mark lazy tlsdesc helper functions unused to avoid warnings
>>   aarch64: Disable lazy symbol binding of TLSDESC
>>   aarch64: Remove barriers from TLS descriptor functions
>>   [BZ #17078] arm: remove prelinker support for R_ARM_TLS_DESC
>>   [BZ #18572] arm: Disable lazy initialization of tlsdesc entries
>>   arm: Remove unnecessary volatile qualifier
>>   arm: Remove lazy tlsdesc initialization related code
>>
>>
> 
> TLSDESC is very rarely used/tested.   Should we remove lazy binding
> TLSDESC for all targets? It will simplify TLSDESC code.
> 

i think removing it for all targets makes sense.

i think in glibc a small bit of generic code and a
big chunk of target specific asm + c can be removed.

with the approach in this patch, targets can do the
cleanup independently (by doing symbol binding for
R_*_TLSDESC in their elf_machine_lazy_rel)

another approach is to do the non-lazy code path for
for R_*_TLSDESC in the generic elf/do-rel.h code,
however that seems more messy given how that code is
structured.

i haven't yet looked into the bfd linker, i suspect
if tlsdesc relocs are moved to the non-lazy reloc
list then the tlsdesc plt sequence and some related
code in the linker may be removed. (but i dont know
if that is valid to do or if it is abi).


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]