[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 33/36] gdbstub: Report the actual qemu-user pid
From: |
Alex Bennée |
Subject: |
[PATCH v3 33/36] gdbstub: Report the actual qemu-user pid |
Date: |
Tue, 27 Jun 2023 17:09:40 +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 v3 10/36] Makefile: add lcitool-refresh to UNCHECKED_GOALS, (continued)
- [PATCH v3 10/36] Makefile: add lcitool-refresh to UNCHECKED_GOALS, Alex Bennée, 2023/06/27
- [PATCH v3 17/36] plugins: force slow path when plugins instrument memory ops, Alex Bennée, 2023/06/27
- [PATCH v3 34/36] gdbstub: Add support for info proc mappings, Alex Bennée, 2023/06/27
- [PATCH v3 22/36] include/hw/qdev-core: fixup kerneldoc annotations, Alex Bennée, 2023/06/27
- [PATCH v3 19/36] plugins: update lockstep to use g_memdup2, Alex Bennée, 2023/06/27
- [PATCH v3 24/36] docs/devel: split qom-api reference into new file, Alex Bennée, 2023/06/27
- [PATCH v3 33/36] gdbstub: Report the actual qemu-user pid,
Alex Bennée <=
- [PATCH v3 23/36] docs/devel/qom.rst: Correct code style, Alex Bennée, 2023/06/27
- [PATCH v3 32/36] gdbstub: Expose gdb_get_process() and gdb_get_first_cpu_in_process(), Alex Bennée, 2023/06/27
- [PATCH v3 29/36] linux-user: Expose do_guest_openat() and do_guest_readlink(), Alex Bennée, 2023/06/27
- [PATCH v3 36/36] tests/tcg: Add a test for info proc mappings, Alex Bennée, 2023/06/27
- [PATCH v3 28/36] gdbstub: clean-up vcont handling to avoid goto, Alex Bennée, 2023/06/27
- [PATCH v3 20/36] docs/devel: add some front matter to the devel index, Alex Bennée, 2023/06/27
- [PATCH v3 31/36] linux-user: Emulate /proc/self/smaps, Alex Bennée, 2023/06/27