diff options
author | Christophe Lyon <christophe.lyon@st.com> | 2018-07-04 17:55:25 +0200 |
---|---|---|
committer | Waldemar Brodkorb <wbrodkorb@conet.de> | 2018-08-10 16:02:23 +0200 |
commit | 448a986954f65cc8c41f227bdf171d8e0d0b4c7d (patch) | |
tree | c79e692a106abd3c45f39e98f2f23f1684120834 | |
parent | 99dfb1e26f784429e23f2e67eef5bbbc6e646b83 (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.c | 4 | ||||
-rw-r--r-- | ldso/ldso/ldso.c | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c index 1768b5bb8..9cb46dea4 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 c62575797..06b0ac874 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); } |