diff options
author | kan <kan@FreeBSD.org> | 2012-04-02 11:50:14 +0000 |
---|---|---|
committer | kan <kan@FreeBSD.org> | 2012-04-02 11:50:14 +0000 |
commit | abab6bc303bf1ded31000eea4c03b723998d2355 (patch) | |
tree | 50ffd733909aadbdb13d08ff6a10b4a94b93547b /libexec | |
parent | 74a66a0c1f917ff27b89ed254417a65541eb3426 (diff) | |
download | FreeBSD-src-abab6bc303bf1ded31000eea4c03b723998d2355.zip FreeBSD-src-abab6bc303bf1ded31000eea4c03b723998d2355.tar.gz |
Do not try to adjust stacks if dlopen_object is called too early.
This is a follow-up to r233231, which fixed similar issue with
object initialization code.
Reviewed by: kib
MFC after: 1 week (with 233231)
Diffstat (limited to 'libexec')
-rw-r--r-- | libexec/rtld-elf/rtld.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c index d3ce3c6..916143b 100644 --- a/libexec/rtld-elf/rtld.c +++ b/libexec/rtld-elf/rtld.c @@ -2585,7 +2585,10 @@ dlopen_object(const char *name, int fd, Obj_Entry *refobj, int lo_flags, name); GDB_STATE(RT_CONSISTENT,obj ? &obj->linkmap : NULL); - map_stacks_exec(&lockstate); + + if (!(lo_flags & RTLD_LO_EARLY)) { + map_stacks_exec(&lockstate); + } if (initlist_objects_ifunc(&initlist, (mode & RTLD_MODEMASK) == RTLD_NOW, (lo_flags & RTLD_LO_EARLY) ? SYMLOOK_EARLY : 0, |