[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 01/11] gdbstub: Support disablement in a multi-threaded proces
From: |
Ilya Leoshkevich |
Subject: |
[PATCH v2 01/11] gdbstub: Support disablement in a multi-threaded process |
Date: |
Mon, 5 Feb 2024 12:22:15 +0100 |
The upcoming follow-fork-mode child support will require disabling
gdbstub in the parent process, which may have multiple threads (which
are represented as CPUs).
Loop over all CPUs in order to remove watchpoints and disable
single-step. Move the respective code into a separate function.
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
---
gdbstub/user.c | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
diff --git a/gdbstub/user.c b/gdbstub/user.c
index 8f3affbad47..e6809da2243 100644
--- a/gdbstub/user.c
+++ b/gdbstub/user.c
@@ -356,16 +356,27 @@ int gdbserver_start(const char *port_or_path)
return -1;
}
+static void disable_gdbstub(void)
+{
+ CPUState *cpu;
+
+ close(gdbserver_user_state.fd);
+ gdbserver_user_state.fd = -1;
+ CPU_FOREACH(cpu) {
+ cpu_breakpoint_remove_all(cpu, BP_GDB);
+ /* no cpu_watchpoint_remove_all for user-mode */
+ cpu_single_step(cpu, 0);
+ tb_flush(cpu);
+ }
+}
+
/* Disable gdb stub for child processes. */
void gdbserver_fork(CPUState *cpu)
{
if (!gdbserver_state.init || gdbserver_user_state.fd < 0) {
return;
}
- close(gdbserver_user_state.fd);
- gdbserver_user_state.fd = -1;
- cpu_breakpoint_remove_all(cpu, BP_GDB);
- /* no cpu_watchpoint_remove_all for user-mode */
+ disable_gdbstub();
}
/*
--
2.43.0
- [PATCH v2 00/11] gdbstub: Implement follow-fork-mode child, Ilya Leoshkevich, 2024/02/05
- [PATCH v2 01/11] gdbstub: Support disablement in a multi-threaded process,
Ilya Leoshkevich <=
- [PATCH v2 03/11] gdbstub: Introduce gdbserver_fork_start(), Ilya Leoshkevich, 2024/02/05
- [PATCH v2 04/11] {linux,bsd}-user: Pass pid to fork_end(), Ilya Leoshkevich, 2024/02/05
- [PATCH v2 06/11] gdbstub: Call gdbserver_fork() both in parent and in child, Ilya Leoshkevich, 2024/02/05
- [PATCH v2 02/11] {linux,bsd}-user: Update ts_tid after fork(), Ilya Leoshkevich, 2024/02/05
- [PATCH v2 05/11] {linux,bsd}-user: Pass pid to gdbserver_fork(), Ilya Leoshkevich, 2024/02/05
- [PATCH v2 10/11] gdbstub: Implement follow-fork-mode child, Ilya Leoshkevich, 2024/02/05
- [PATCH v2 08/11] gdbstub: Introduce gdb_handle_set_thread_user(), Ilya Leoshkevich, 2024/02/05
- [PATCH v2 09/11] gdbstub: Introduce gdb_handle_detach_user(), Ilya Leoshkevich, 2024/02/05
- [PATCH v2 11/11] tests/tcg: Add two follow-fork-mode tests, Ilya Leoshkevich, 2024/02/05
- [PATCH v2 07/11] gdbstub: Introduce gdb_handle_query_supported_user(), Ilya Leoshkevich, 2024/02/05