summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKito Cheng <kito@0xlab.org>2012-07-15 00:49:27 +0800
committerKito Cheng <kito@0xlab.org>2012-07-15 00:49:34 +0800
commit326e85eca6916eb904649f7bff65244a40088ba7 (patch)
treeba1a91f237d5a013bb89af9a3d2f4c41800125e9
parente1d909f71e183ac3d1e21af5bb1af35d30e9de5b (diff)
downloadbionic-326e85eca6916eb904649f7bff65244a40088ba7.zip
bionic-326e85eca6916eb904649f7bff65244a40088ba7.tar.gz
bionic-326e85eca6916eb904649f7bff65244a40088ba7.tar.bz2
linker: Fix LD_PRELOADS for calling constructors
Change-Id: I1eae77a4c59e8a5acc009127d271455bb6fc01b6
-rw-r--r--linker/linker.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/linker/linker.c b/linker/linker.c
index 54fb22b..8d4efaf 100644
--- a/linker/linker.c
+++ b/linker/linker.c
@@ -1649,6 +1649,7 @@ static unsigned __linker_init_post_relocation(unsigned **elfdata)
unsigned *vecs = (unsigned*) (argv + argc + 1);
unsigned *v;
soinfo *si;
+ int i;
struct link_map * map;
const char *ldpath_env = NULL;
const char *ldpreload_env = NULL;
@@ -1790,6 +1791,10 @@ sanitize:
exit(-1);
}
+ for(i = 0; preloads[i] != NULL; i++) {
+ soinfo_call_constructors(preloads[i]);
+ }
+
soinfo_call_constructors(si);
#if ALLOW_SYMBOLS_FROM_MAIN