aboutsummaryrefslogtreecommitdiff
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
parent01ab5147dde03719aa21da62f545fd6ac2dce50f (diff)
downloadnewlib-fa35814af1fe24f596142c993f050f5eb0a74914.zip
newlib-fa35814af1fe24f596142c993f050f5eb0a74914.tar.gz
newlib-fa35814af1fe24f596142c993f050f5eb0a74914.tar.bz2
* exceptions.cc (exception::handle): Resurrect accidentally lost
patch from 2009-07-22: Set si_addr according to POSIX for SIGSEGV.
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/exceptions.cc3
2 files changed, 7 insertions, 1 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index da887a6..3d18cd5 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,8 @@
+2013-06-02 Corinna Vinschen <corinna@vinschen.de>
+
+ * exceptions.cc (exception::handle): Resurrect accidentally lost
+ patch from 2009-07-22: Set si_addr according to POSIX for SIGSEGV.
+
2013-05-31 Corinna Vinschen <corinna@vinschen.de>
* include/sys/socket.h: Move SHUT_xx definitoins from here...
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index 31d84bd..abb9735 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--;