diff options
Diffstat (limited to 'overlay/mgdb')
-rw-r--r-- | overlay/mgdb/gdb/winnt-nat.c | 13 | ||||
-rw-r--r-- | overlay/mgdb/gdb/winnt-nat.h | 2 |
2 files changed, 14 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: diff --git a/overlay/mgdb/gdb/winnt-nat.h b/overlay/mgdb/gdb/winnt-nat.h index 593a140..6dcab69 100644 --- a/overlay/mgdb/gdb/winnt-nat.h +++ b/overlay/mgdb/gdb/winnt-nat.h @@ -22,6 +22,8 @@ #define WINNT_EXCEPTION_SECOND_CHANCE 0x02 #define WINNT_EXCEPTION_ALL 0xffffffff +#define WINNT_STATUS_ACCESS_VIOLATION 0xC0000005 + struct regcache; struct winnt_process; |