summaryrefslogtreecommitdiff
path: root/overlay/mgdb/gdb/winnt-nat.c
diff options
context:
space:
mode:
Diffstat (limited to 'overlay/mgdb/gdb/winnt-nat.c')
-rw-r--r--overlay/mgdb/gdb/winnt-nat.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/overlay/mgdb/gdb/winnt-nat.c b/overlay/mgdb/gdb/winnt-nat.c
index 2c0628e..de2cf69 100644
--- a/overlay/mgdb/gdb/winnt-nat.c
+++ b/overlay/mgdb/gdb/winnt-nat.c
@@ -887,6 +887,17 @@ static int winnt_exception_filter_match(struct __dbg_event * event)
return 0;
}
+static enum gdb_signal winnt_dbg_signal(struct __dbg_event * event)
+{
+ switch (event->exception_record->exception_code) {
+ case WINNT_STATUS_ACCESS_VIOLATION:
+ return GDB_SIGNAL_SEGV;
+
+ default:
+ return GDB_SIGNAL_UNKNOWN;
+ }
+}
+
static struct __dbg_event * winnt_wait_event(ptid_t ptid)
{
struct __dbg_event event;
@@ -995,7 +1006,7 @@ static ptid_t winnt_wait(
switch (event->evttype) {
case __DBG_STATE_EXCEPTION:
waitstatus->kind = TARGET_WAITKIND_STOPPED;
- waitstatus->value.sig = GDB_SIGNAL_UNKNOWN;
+ waitstatus->value.sig = winnt_dbg_signal(event);
break;
case __DBG_STATE_BREAKPOINT: