summaryrefslogtreecommitdiff
path: root/src/ldso
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2011-06-28 14:13:51 -0400
committerRich Felker <dalias@aerifal.cx>2011-06-28 14:13:51 -0400
commitc7debe13ee3c1ca2039b67bb7e4891365017ac1a (patch)
treed096a865e38c28746739ee64ba9e60a0c0ad42c4 /src/ldso
parent8d54681f15125e5a26669128cba66cd28fc52e5b (diff)
downloadmusl-c7debe13ee3c1ca2039b67bb7e4891365017ac1a.tar.gz
musl-c7debe13ee3c1ca2039b67bb7e4891365017ac1a.tar.bz2
musl-c7debe13ee3c1ca2039b67bb7e4891365017ac1a.tar.xz
musl-c7debe13ee3c1ca2039b67bb7e4891365017ac1a.zip
make dynamic linker relocate the main program image last, after all libs
prior to this change, copy relocations for initialized pointer variables would not reflect the relocated contents of the pointer.
Diffstat (limited to 'src/ldso')
-rw-r--r--src/ldso/dynlink.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c
index 9a0697c8..82aaeec1 100644
--- a/src/ldso/dynlink.c
+++ b/src/ldso/dynlink.c
@@ -462,6 +462,7 @@ void *__dynlink(int argc, char **argv, size_t *got)
load_deps(head);
make_global(head);
+ reloc_all(head->next);
reloc_all(head);
if (rtld_used) {