summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/exceptions.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2013-06-02 09:11:09 +0000
committerCorinna Vinschen <corinna@vinschen.de>2013-06-02 09:11:09 +0000
commitfa35814af1fe24f596142c993f050f5eb0a74914 (patch)
tree0a4cb192d7bf2de816f3e9c25fda5aa40a8bc4af /winsup/cygwin/exceptions.cc
parent01ab5147dde03719aa21da62f545fd6ac2dce50f (diff)
downloadcygnal-fa35814af1fe24f596142c993f050f5eb0a74914.tar.gz
cygnal-fa35814af1fe24f596142c993f050f5eb0a74914.tar.bz2
cygnal-fa35814af1fe24f596142c993f050f5eb0a74914.zip
* exceptions.cc (exception::handle): Resurrect accidentally lost
patch from 2009-07-22: Set si_addr according to POSIX for SIGSEGV.
Diffstat (limited to 'winsup/cygwin/exceptions.cc')
-rw-r--r--winsup/cygwin/exceptions.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index 31d84bd24..abb973528 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -753,7 +753,8 @@ exception::handle (EXCEPTION_RECORD *e, exception_list *frame, CONTEXT *in, void
}
cygwin_exception exc (framep, in, e);
si.si_cyg = (void *) &exc;
- si.si_addr = (void *) in->_GR(ip);
+ si.si_addr = (si.si_signo == SIGSEGV || si.si_signo == SIGBUS)
+ ? (void *) e->ExceptionInformation[1] : (void *) in->_GR(ip);
me.incyg++;
sig_send (NULL, si, &me); /* Signal myself */
me.incyg--;