From 94c1297d52263e20cd9715601afa37f49d008d93 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Mon, 15 Sep 2025 20:35:18 +0000 Subject: 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. --- ldso/ldso/aarch64/elfinterp.c | 4 ++-- 1 file 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; } } -- cgit v1.2.3