diff options
author | Michal Meloun <mmel@FreeBSD.org> | 2018-12-15 10:38:07 +0000 |
---|---|---|
committer | Michal Meloun <mmel@FreeBSD.org> | 2018-12-15 10:38:07 +0000 |
commit | 4849c3a57055c77aa3009f5b8cbcdc9d5ba10bd5 (patch) | |
tree | c11599d43044ba540ed40e34c5d71afc2fb606b5 /libexec/rtld-elf/powerpc64 | |
parent | b937183e005002f13e7016e6a013b16398571a39 (diff) | |
download | src-4849c3a57055c77aa3009f5b8cbcdc9d5ba10bd5.tar.gz src-4849c3a57055c77aa3009f5b8cbcdc9d5ba10bd5.zip |
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
Notes
Notes:
svn path=/head/; revision=342113
Diffstat (limited to 'libexec/rtld-elf/powerpc64')
-rw-r--r-- | libexec/rtld-elf/powerpc64/reloc.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libexec/rtld-elf/powerpc64/reloc.c b/libexec/rtld-elf/powerpc64/reloc.c index 15f31738ab75..336265dbbdc2 100644 --- a/libexec/rtld-elf/powerpc64/reloc.c +++ b/libexec/rtld-elf/powerpc64/reloc.c @@ -376,7 +376,7 @@ reloc_plt_object(Obj_Entry *obj, const Elf_Rela *rela) * Process the PLT relocations. */ int -reloc_plt(Obj_Entry *obj) +reloc_plt(Obj_Entry *obj, int flags __unused, RtldLockState *lockstate __unused) { const Elf_Rela *relalim; const Elf_Rela *rela; |