diff options
| author | Matt Borgerson <contact@mborgerson.com> | 2019-12-17 19:20:52 -0700 |
|---|---|---|
| committer | Matt Borgerson <contact@mborgerson.com> | 2019-12-17 19:20:52 -0700 |
| commit | f2b1a466daf3cbe6e624b8de265fc02872c2d954 (patch) | |
| tree | 3232920fdbd2487eda31c57c26f0403125ecd57c | |
| parent | ed95fd840dcf5cd22fda0c7fd4abd4561f58a265 (diff) | |
| download | gdbstub-f2b1a466daf3cbe6e624b8de265fc02872c2d954.tar.gz | |
Report signal number instead of vector number
| -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; |
