qemu/gdbstub
Matheus Tavares Bernardino 6c78de6eb6 gdbstub: use 0 ("any process") on packets with no PID
Previously, qemu-user would always report PID 1 to GDB. This was changed
at dc14a7a6e9 (gdbstub: Report the actual qemu-user pid, 2023-06-30),
but read_thread_id() still considers GDB packets with "no PID" as "PID
1", which is not the qemu-user PID. Fix that by parsing "no PID" as "0",
which the GDB Remote Protocol defines as "any process".

Note that this should have no effect for system emulation as, in this
case, gdb_create_default_process() will assign PID 1 for the first
process and that is what the gdbstub uses for GDB requests with no PID,
or PID 0.

This issue was found with hexagon-lldb, which sends a "Hg" packet with
only the thread-id, but no process-id, leading to the invalid usage of
"PID 1" by qemu-hexagon and a subsequent "E22" reply.

Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
Acked-by: Ilya Leoshkevich <iii@linux.ibm.com>
Message-Id: <78a3b06f6ab90a7ff8e73ae14a996eb27ec76c85.1690904195.git.quic_mathbern@quicinc.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2023-08-06 10:10:11 -07:00
..
gdbstub.c gdbstub: use 0 ("any process") on packets with no PID 2023-08-06 10:10:11 -07:00
internals.h gdbstub: Add support for info proc mappings 2023-07-03 12:52:34 +01:00
meson.build meson: Replace softmmu_ss -> system_ss 2023-06-20 10:01:30 +02:00
softmmu.c gdbstub: lightly refactor connection to avoid snprintf 2023-07-03 12:52:30 +01:00
syscalls.c gdbstub: Build syscall.c once 2023-03-07 20:44:09 +00:00
trace-events gdbstub: move chunk of softmmu functionality to own file 2023-03-07 17:06:41 +00:00
trace.h
user-target.c gdbstub: Add support for info proc mappings 2023-07-03 12:52:34 +01:00
user.c gdbstub: only send stop-reply packets when allowed to 2023-05-18 12:40:52 -07:00