[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 35/38] gdbstub: Report the actual qemu-user pid
From: |
Alex Bennée |
Subject: |
[PATCH v4 35/38] gdbstub: Report the actual qemu-user pid |
Date: |
Fri, 30 Jun 2023 19:04:20 +0100 |
From: Ilya Leoshkevich <iii@linux.ibm.com>
Currently qemu-user reports pid 1 to GDB. Resolve the TODO and report
the actual PID. Using getpid() relies on the assumption that there is
only one GDBProcess. Add an assertion to make sure that future changes
don't break it.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Message-Id: <20230621203627.1808446-6-iii@linux.ibm.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
gdbstub/gdbstub.c | 25 +++++++++++++++++--------
1 file changed, 17 insertions(+), 8 deletions(-)
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
index ce3e4a2671..697dd4bbad 100644
--- a/gdbstub/gdbstub.c
+++ b/gdbstub/gdbstub.c
@@ -202,13 +202,16 @@ void gdb_memtox(GString *buf, const char *mem, int len)
static uint32_t gdb_get_cpu_pid(CPUState *cpu)
{
- /* TODO: In user mode, we should use the task state PID */
+#ifdef CONFIG_USER_ONLY
+ return getpid();
+#else
if (cpu->cluster_index == UNASSIGNED_CLUSTER_INDEX) {
/* Return the default process' PID */
int index = gdbserver_state.process_num - 1;
return gdbserver_state.processes[index].pid;
}
return cpu->cluster_index + 1;
+#endif
}
GDBProcess *gdb_get_process(uint32_t pid)
@@ -2137,19 +2140,25 @@ void gdb_read_byte(uint8_t ch)
void gdb_create_default_process(GDBState *s)
{
GDBProcess *process;
- int max_pid = 0;
+ int pid;
+#ifdef CONFIG_USER_ONLY
+ assert(gdbserver_state.process_num == 0);
+ pid = getpid();
+#else
if (gdbserver_state.process_num) {
- max_pid = s->processes[s->process_num - 1].pid;
+ pid = s->processes[s->process_num - 1].pid;
+ } else {
+ pid = 0;
}
+ /* We need an available PID slot for this process */
+ assert(pid < UINT32_MAX);
+ pid++;
+#endif
s->processes = g_renew(GDBProcess, s->processes, ++s->process_num);
process = &s->processes[s->process_num - 1];
-
- /* We need an available PID slot for this process */
- assert(max_pid < UINT32_MAX);
-
- process->pid = max_pid + 1;
+ process->pid = pid;
process->attached = false;
process->target_xml[0] = '\0';
}
--
2.39.2
- [PATCH v4 27/38] docs/devel: introduce some key concepts for QOM development, (continued)
- [PATCH v4 27/38] docs/devel: introduce some key concepts for QOM development, Alex Bennée, 2023/06/30
- [PATCH v4 21/38] plugins: update lockstep to use g_memdup2, Alex Bennée, 2023/06/30
- [PATCH v4 36/38] gdbstub: Add support for info proc mappings, Alex Bennée, 2023/06/30
- [PATCH v4 33/38] linux-user: Emulate /proc/self/smaps, Alex Bennée, 2023/06/30
- [PATCH v4 34/38] gdbstub: Expose gdb_get_process() and gdb_get_first_cpu_in_process(), Alex Bennée, 2023/06/30
- [PATCH v4 31/38] linux-user: Expose do_guest_openat() and do_guest_readlink(), Alex Bennée, 2023/06/30
- [PATCH v4 16/38] tests/avocado: update firmware to enable sbsa-ref/max, Alex Bennée, 2023/06/30
- [PATCH v4 25/38] docs/devel/qom.rst: Correct code style, Alex Bennée, 2023/06/30
- [PATCH v4 29/38] gdbstub: Permit reverse step/break to provide stop response, Alex Bennée, 2023/06/30
- [PATCH v4 17/38] tests/avocado: Make the test_arm_bpim2u_gmac test more reliable, Alex Bennée, 2023/06/30
- [PATCH v4 35/38] gdbstub: Report the actual qemu-user pid,
Alex Bennée <=
- [PATCH v4 24/38] include/hw/qdev-core: fixup kerneldoc annotations, Alex Bennée, 2023/06/30
- [PATCH v4 18/38] target/arm: make arm_casq_ptw CONFIG_TCG only, Alex Bennée, 2023/06/30
- [PATCH v4 23/38] include/migration: mark vmstate_register() as a legacy function, Alex Bennée, 2023/06/30
- [PATCH v4 15/38] tests/docker: convert riscv64-cross to lcitool, Alex Bennée, 2023/06/30
- [PATCH v4 22/38] docs/devel: add some front matter to the devel index, Alex Bennée, 2023/06/30
- [PATCH v4 19/38] plugins: force slow path when plugins instrument memory ops, Alex Bennée, 2023/06/30