@@ -135,27 +135,7 @@ mod imp {
135135 Handler { _data : MAIN_ALTSTACK } ;
136136 }
137137
138- #[ cfg( any( target_os = "linux" ,
139- target_os = "macos" ,
140- target_os = "bitrig" ,
141- target_os = "netbsd" ,
142- target_os = "openbsd" ) ) ]
143- unsafe fn get_stack ( ) -> libc:: stack_t {
144- let stackp = mmap ( ptr:: null_mut ( ) ,
145- SIGSTKSZ ,
146- PROT_READ | PROT_WRITE ,
147- MAP_PRIVATE | MAP_ANON ,
148- -1 ,
149- 0 ) ;
150- if stackp == MAP_FAILED {
151- panic ! ( "failed to allocate an alternative stack" ) ;
152- }
153- libc:: stack_t { ss_sp : stackp, ss_flags : 0 , ss_size : SIGSTKSZ }
154- }
155-
156- #[ cfg( any( target_os = "dragonfly" ,
157- target_os = "freebsd" ) ) ]
158- unsafe fn get_stack ( ) -> libc:: stack_t {
138+ unsafe fn get_stack ( ) -> * mut i8 {
159139 let stackp = mmap ( ptr:: null_mut ( ) ,
160140 SIGSTKSZ ,
161141 PROT_READ | PROT_WRITE ,
@@ -165,12 +145,11 @@ mod imp {
165145 if stackp == MAP_FAILED {
166146 panic ! ( "failed to allocate an alternative stack" ) ;
167147 }
168- libc :: stack_t { ss_sp : stackp as * mut i8 , ss_flags : 0 , ss_size : SIGSTKSZ }
148+ stackp as * mut i8
169149 }
170150
171-
172151 pub unsafe fn make_handler ( ) -> Handler {
173- let stack = get_stack ( ) ;
152+ let stack = libc :: stack_t { ss_sp : get_stack ( ) , ss_flags : 0 , ss_size : SIGSTKSZ }
174153 sigaltstack ( & stack, ptr:: null_mut ( ) ) ;
175154 Handler { _data : stack. ss_sp as * mut libc:: c_void }
176155 }
0 commit comments