summaryrefslogtreecommitdiff
path: root/ldso/ldso/riscv64/elfinterp.c
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2024-03-17 18:01:24 +0100
committerWaldemar Brodkorb <wbx@openadk.org>2024-03-19 14:50:57 +0100
commitae11f049fc55c63a79b95ce0de69a1aee0d53faf (patch)
tree81cadde791e058896cb87e996c215dc469916b83 /ldso/ldso/riscv64/elfinterp.c
parent9e7b342fde5505c0a1d4968e9d70537ac406f640 (diff)
riscv64: sync with glibc, fix all TLS errors in uClibc-ng-test
Diffstat (limited to 'ldso/ldso/riscv64/elfinterp.c')
-rw-r--r--ldso/ldso/riscv64/elfinterp.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/ldso/ldso/riscv64/elfinterp.c b/ldso/ldso/riscv64/elfinterp.c
index 427e7b8fd..5266d96b2 100644
--- a/ldso/ldso/riscv64/elfinterp.c
+++ b/ldso/ldso/riscv64/elfinterp.c
@@ -214,11 +214,11 @@ _dl_do_reloc (struct elf_resolve *tpnt, struct r_scope_elem *scope,
*reloc_addr = tls_tpnt->l_tls_modid;
break;
case R_RISCV_TLS_DTPREL64:
- *reloc_addr = symbol_addr + rpnt->r_addend;
+ *reloc_addr = symbol_addr - TLS_DTV_OFFSET + rpnt->r_addend;
break;
case R_RISCV_TLS_TPREL64:
CHECK_STATIC_TLS ((struct link_map *) tls_tpnt);
- *reloc_addr = tls_tpnt->l_tls_offset + symbol_addr + rpnt->r_addend - TLS_TCB_SIZE;
+ *reloc_addr = tls_tpnt->l_tls_offset + symbol_addr + rpnt->r_addend;
break;
#endif
default: