Message ID | 20181115094207.22846-15-luc.michel@greensocs.com |
---|---|
State | New |
Headers | show |
Series | gdbstub: support for the multiprocess extension | expand |
On Thu, Nov 15, 2018 at 10:42:05AM +0100, Luc Michel wrote: > 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> > --- > gdbstub.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/gdbstub.c b/gdbstub.c > index 59eed3b878..89819a6a72 100644 > --- a/gdbstub.c > +++ b/gdbstub.c > @@ -1787,10 +1787,19 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf) > return RS_IDLE; > } > > 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; > } > > #ifndef CONFIG_USER_ONLY > -- > 2.19.1 >
diff --git a/gdbstub.c b/gdbstub.c index 59eed3b878..89819a6a72 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1787,10 +1787,19 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf) return RS_IDLE; } 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; } #ifndef CONFIG_USER_ONLY