gdbstub: fix gdb_get_cpu(s, pid, tid) when pid and/or tid are 0
commitab65eed3f82b57459ef8c45f75a89241f16cbad8
authorLuc Michel <luc.michel@greensocs.com>
Tue, 29 Jan 2019 11:46:03 +0000 (29 11:46 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 29 Jan 2019 11:46:03 +0000 (29 11:46 +0000)
tree9559c800c0c709bb87d438f7443b0e3a947cabe6
parent7e3f122367ec56ea2e8b7313cef82162eb7538c7
gdbstub: fix gdb_get_cpu(s, pid, tid) when pid and/or tid are 0

a TID or PID value means "any thread" (resp. "any process"). This commit
fixes the different combinations when at least one value is 0.

When both are 0, the function now returns the first attached CPU,
instead of the CPU with TID 1, which is not necessarily attached or even
existent.

When PID is specified but TID is 0, the function returns the first CPU
in the process, or NULL if the process does not exist or is not
attached.

In other cases, it returns the corresponding CPU, while ignoring the PID
check when PID is 0.

Reported-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Luc Michel <luc.michel@greensocs.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20190119140000.11767-1-luc.michel@greensocs.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
gdbstub.c