[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH RESEND 3/6] gdbstub: Report the actual qemu-user pid
|
From: |
Ilya Leoshkevich |
|
Subject: |
[PATCH RESEND 3/6] gdbstub: Report the actual qemu-user pid |
|
Date: |
Wed, 10 May 2023 22:26:51 +0200 |
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.
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
---
gdbstub/gdbstub.c | 25 +++++++++++++++++--------
1 file changed, 17 insertions(+), 8 deletions(-)
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
index 207250c1c08..003db59b1b2 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)
@@ -2127,19 +2130,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.40.1
- [PATCH RESEND 0/6] gdbstub: Add support for info proc mappings, Ilya Leoshkevich, 2023/05/10
- [PATCH RESEND 2/6] gdbstub: Expose gdb_get_process() and gdb_get_first_cpu_in_process(), Ilya Leoshkevich, 2023/05/10
- [PATCH RESEND 1/6] linux-user: Expose do_guest_openat() and do_guest_readlink(), Ilya Leoshkevich, 2023/05/10
- [PATCH RESEND 5/6] docs: Document security implications of debugging, Ilya Leoshkevich, 2023/05/10
- [PATCH RESEND 6/6] tests/tcg: Add a test for info proc mappings, Ilya Leoshkevich, 2023/05/10
- [PATCH RESEND 4/6] gdbstub: Add support for info proc mappings, Ilya Leoshkevich, 2023/05/10
- [PATCH RESEND 3/6] gdbstub: Report the actual qemu-user pid,
Ilya Leoshkevich <=
- PING: [PATCH RESEND 0/6] gdbstub: Add support for info proc mappings, Ilya Leoshkevich, 2023/05/24