Commit 160d858d authored by Luc Michel's avatar Luc Michel Committed by Peter Maydell
Browse files

gdbstub: gdb_set_stop_cpu: ignore request when process is not attached



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: default avatarLuc Michel <luc.michel@greensocs.com>
Acked-by: default avatarAlistair Francis <alistair.francis@wdc.com>
Reviewed-by: default avatarEdgar E. Iglesias <edgar.iglesias@xilinx.com>
Message-id: 20181207090135.7651-15-luc.michel@greensocs.com
[PMM: fix checkpatch comment style nit]
Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
parent 970ed906
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -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;
}