This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 0/7] Disable lazy tlsdesc on aarch64 and arm
- From: Szabolcs Nagy <szabolcs dot nagy at arm dot com>
- To: "H.J. Lu" <hjl dot tools at gmail dot com>
- Cc: nd at arm dot com, GNU C Library <libc-alpha at sourceware dot org>
- Date: Tue, 24 Oct 2017 17:03:05 +0100
- Subject: Re: [PATCH 0/7] Disable lazy tlsdesc on aarch64 and arm
- Authentication-results: sourceware.org; auth=none
- Authentication-results: spf=none (sender IP is ) smtp.mailfrom=Szabolcs dot Nagy at arm dot com;
- Nodisclaimer: True
- References: <59EF4CEC.8020301@arm.com> <CAMe9rOrW4muD6EnzGihG1wNfz3n4AX+qs_3idOhk_xiYzLy8iw@mail.gmail.com>
- Spamdiagnosticmetadata: NSPM
- Spamdiagnosticoutput: 1:99
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).