diff options
author | Konstantin Belousov <kib@FreeBSD.org> | 2011-01-25 21:12:31 +0000 |
---|---|---|
committer | Konstantin Belousov <kib@FreeBSD.org> | 2011-01-25 21:12:31 +0000 |
commit | cb38d4941c45e3c72c4b5b3fad87d297d950cf53 (patch) | |
tree | 6b984b52162918ea8254c857cb2d30fd43f83cbf /libexec/rtld-elf/map_object.c | |
parent | f1410015f0543e69e52034a5d1cb4ca1982bca34 (diff) | |
download | src-cb38d4941c45e3c72c4b5b3fad87d297d950cf53.tar.gz src-cb38d4941c45e3c72c4b5b3fad87d297d950cf53.zip |
When loading dso without PT_GNU_STACK phdr, only call
__pthread_map_stacks_exec() on architectures that allow executable
stacks.
Reported and tested by: marcel (ia64)
Notes
Notes:
svn path=/head/; revision=217851
Diffstat (limited to 'libexec/rtld-elf/map_object.c')
-rw-r--r-- | libexec/rtld-elf/map_object.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libexec/rtld-elf/map_object.c b/libexec/rtld-elf/map_object.c index 3f69e9b5d523..2b33862bc7fb 100644 --- a/libexec/rtld-elf/map_object.c +++ b/libexec/rtld-elf/map_object.c @@ -101,7 +101,7 @@ map_object(int fd, const char *path, const struct stat *sb) phdyn = phinterp = phtls = NULL; phdr_vaddr = 0; segs = alloca(sizeof(segs[0]) * hdr->e_phnum); - stack_flags = PF_X | PF_R | PF_W; + stack_flags = RTLD_DEFAULT_STACK_PF_EXEC | PF_R | PF_W; while (phdr < phlimit) { switch (phdr->p_type) { |