]> git.lizzy.rs Git - rust.git/commitdiff
simplifying get_stack
authorDave Huseby <dhuseby@mozilla.com>
Tue, 2 Feb 2016 17:23:33 +0000 (09:23 -0800)
committerDave Huseby <dhuseby@mozilla.com>
Wed, 3 Feb 2016 05:42:11 +0000 (21:42 -0800)
src/libstd/sys/unix/stack_overflow.rs

index f5353895c9dbafdc059b5194756c7791dc330400..ee590e1af71a7c0f15830b0e72af5be393977f1b 100644 (file)
@@ -135,27 +135,7 @@ pub unsafe fn cleanup() {
         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 @@ unsafe fn get_stack() -> libc::stack_t {
         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 }
     }