aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Bennée <alex.bennee@linaro.org>2023-12-01 09:36:27 +0000
committerAlex Bennée <alex.bennee@linaro.org>2023-12-01 14:00:52 +0000
commit5dcf6334ae1af158ec149794c3f35e459b98df5e (patch)
tree58d457341d13e2102edc1ee9174ef3ba83bada31
parentabf635ddfe3242df907f58967f3c1e6763bbca2d (diff)
downloadqemu-5dcf6334ae1af158ec149794c3f35e459b98df5e.zip
qemu-5dcf6334ae1af158ec149794c3f35e459b98df5e.tar.gz
qemu-5dcf6334ae1af158ec149794c3f35e459b98df5e.tar.bz2
gdbstub: use a better signal when we halt for IO reasons
The gdb description GDB_SIGNAL_IO is "I/O possible" and by default gdb will try and restart the guest, getting us nowhere. Report GDB_SIGNAL_STOP instead which should at least halt the session at the failure point. Reviewed-by: Luis Machado <luis.machado@arm.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Acked-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20231201093633.2551497-2-alex.bennee@linaro.org>
-rw-r--r--gdbstub/internals.h1
-rw-r--r--gdbstub/system.c2
2 files changed, 2 insertions, 1 deletions
diff --git a/gdbstub/internals.h b/gdbstub/internals.h
index 465c24b..5c0c725 100644
--- a/gdbstub/internals.h
+++ b/gdbstub/internals.h
@@ -24,6 +24,7 @@ enum {
GDB_SIGNAL_TRAP = 5,
GDB_SIGNAL_ABRT = 6,
GDB_SIGNAL_ALRM = 14,
+ GDB_SIGNAL_STOP = 17,
GDB_SIGNAL_IO = 23,
GDB_SIGNAL_XCPU = 24,
GDB_SIGNAL_UNKNOWN = 143
diff --git a/gdbstub/system.c b/gdbstub/system.c
index 783ac14..83fd452 100644
--- a/gdbstub/system.c
+++ b/gdbstub/system.c
@@ -183,7 +183,7 @@ static void gdb_vm_state_change(void *opaque, bool running, RunState state)
break;
case RUN_STATE_IO_ERROR:
trace_gdbstub_hit_io_error();
- ret = GDB_SIGNAL_IO;
+ ret = GDB_SIGNAL_STOP;
break;
case RUN_STATE_WATCHDOG:
trace_gdbstub_hit_watchdog();