From a9a752b0cede664f641502c2ab87a6735fe8d889 Mon Sep 17 00:00:00 2001 From: Max Filippov Date: Wed, 17 Jan 2018 05:52:54 -0800 Subject: xtensa: fix R_XTENSA_TLSDESC_ARG handling in _dl_do_reloc R_XTENSA_TLSDESC_ARG is a true RELA relocation, the addend is in the relocation record itself, not in place. Signed-off-by: Max Filippov --- ldso/ldso/xtensa/elfinterp.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'ldso/ldso') diff --git a/ldso/ldso/xtensa/elfinterp.c b/ldso/ldso/xtensa/elfinterp.c index 4c83ab65e..e38a02666 100644 --- a/ldso/ldso/xtensa/elfinterp.c +++ b/ldso/ldso/xtensa/elfinterp.c @@ -244,10 +244,11 @@ _dl_do_reloc (struct elf_resolve *tpnt, struct r_scope_elem *scope, if (!TRY_STATIC_TLS ((struct link_map *) tls_tpnt)) *reloc_addr = (ElfW(Addr)) _dl_make_tlsdesc_dynamic((struct link_map *) tls_tpnt, - symbol_addr + *reloc_addr); + symbol_addr + rpnt->r_addend); else #endif - *reloc_addr += symbol_addr + tls_tpnt->l_tls_offset; + *reloc_addr = symbol_addr + rpnt->r_addend + + tls_tpnt->l_tls_offset; break; #endif -- cgit v1.2.3