From af7e9ea67ce5c56cb1f505fb49fea5359538c5cb Mon Sep 17 00:00:00 2001 From: edef Date: Thu, 16 Apr 2015 07:56:26 -0400 Subject: [PATCH] add FreeBSD + DragonFlyBSD MAP_STACK workaround http://lists.freebsd.org/pipermail/freebsd-bugs/2011-July/044840.html according to libgreen, DragonFlyBSD suffers from this too --- src/os/sys/unix.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/os/sys/unix.rs b/src/os/sys/unix.rs index caa4c86..711b580 100644 --- a/src/os/sys/unix.rs +++ b/src/os/sys/unix.rs @@ -20,9 +20,15 @@ pub fn sys_page_size() -> usize { const GUARD_PROT: c_int = libc::PROT_NONE; const STACK_PROT: c_int = libc::PROT_READ | libc::PROT_WRITE; +#[cfg(not(any(target_os = "freebsd", target_os = "dragonfly")))] const STACK_FLAGS: c_int = libc::MAP_STACK | libc::MAP_PRIVATE | libc::MAP_ANON; +// workaround for http://lists.freebsd.org/pipermail/freebsd-bugs/2011-July/044840.html +// according to libgreen, DragonFlyBSD suffers from this too +#[cfg(any(target_os = "freebsd", target_os = "dragonfly"))] +const STACK_FLAGS: c_int = libc::MAP_PRIVATE + | libc::MAP_ANON; pub unsafe fn map_stack(len: usize) -> Option<*mut u8> { let ptr = mmap(ptr::null_mut(), len as size_t,