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,