diff options
author | kib <kib@FreeBSD.org> | 2017-05-29 13:18:20 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2017-05-29 13:18:20 +0000 |
commit | 03a6f9fd43c0dc1a4a0ea8b2757285d2e33b6bd1 (patch) | |
tree | 34d9047a5ed701a723c05cb5d4706ae1d9953c52 | |
parent | 0bf386fbb2559e0d42ec9339380338a3dabd024a (diff) | |
download | FreeBSD-src-03a6f9fd43c0dc1a4a0ea8b2757285d2e33b6bd1.zip FreeBSD-src-03a6f9fd43c0dc1a4a0ea8b2757285d2e33b6bd1.tar.gz |
MFC r318312:
Fix the AT_EXECFD functionality.
-rw-r--r-- | libexec/rtld-elf/map_object.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/libexec/rtld-elf/map_object.c b/libexec/rtld-elf/map_object.c index 30af4ce..6f77d98 100644 --- a/libexec/rtld-elf/map_object.c +++ b/libexec/rtld-elf/map_object.c @@ -193,6 +193,8 @@ map_object(int fd, const char *path, const struct stat *sb) base_flags = MAP_PRIVATE | MAP_ANON | MAP_NOCORE; if (npagesizes > 1 && round_page(segs[0]->p_filesz) >= pagesizes[1]) base_flags |= MAP_ALIGNED_SUPER; + if (base_vaddr != 0) + base_flags |= MAP_FIXED | MAP_EXCL; mapbase = mmap(base_addr, mapsize, PROT_NONE, base_flags, -1, 0); if (mapbase == (caddr_t) -1) { |