Sfoglia il codice sorgente

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 4 giorni fa
parent
commit
94c1297d52
1 ha cambiato i file con 2 aggiunte e 2 eliminazioni
  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;
 					}
 				}