diff options
| author | Dave Huseby <dhuseby@mozilla.com> | 2016-02-02 09:23:33 -0800 |
|---|---|---|
| committer | Dave Huseby <dhuseby@mozilla.com> | 2016-02-02 21:42:11 -0800 |
| commit | 68bfd43eefe42b429a463731fe81d62bf9c27907 (patch) | |
| tree | e9be4861e76614f0384ac9010abc14d2f15190c6 /src/libstd/sys/unix/stack_overflow.rs | |
| parent | 7803c8d688b87e3d13f42d543a553201005db783 (diff) | |
| download | rust-68bfd43eefe42b429a463731fe81d62bf9c27907.tar.gz rust-68bfd43eefe42b429a463731fe81d62bf9c27907.zip | |
simplifying get_stack
Diffstat (limited to 'src/libstd/sys/unix/stack_overflow.rs')
| -rw-r--r-- | src/libstd/sys/unix/stack_overflow.rs | 27 |
1 files changed, 3 insertions, 24 deletions
diff --git a/src/libstd/sys/unix/stack_overflow.rs b/src/libstd/sys/unix/stack_overflow.rs index f5353895c9d..ee590e1af71 100644 --- a/src/libstd/sys/unix/stack_overflow.rs +++ b/src/libstd/sys/unix/stack_overflow.rs @@ -135,27 +135,7 @@ mod imp { Handler { _data: MAIN_ALTSTACK }; } - #[cfg(any(target_os = "linux", - target_os = "macos", - target_os = "bitrig", - target_os = "netbsd", - target_os = "openbsd"))] - unsafe fn get_stack() -> libc::stack_t { - let stackp = mmap(ptr::null_mut(), - SIGSTKSZ, - PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_ANON, - -1, - 0); - if stackp == MAP_FAILED { - panic!("failed to allocate an alternative stack"); - } - libc::stack_t { ss_sp: stackp, ss_flags: 0, ss_size: SIGSTKSZ } - } - - #[cfg(any(target_os = "dragonfly", - target_os = "freebsd"))] - unsafe fn get_stack() -> libc::stack_t { + unsafe fn get_stack() -> *mut i8 { let stackp = mmap(ptr::null_mut(), SIGSTKSZ, PROT_READ | PROT_WRITE, @@ -165,12 +145,11 @@ mod imp { if stackp == MAP_FAILED { panic!("failed to allocate an alternative stack"); } - libc::stack_t { ss_sp: stackp as *mut i8, ss_flags: 0, ss_size: SIGSTKSZ } + stackp as *mut i8 } - pub unsafe fn make_handler() -> Handler { - let stack = get_stack(); + let stack = libc::stack_t { ss_sp: get_stack(), ss_flags: 0, ss_size: SIGSTKSZ } sigaltstack(&stack, ptr::null_mut()); Handler { _data: stack.ss_sp as *mut libc::c_void } } |
