diff options
| author | Konstantin Belousov <kib@FreeBSD.org> | 2011-09-20 21:49:54 +0000 |
|---|---|---|
| committer | Konstantin Belousov <kib@FreeBSD.org> | 2011-09-20 21:49:54 +0000 |
| commit | 750b5e3134467ec8257e1a0c01d96c89be5af3cf (patch) | |
| tree | 0c30dfc63297c4a18d6536a1de310016ffc96fad /libexec | |
| parent | 1eeb6d97d09e439c7be2cc1f91b6e57d2c5c0573 (diff) | |
Notes
Diffstat (limited to 'libexec')
| -rw-r--r-- | libexec/rtld-elf/map_object.c | 5 |
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; } |
