summaryrefslogtreecommitdiff
path: root/ldso/ldso/dl-hash.c
diff options
context:
space:
mode:
authorFilippo Arcidiacono <filippo.arcidiacono@st.com>2010-08-02 17:23:35 +0200
committerCarmelo Amoroso <carmelo.amoroso@st.com>2010-09-17 16:13:17 +0200
commita33796043bdef5345bc00a528c942f91a87af8e9 (patch)
treed69b340439feac78601648c29efb34d9b889e5e8 /ldso/ldso/dl-hash.c
parent02f56b3ae9f620528c3c1bb42662b4499d19f383 (diff)
ldso: Add runtime prelink support
Added runtime prelink support to be able to run a prelinked application; at process startup only the conflicts will be relocated. This speed up the startup time. Signed-off-by: Filippo Arcidiacono <filippo.arcidiacono@st.com> Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
Diffstat (limited to 'ldso/ldso/dl-hash.c')
-rw-r--r--ldso/ldso/dl-hash.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/ldso/ldso/dl-hash.c b/ldso/ldso/dl-hash.c
index 2e2111fa9..f0683c60f 100644
--- a/ldso/ldso/dl-hash.c
+++ b/ldso/ldso/dl-hash.c
@@ -145,7 +145,11 @@ struct elf_resolve *_dl_add_elf_hash_table(const char *libname,
hash_addr += tpnt->nbucket;
tpnt->chains = hash_addr;
}
+#ifdef __LDSO_PRELINK_SUPPORT__
+ tpnt->loadaddr = dynamic_info[DT_GNU_PRELINKED_IDX] ? 0 : loadaddr;
+#else
tpnt->loadaddr = loadaddr;
+#endif
tpnt->mapaddr = DL_RELOC_ADDR(loadaddr, 0);
for (i = 0; i < DYNAMIC_SIZE; i++)
tpnt->dynamic_info[i] = dynamic_info[i];