HomeFreeBSD

Improve R_AARCH64_TLSDESC relocation.

Description

Improve R_AARCH64_TLSDESC relocation.
The original code did not support dynamically loaded libraries and used
suboptimal access to TLS variables.
New implementation removes lazy resolving of TLS relocation - due to flaw
in TLSDESC design is impossible to switch resolver function at runtime
without expensive locking.

Due to this, 3 specialized resolvers are implemented:

  • load time resolver for TLS relocation from libraries loaded with main executable (thus with known TLS offset).
  • resolver for undefined thread weak symbols.
  • slower lazy resolver for dynamically loaded libraries with fast path for already resolved symbols.

PR: 228892, 232149, 233204, 232311
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D18417

Details

Provenance
mmelAuthored on
Differential Revision
D18417: Improve R_AARCH64_TLSDESC relocation.
Parents
rS342112: Fix mismerge caused by r342111.
Branches
Unknown
Tags
Unknown