From 4849c3a57055c77aa3009f5b8cbcdc9d5ba10bd5 Mon Sep 17 00:00:00 2001 From: Michal Meloun Date: Sat, 15 Dec 2018 10:38:07 +0000 Subject: 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 --- libexec/rtld-elf/powerpc64/reloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libexec/rtld-elf/powerpc64') 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; -- cgit v1.2.3