aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Borgerson <contact@mborgerson.com>2019-12-17 19:20:52 -0700
committerMatt Borgerson <contact@mborgerson.com>2019-12-17 19:20:52 -0700
commitf2b1a466daf3cbe6e624b8de265fc02872c2d954 (patch)
tree3232920fdbd2487eda31c57c26f0403125ecd57c
parented95fd840dcf5cd22fda0c7fd4abd4561f58a265 (diff)
downloadgdbstub-f2b1a466daf3cbe6e624b8de265fc02872c2d954.tar.gz
Report signal number instead of vector number
-rw-r--r--gdbstub_rsp.c4
-rw-r--r--x86/gdbstub_sys.c7
2 files changed, 8 insertions, 3 deletions
diff --git a/gdbstub_rsp.c b/gdbstub_rsp.c
index 6fad6c2..b2a5ae6 100644
--- a/gdbstub_rsp.c
+++ b/gdbstub_rsp.c
@@ -748,7 +748,7 @@ int dbg_main(struct dbg_state *state)
size_t pkt_len;
const char *ptr_next;
- dbg_send_signal_packet(pkt_buf, sizeof(pkt_buf), 0);
+ dbg_send_signal_packet(pkt_buf, sizeof(pkt_buf), state->signum);
while (1) {
/* Receive the next packet */
@@ -942,7 +942,7 @@ int dbg_main(struct dbg_state *state)
return 0;
case '?':
- dbg_send_signal_packet(pkt_buf, sizeof(pkt_buf), 0);
+ dbg_send_signal_packet(pkt_buf, sizeof(pkt_buf), state->signum);
break;
/*
diff --git a/x86/gdbstub_sys.c b/x86/gdbstub_sys.c
index 8919c21..a73bc52 100644
--- a/x86/gdbstub_sys.c
+++ b/x86/gdbstub_sys.c
@@ -175,7 +175,12 @@ void dbg_interrupt(struct dbg_interrupt_state *istate)
{
dbg_sys_memset(&dbg_state.registers, 0, sizeof(dbg_state.registers));
- dbg_state.signum = istate->vector;
+ /* Translate vector to signal */
+ switch (istate->vector) {
+ case 1: dbg_state.signum = 5; break;
+ case 3: dbg_state.signum = 5; break;
+ default: dbg_state.signum = 7;
+ }
/* Load Registers */
dbg_state.registers[DBG_CPU_I386_REG_EAX] = istate->eax;