From ae11f049fc55c63a79b95ce0de69a1aee0d53faf Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sun, 17 Mar 2024 18:01:24 +0100 Subject: riscv64: sync with glibc, fix all TLS errors in uClibc-ng-test --- ldso/ldso/riscv64/elfinterp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'ldso/ldso/riscv64/elfinterp.c') 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: -- cgit v1.2.3