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.mic...@greensocs.com> > Acked-by: Alistair Francis <alistair.fran...@wdc.com>
Reviewed-by: Edgar E. Iglesias <edgar.igles...@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 >