Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2005-12-03 08:01:51 +0300
committerChristopher Faylor <me@cgf.cx>2005-12-03 08:01:51 +0300
commit49085f6f16adf9f6cf97e19f94878071cebc49fe (patch)
tree7f98823b82f09927caffe8ec7a256345ff02cb98 /winsup/cygwin/exceptions.cc
parent087f4a61d28201ce04d19cce2a1112cc2f8966d4 (diff)
* include/exceptions.h (exception_list): Revert previous change. Windows
doesn't care. (exception_handler): Use real exception_list parameter type rather than void * * tlsoffsets.h: Regenerate. * cygtls.h (_cygtls::handle_exceptions): Use real exception_list parameter type rather than void *. (handle_threadlist_exception): Ditto. (init_exception_handler): Ditto. * cygtls.cc (_cygtls::handle_threadlist_exception ): Ditto. (_cygtls::init_exception_handler): Add kludge to terminate linked list with a loop, which seems to solve problem of RtlUnwind causing problems * exceptions.cc (rtl_unwind): Use real exception_list parameter type rather than void *. (_cygtls::handle_exceptions): Ditto.
Diffstat (limited to 'winsup/cygwin/exceptions.cc')
-rw-r--r--winsup/cygwin/exceptions.cc7
1 files changed, 4 insertions, 3 deletions
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index 9851183fc..66f111ef8 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -381,9 +381,9 @@ try_to_debug (bool waitloop)
}
extern "C" DWORD __stdcall RtlUnwind (void *, void *, void *, DWORD);
-static void __stdcall rtl_unwind (void *, PEXCEPTION_RECORD) __attribute__ ((noinline, regparm (3)));
+static void __stdcall rtl_unwind (exception_list *, PEXCEPTION_RECORD) __attribute__ ((noinline, regparm (3)));
void __stdcall
-rtl_unwind (void *frame, PEXCEPTION_RECORD e)
+rtl_unwind (exception_list *frame, PEXCEPTION_RECORD e)
{
__asm__ ("\n\
pushl %%ebx \n\
@@ -404,7 +404,7 @@ rtl_unwind (void *frame, PEXCEPTION_RECORD e)
/* Main exception handler. */
int
-_cygtls::handle_exceptions (EXCEPTION_RECORD *e, void *frame, CONTEXT *in, void *)
+_cygtls::handle_exceptions (EXCEPTION_RECORD *e, exception_list *frame, CONTEXT *in, void *)
{
static bool NO_COPY debugging;
static int NO_COPY recursed;
@@ -509,6 +509,7 @@ _cygtls::handle_exceptions (EXCEPTION_RECORD *e, void *frame, CONTEXT *in, void
}
rtl_unwind (frame, e);
+
debug_printf ("In cygwin_except_handler exc %p at %p sp %p", e->ExceptionCode, in->Eip, in->Esp);
debug_printf ("In cygwin_except_handler sig %d at %p", si.si_signo, in->Eip);