On 9/1/18 9:46 AM, Luc Michel wrote:
> Change the sC packet handling to support the multiprocess extension.
> Instead of returning the first thread, we return the first thread of the
> current process.
>
> Signed-off-by: Luc Michel <luc.michel@greensocs.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> gdbstub.c | 11 ++++++++---
> 1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/gdbstub.c b/gdbstub.c
> index 2cb9cb6d97..c15250ce65 100644
> --- a/gdbstub.c
> +++ b/gdbstub.c
> @@ -1531,13 +1531,18 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf)
> type = strtoul(p, (char **)&p, 16);
> sstep_flags = type;
> put_packet(s, "OK");
> break;
> } else if (strcmp(p,"C") == 0) {
> - /* "Current thread" remains vague in the spec, so always return
> - * the first CPU (gdb returns the first thread). */
> - put_packet(s, "QC1");
> + /* "Current thread" remains vague in the spec, so always return the
> + * first thread of the current process (gdb returns the first
> + * thread).
> + */
> + cpu = get_first_cpu_in_process(s, gdb_get_cpu_process(s, s->g_cpu));
> + snprintf(buf, sizeof(buf), "QC%s",
> + get_thread_id(s, cpu, thread_id, sizeof(thread_id)));
> + put_packet(s, buf);
> break;
> } else if (strcmp(p,"fThreadInfo") == 0) {
> s->query_cpu = first_cpu;
> goto report_cpuinfo;
> } else if (strcmp(p,"sThreadInfo") == 0) {
>