diff mbox series

[PULL,16/37] gdbstub: gdb_set_stop_cpu: ignore request when process is not attached

Message ID 20190107163117.16269-17-peter.maydell@linaro.org
State Accepted
Commit 160d858dd6c62c4b523350d89cfa75f212f49b92
Headers show
Series target-arm queue | expand

Commit Message

Peter Maydell Jan. 7, 2019, 4:30 p.m. UTC
From: Luc Michel <luc.michel@greensocs.com>


When gdb_set_stop_cpu() is called with a CPU associated to a process
currently not attached by the GDB client, return without modifying the
stop CPU. Otherwise, GDB gets confused if it receives packets with a
thread-id it does not know about.

Signed-off-by: Luc Michel <luc.michel@greensocs.com>

Acked-by: Alistair Francis <alistair.francis@wdc.com>

Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>

Message-id: 20181207090135.7651-15-luc.michel@greensocs.com
[PMM: fix checkpatch comment style nit]
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

---
 gdbstub.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

-- 
2.19.2
diff mbox series

Patch

diff --git a/gdbstub.c b/gdbstub.c
index 432e7d2f7da..1517563abe1 100644
--- a/gdbstub.c
+++ b/gdbstub.c
@@ -1798,6 +1798,16 @@  static int gdb_handle_packet(GDBState *s, const char *line_buf)
 
 void gdb_set_stop_cpu(CPUState *cpu)
 {
+    GDBProcess *p = gdb_get_cpu_process(gdbserver_state, cpu);
+
+    if (!p->attached) {
+        /*
+         * Having a stop CPU corresponding to a process that is not attached
+         * confuses GDB. So we ignore the request.
+         */
+        return;
+    }
+
     gdbserver_state->c_cpu = cpu;
     gdbserver_state->g_cpu = cpu;
 }