diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2015-07-07 20:45:06 +0200 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2015-07-07 20:45:06 +0200 |
commit | 60f10c64aa57d613471446ea3ec1b3ce6d3b9500 (patch) | |
tree | 0d7e41c913bb1d547cf3512dd3314dc332ca0585 /winsup/cygwin/exception.h | |
parent | 29a12632278368f197f3270532e2f6c19642512e (diff) | |
download | cygnal-60f10c64aa57d613471446ea3ec1b3ce6d3b9500.tar.gz cygnal-60f10c64aa57d613471446ea3ec1b3ce6d3b9500.tar.bz2 cygnal-60f10c64aa57d613471446ea3ec1b3ce6d3b9500.zip |
x86_64: Handle myfault exceptions when running on alternate signal stack
x86_64 only:
* cygtls.cc (san::leave): Restore _my_tls.andreas.
* cygtls.h (class san): Add _clemente as in 32 bit case. Add ret and
frame members.
(san::san): Handle _my_tls.andreas as on 32 bit. Take parameter and
write it to new member ret. Store current stack pointer in frame.
(san::~san): New destructor to restore _my_tls.andreas.
(__try): Use __l_except address as parameter to san::san.
* dcrt0.cc (dll_crt0_0): Add myfault_altstack_handler as vectored
continuation handler.
* exception.h (myfault_altstack_handler): Declare.
* exceptions.cc (myfault_altstack_handler): New function. Explain what
it's good for.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diffstat (limited to 'winsup/cygwin/exception.h')
-rw-r--r-- | winsup/cygwin/exception.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/winsup/cygwin/exception.h b/winsup/cygwin/exception.h index 0478daf79..13160feb8 100644 --- a/winsup/cygwin/exception.h +++ b/winsup/cygwin/exception.h @@ -160,6 +160,8 @@ public: } }; +LONG CALLBACK myfault_altstack_handler (EXCEPTION_POINTERS *); + #endif /* !__x86_64__ */ class cygwin_exception |