mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-02 15:32:06 +00:00
Rollup merge of #87528 - :stack_overflow_obsd, r=joshtriplett
stack overflow handler specific openbsd change.
This commit is contained in:
commit
3e4f95612e
@ -143,14 +143,15 @@ mod imp {
|
||||
}
|
||||
|
||||
unsafe fn get_stackp() -> *mut libc::c_void {
|
||||
let stackp = mmap(
|
||||
ptr::null_mut(),
|
||||
SIGSTKSZ + page_size(),
|
||||
PROT_READ | PROT_WRITE,
|
||||
MAP_PRIVATE | MAP_ANON,
|
||||
-1,
|
||||
0,
|
||||
);
|
||||
// OpenBSD requires this flag for stack mapping
|
||||
// otherwise the said mapping will fail as a no-op on most systems
|
||||
// and has a different meaning on FreeBSD
|
||||
#[cfg(any(target_os = "openbsd", target_os = "netbsd", target_os = "linux",))]
|
||||
let flags = MAP_PRIVATE | MAP_ANON | libc::MAP_STACK;
|
||||
#[cfg(not(any(target_os = "openbsd", target_os = "netbsd", target_os = "linux",)))]
|
||||
let flags = MAP_PRIVATE | MAP_ANON;
|
||||
let stackp =
|
||||
mmap(ptr::null_mut(), SIGSTKSZ + page_size(), PROT_READ | PROT_WRITE, flags, -1, 0);
|
||||
if stackp == MAP_FAILED {
|
||||
panic!("failed to allocate an alternative stack: {}", io::Error::last_os_error());
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user