mirror of https://github.com/xemu-project/xemu.git
gdbstub: add support for vAttach packets
Add support for the vAttach packets. In multiprocess mode, GDB sends them to attach to additional processes. Signed-off-by: Luc Michel <luc.michel@greensocs.com> Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com> Acked-by: Alistair Francis <alistair.francis@wdc.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-id: 20181207090135.7651-13-luc.michel@greensocs.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
53fd655415
commit
3f940dc988
35
gdbstub.c
35
gdbstub.c
|
@ -1348,6 +1348,41 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf)
|
|||
goto unknown_command;
|
||||
}
|
||||
break;
|
||||
} else if (strncmp(p, "Attach;", 7) == 0) {
|
||||
unsigned long pid;
|
||||
|
||||
p += 7;
|
||||
|
||||
if (qemu_strtoul(p, &p, 16, &pid)) {
|
||||
put_packet(s, "E22");
|
||||
break;
|
||||
}
|
||||
|
||||
process = gdb_get_process(s, pid);
|
||||
|
||||
if (process == NULL) {
|
||||
put_packet(s, "E22");
|
||||
break;
|
||||
}
|
||||
|
||||
cpu = get_first_cpu_in_process(s, process);
|
||||
|
||||
if (cpu == NULL) {
|
||||
/* Refuse to attach an empty process */
|
||||
put_packet(s, "E22");
|
||||
break;
|
||||
}
|
||||
|
||||
process->attached = true;
|
||||
|
||||
s->g_cpu = cpu;
|
||||
s->c_cpu = cpu;
|
||||
|
||||
snprintf(buf, sizeof(buf), "T%02xthread:%s;", GDB_SIGNAL_TRAP,
|
||||
gdb_fmt_thread_id(s, cpu, thread_id, sizeof(thread_id)));
|
||||
|
||||
put_packet(s, buf);
|
||||
break;
|
||||
} else {
|
||||
goto unknown_command;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue