From 8b65913ee3762406f572713655b9f232eaaaa4f8 Mon Sep 17 00:00:00 2001 From: midipix Date: Wed, 2 Oct 2019 04:41:47 +0000 Subject: mgdb: winnt_dbg_signal(): initial implementation and integration. --- overlay/mgdb/gdb/winnt-nat.c | 13 ++++++++++++- overlay/mgdb/gdb/winnt-nat.h | 2 ++ 2 files changed, 14 insertions(+), 1 deletion(-) 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; -- cgit v1.2.3