aboutsummaryrefslogtreecommitdiff
path: root/libexec/rtld-elf/powerpc64
diff options
context:
space:
mode:
authorMichal Meloun <mmel@FreeBSD.org>2018-12-15 10:38:07 +0000
committerMichal Meloun <mmel@FreeBSD.org>2018-12-15 10:38:07 +0000
commit4849c3a57055c77aa3009f5b8cbcdc9d5ba10bd5 (patch)
treec11599d43044ba540ed40e34c5d71afc2fb606b5 /libexec/rtld-elf/powerpc64
parentb937183e005002f13e7016e6a013b16398571a39 (diff)
downloadsrc-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.c2
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;