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>
This commit is contained in:
@@ -800,6 +800,11 @@ dll_crt0_0 ()
|
||||
if (!dynamically_loaded)
|
||||
sigproc_init ();
|
||||
|
||||
#ifdef __x86_64__
|
||||
/* See comment preceeding myfault_altstack_handler in exception.cc. */
|
||||
AddVectoredContinueHandler (0, myfault_altstack_handler);
|
||||
#endif
|
||||
|
||||
debug_printf ("finished dll_crt0_0 initialization");
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user