Răsfoiți Sursa

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.
Waldemar Brodkorb 11 luni în urmă
părinte
comite
94c1297d52
1 a modificat fișierele cu 2 adăugiri și 2 ștergeri
  1. 2 2
      ldso/ldso/aarch64/elfinterp.c

+ 2 - 2
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;
 					}
 				}