summaryrefslogtreecommitdiff
path: root/overlay/mgdb/gdb/winnt-nat.c
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2019-10-02 04:41:47 +0000
committermidipix <writeonce@midipix.org>2019-10-02 12:05:02 +0000
commit8b65913ee3762406f572713655b9f232eaaaa4f8 (patch)
treed0e48ad860c0e75d2bccdff349fad03cdb4344f3 /overlay/mgdb/gdb/winnt-nat.c
parent5b9bafb41534db64efc1ef42c922f3293762c89e (diff)
downloadchainport-8b65913ee3762406f572713655b9f232eaaaa4f8.tar.bz2
chainport-8b65913ee3762406f572713655b9f232eaaaa4f8.tar.xz
mgdb: winnt_dbg_signal(): initial implementation and integration.
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: