diff options
author | Waldemar Brodkorb <wbx@openadk.org> | 2025-09-15 20:35:18 +0000 |
---|---|---|
committer | Waldemar Brodkorb <wbx@freewrt.de> | 2025-09-17 19:09:09 +0200 |
commit | 94c1297d52263e20cd9715601afa37f49d008d93 (patch) | |
tree | 02a95e3b30ffcd999005d4204a43be0c51c556c5 | |
parent | 31c044efbb0ac030caf427caa5799b013b3a536e (diff) |
aarch64: respect r_addend for TLSDESC relocations
This fixes a long standing bug in the ldso code for aarch64.
It fixes the newly problems occuring with python3, where python3
is segfaulting on startup.
-rw-r--r-- | ldso/ldso/aarch64/elfinterp.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/ldso/ldso/aarch64/elfinterp.c b/ldso/ldso/aarch64/elfinterp.c index 9365569cc..d8530ecd1 100644 --- a/ldso/ldso/aarch64/elfinterp.c +++ b/ldso/ldso/aarch64/elfinterp.c @@ -227,13 +227,13 @@ _dl_do_reloc (struct elf_resolve *tpnt, struct r_scope_elem *scope, #else if (!TRY_STATIC_TLS ((struct link_map *) tls_tpnt)) { - td->arg = _dl_make_tlsdesc_dynamic((struct link_map *) tls_tpnt, symbol_addr); + td->arg = _dl_make_tlsdesc_dynamic((struct link_map *) tls_tpnt, symbol_addr + rpnt->r_addend); td->entry = _dl_tlsdesc_dynamic; } else #endif { - td->arg = (void*)(symbol_addr + tls_tpnt->l_tls_offset); + td->arg = (void*)(symbol_addr + tls_tpnt->l_tls_offset + rpnt->r_addend); td->entry = _dl_tlsdesc_return; } } |