summaryrefslogtreecommitdiff
path: root/overlay/mgdb/gdb/winnt-nat.c
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2019-11-06 01:26:05 +0000
committermidipix <writeonce@midipix.org>2019-11-06 01:26:05 +0000
commit382d10628243cad78df82b8de564eefc7a235de1 (patch)
tree91e64c7395ce76aef6bb58074e1ec46f1151cfdd /overlay/mgdb/gdb/winnt-nat.c
parent81c2eaf028916fa9397ed8e14a5d409e5fa11356 (diff)
downloadchainport-382d10628243cad78df82b8de564eefc7a235de1.tar.bz2
chainport-382d10628243cad78df82b8de564eefc7a235de1.tar.xz
mgdb: winnt_wait(): properly handle the syscall layer's internal breakpoints.
Diffstat (limited to 'overlay/mgdb/gdb/winnt-nat.c')
-rw-r--r--overlay/mgdb/gdb/winnt-nat.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/overlay/mgdb/gdb/winnt-nat.c b/overlay/mgdb/gdb/winnt-nat.c
index 16e7b3c..ff4cc68 100644
--- a/overlay/mgdb/gdb/winnt-nat.c
+++ b/overlay/mgdb/gdb/winnt-nat.c
@@ -990,12 +990,19 @@ static ptid_t winnt_wait(
if (!(event = winnt_wait_event(ptid)))
return null_ptid;
- if ((fskip = winnt_exception_filter_match(event))) {
+ fskip = winnt_exception_filter_match(event)
+ || (event->evtattr & __DBG_EVENT_ATTR_INTERNAL_BREAKPOINT);
+
+ if (fskip) {
if (!(process = winnt_process_record(event->syspid)))
return null_ptid;
- if (event->exception_priority)
+ if (event->evtattr & __DBG_EVENT_ATTR_INTERNAL_BREAKPOINT)
+ eresponse = __DBG_RESPONSE_CONTINUE;
+
+ else if (event->exception_priority)
eresponse = __DBG_RESPONSE_EXCEPTION_NOT_HANDLED;
+
else
eresponse = __DBG_RESPONSE_CONTINUE;