@@ -135,27 +135,7 @@ mod imp {
135
135
Handler { _data : MAIN_ALTSTACK } ;
136
136
}
137
137
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 {
159
139
let stackp = mmap ( ptr:: null_mut ( ) ,
160
140
SIGSTKSZ ,
161
141
PROT_READ | PROT_WRITE ,
@@ -165,12 +145,11 @@ mod imp {
165
145
if stackp == MAP_FAILED {
166
146
panic ! ( "failed to allocate an alternative stack" ) ;
167
147
}
168
- libc :: stack_t { ss_sp : stackp as * mut i8 , ss_flags : 0 , ss_size : SIGSTKSZ }
148
+ stackp as * mut i8
169
149
}
170
150
171
-
172
151
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 }
174
153
sigaltstack ( & stack, ptr:: null_mut ( ) ) ;
175
154
Handler { _data : stack. ss_sp as * mut libc:: c_void }
176
155
}
0 commit comments