diff options
Diffstat (limited to 'overlay/mgdb/gdb/winnt-nat.c')
-rw-r--r-- | overlay/mgdb/gdb/winnt-nat.c | 13 |
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: |