diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2015-06-27 12:08:07 +0200 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2015-06-27 12:08:07 +0200 |
commit | c2c1b843092768bd922f587bba9107c97f2a7ade (patch) | |
tree | 2c73294a2c042a9a8d071eae457245857c4083f8 /winsup/cygwin/exceptions.cc | |
parent | ba170254e6c2a81e847779f719ff61912437444e (diff) | |
download | cygnal-c2c1b843092768bd922f587bba9107c97f2a7ade.tar.gz cygnal-c2c1b843092768bd922f587bba9107c97f2a7ade.tar.bz2 cygnal-c2c1b843092768bd922f587bba9107c97f2a7ade.zip |
Handle ss_flags value longjmp safe.
* exceptions.cc (_cygtls::call_signal_handler): Drop manipulating
thread's ss_flags here. It's not safe against longjmp.
* signal.cc (sigaltstack): Check if we're running on the alternate
stack and set ss_flags returned in oss to SS_ONSTACK.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diffstat (limited to 'winsup/cygwin/exceptions.cc')
-rw-r--r-- | winsup/cygwin/exceptions.cc | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index d493abb00..90a8ff25d 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -1599,8 +1599,6 @@ _cygtls::call_signal_handler () uintptr_t new_sp = (uintptr_t) _my_tls.altstack.ss_sp + _my_tls.altstack.ss_size; new_sp &= ~0xf; - /* Mark alternate stack as used. */ - _my_tls.altstack.ss_flags = SS_ONSTACK; /* In assembler: Save regs on new stack, move to alternate stack, call thisfunc, revert stack regs. */ #ifdef __x86_64__ @@ -1671,8 +1669,6 @@ _cygtls::call_signal_handler () [FUNC] "o" (thisfunc) : "memory"); #endif - /* Revert alternate stack to unused. */ - _my_tls.altstack.ss_flags = 0; } else /* No alternate signal stack requested or available, just call |