On 10/26/18 1:16 AM, 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 get confused if it receives packets with a
s/get/gets/g
Acked-by: Alistair Francis <alistair.francis@wdc.com>
Alistair
> thread-id it does not know about.
>
> Signed-off-by: Luc Michel <luc.michel@greensocs.com>
> ---
> gdbstub.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/gdbstub.c b/gdbstub.c
> index b3461eff9e..09480df2bf 100644
> --- a/gdbstub.c
> +++ b/gdbstub.c
> @@ -1784,10 +1784,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
>