summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Lyon <christophe.lyon@st.com>2018-07-04 15:55:25 (GMT)
committerWaldemar Brodkorb <wbrodkorb@conet.de>2018-08-10 14:02:23 (GMT)
commit448a986954f65cc8c41f227bdf171d8e0d0b4c7d (patch)
treec79e692a106abd3c45f39e98f2f23f1684120834
parent99dfb1e26f784429e23f2e67eef5bbbc6e646b83 (diff)
TLS: fix relocation computation
* ldso/ldso/dl-elf.c (_dl_load_elf_shared_library): Fix l_tls_initimage computation. * ldso/ldso/ldso.c (_dl_get_ready_to_run): Likewise. Signed-off-by: Mickaël Guêné <mickael.guene@st.com> Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
-rw-r--r--ldso/ldso/dl-elf.c4
-rw-r--r--ldso/ldso/ldso.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c
index 1768b5b..9cb46de 100644
--- a/ldso/ldso/dl-elf.c
+++ b/ldso/ldso/dl-elf.c
@@ -863,11 +863,11 @@ struct elf_resolve *_dl_load_elf_shared_library(unsigned int rflags,
{
# ifdef __SUPPORT_LD_DEBUG_EARLY__
char *tmp = (char *) tpnt->l_tls_initimage;
- tpnt->l_tls_initimage = (char *) tlsppnt->p_vaddr + tpnt->loadaddr;
+ tpnt->l_tls_initimage = (char *) DL_RELOC_ADDR(tpnt->loadaddr, tlsppnt->p_vaddr;
_dl_debug_early("Relocated TLS initial image from %x to %x (size = %x)\n", tmp, tpnt->l_tls_initimage, tpnt->l_tls_initimage_size);
tmp = 0;
# else
- tpnt->l_tls_initimage = (char *) tlsppnt->p_vaddr + tpnt->loadaddr;
+ tpnt->l_tls_initimage = (char *) DL_RELOC_ADDR(tpnt->loadaddr, tlsppnt->p_vaddr);
# endif
}
}
diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c
index c625757..06b0ac8 100644
--- a/ldso/ldso/ldso.c
+++ b/ldso/ldso/ldso.c
@@ -772,7 +772,7 @@ of this helper program; chances are you did not intend to run this program.\n\
char *tmp attribute_unused =
(char *) app_tpnt->l_tls_initimage;
app_tpnt->l_tls_initimage =
- (char *) app_tpnt->l_tls_initimage + app_tpnt->loadaddr;
+ (char *) DL_RELOC_ADDR(app_tpnt->loadaddr, app_tpnt->l_tls_initimage);
_dl_debug_early("Relocated TLS initial image from %x to %x (size = %x)\n",
tmp, app_tpnt->l_tls_initimage, app_tpnt->l_tls_initimage_size);
}