mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-27 04:13:53 -06:00
gdbstub: Implement catching syscalls
GDB supports stopping on syscall entry and exit using the "catch syscall" command. It relies on 3 packets, which are currently not supported by QEMU: * qSupported:QCatchSyscalls+ [1] * QCatchSyscalls: [2] * T05syscall_entry: and T05syscall_return: [3] Implement generation and handling of these packets. [1] https://sourceware.org/gdb/current/onlinedocs/gdb.html/General-Query-Packets.html#qSupported [2] https://sourceware.org/gdb/current/onlinedocs/gdb.html/General-Query-Packets.html#QCatchSyscalls [3] https://sourceware.org/gdb/current/onlinedocs/gdb.html/Stop-Reply-Packets.html Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> Message-Id: <20240202152506.279476-5-iii@linux.ibm.com> [AJB: GString -> g_strdup_printf] Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20240207163812.3231697-14-alex.bennee@linaro.org>
This commit is contained in:
parent
0a0d87c9b8
commit
046f143c51
3 changed files with 101 additions and 0 deletions
|
@ -1617,6 +1617,7 @@ static void handle_query_supported(GArray *params, void *user_ctx)
|
|||
if (gdbserver_state.c_cpu->opaque) {
|
||||
g_string_append(gdbserver_state.str_buf, ";qXfer:auxv:read+");
|
||||
}
|
||||
g_string_append(gdbserver_state.str_buf, ";QCatchSyscalls+");
|
||||
#endif
|
||||
g_string_append(gdbserver_state.str_buf, ";qXfer:exec-file:read+");
|
||||
#endif
|
||||
|
@ -1810,6 +1811,14 @@ static const GdbCmdParseEntry gdb_gen_set_table[] = {
|
|||
.schema = "l0"
|
||||
},
|
||||
#endif
|
||||
#if defined(CONFIG_USER_ONLY)
|
||||
{
|
||||
.handler = gdb_handle_set_catch_syscalls,
|
||||
.cmd = "CatchSyscalls:",
|
||||
.cmd_startswith = 1,
|
||||
.schema = "s0",
|
||||
},
|
||||
#endif
|
||||
};
|
||||
|
||||
static void handle_gen_query(GArray *params, void *user_ctx)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue