summaryrefslogtreecommitdiffstats
path: root/libexec/rtld-elf/map_object.c
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2011-01-25 21:12:31 +0000
committerkib <kib@FreeBSD.org>2011-01-25 21:12:31 +0000
commit1290d38ac50b3afa7e5781d9d97346a1042c736c (patch)
tree6b984b52162918ea8254c857cb2d30fd43f83cbf /libexec/rtld-elf/map_object.c
parent736c72ab1a257909fc96a743c7c7e9a1e584cbaa (diff)
downloadFreeBSD-src-1290d38ac50b3afa7e5781d9d97346a1042c736c.zip
FreeBSD-src-1290d38ac50b3afa7e5781d9d97346a1042c736c.tar.gz
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)
Diffstat (limited to 'libexec/rtld-elf/map_object.c')
-rw-r--r--libexec/rtld-elf/map_object.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/libexec/rtld-elf/map_object.c b/libexec/rtld-elf/map_object.c
index 3f69e9b..2b33862 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) {
OpenPOWER on IntegriCloud