summaryrefslogtreecommitdiff
path: root/libexec
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2011-09-20 21:49:54 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2011-09-20 21:49:54 +0000
commit750b5e3134467ec8257e1a0c01d96c89be5af3cf (patch)
tree0c30dfc63297c4a18d6536a1de310016ffc96fad /libexec
parent1eeb6d97d09e439c7be2cc1f91b6e57d2c5c0573 (diff)
Notes
Diffstat (limited to 'libexec')
-rw-r--r--libexec/rtld-elf/map_object.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/libexec/rtld-elf/map_object.c b/libexec/rtld-elf/map_object.c
index 2b33862bc7fb..aca1b2d0d43a 100644
--- a/libexec/rtld-elf/map_object.c
+++ b/libexec/rtld-elf/map_object.c
@@ -215,8 +215,9 @@ map_object(int fd, const char *path, const struct stat *sb)
bss_vlimit = round_page(segs[i]->p_vaddr + segs[i]->p_memsz);
bss_addr = mapbase + (bss_vaddr - base_vaddr);
if (bss_vlimit > bss_vaddr) { /* There is something to do */
- if (mprotect(bss_addr, bss_vlimit - bss_vaddr, data_prot) == -1) {
- _rtld_error("%s: mprotect of bss failed: %s", path,
+ if (mmap(bss_addr, bss_vlimit - bss_vaddr, data_prot,
+ data_flags | MAP_ANON, -1, 0) == (caddr_t)-1) {
+ _rtld_error("%s: mmap of bss failed: %s", path,
strerror(errno));
return NULL;
}