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]

[PATCH 0/2] aarch64: non lazy tlsdesc


lazy initialization of tlsdesc GOT entries is problematic on weak
memory models, the data race was fixed by adding a synchronization
barrier in the tlsdesc functions which run at every tls access:
https://sourceware.org/ml/libc-alpha/2015-06/msg00496.html

this obviously has significant performance impact, so the real fix
is to remove lazy initialization, which is not a useful feature,
and drop all the complicated runtime code for it.

such a change would be useful to do generically for all tlsdesc
targets (even where no barriers are needed for lazy initialization),
but i did not see a clean way to special case tlsdesc relocs in
the generic elf/do-rel.h code, so this is for aarch64 only (and
i plan to submit a separate patch for arm too).

Szabolcs Nagy (2):
  aarch64: Disable lazy symbol binding of TLSDESC
  aarch64: Remove barriers from TLS descriptor functions

 elf/tlsdeschtab.h            |   2 +
 sysdeps/aarch64/dl-machine.h |  23 +++--
 sysdeps/aarch64/dl-tlsdesc.S | 203 -------------------------------------------
 sysdeps/aarch64/dl-tlsdesc.h |   9 --
 sysdeps/aarch64/tlsdesc.c    | 127 +--------------------------
 5 files changed, 17 insertions(+), 347 deletions(-)

-- 
2.11.0


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