diff options
| -rw-r--r-- | gdbstub_rsp.c | 4 | ||||
| -rw-r--r-- | x86/gdbstub_sys.c | 7 |
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; |
