On Fri, 5 Jul 2024 at 11:47, Alex Bennée <alex.ben...@linaro.org> wrote: > > From: Gustavo Romero <gustavo.rom...@linaro.org> > > Allow passing the current CPU context to command handlers via user_ctx > when the handler requires it. > > Signed-off-by: Gustavo Romero <gustavo.rom...@linaro.org> > Signed-off-by: Alex Bennée <alex.ben...@linaro.org> > Message-Id: <20240628050850.536447-9-gustavo.rom...@linaro.org> > --- > include/gdbstub/commands.h | 3 +++ > gdbstub/gdbstub.c | 7 ++++++- > 2 files changed, 9 insertions(+), 1 deletion(-) > > diff --git a/include/gdbstub/commands.h b/include/gdbstub/commands.h > index e51f276b40..f3058f9dda 100644 > --- a/include/gdbstub/commands.h > +++ b/include/gdbstub/commands.h > @@ -54,6 +54,8 @@ typedef union GdbCmdVariant { > * "stop reply" packet. The list of commands that accept such response is > * defined at the GDB Remote Serial Protocol documentation. See: > * > https://sourceware.org/gdb/onlinedocs/gdb/Stop-Reply-Packets.html#Stop-Reply-Packets. > + * > + * @need_cpu_context: Pass current CPU context to command handler via > user_ctx. > */ > typedef struct GdbCmdParseEntry { > GdbCmdHandler handler; > @@ -61,6 +63,7 @@ typedef struct GdbCmdParseEntry { > bool cmd_startswith; > const char *schema; > bool allow_stop_reply; > + bool need_cpu_context; > } GdbCmdParseEntry; > > /** > diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c > index b1ca253f97..5c1612ed2a 100644 > --- a/gdbstub/gdbstub.c > +++ b/gdbstub/gdbstub.c > @@ -938,6 +938,7 @@ static bool process_string_cmd(const char *data, > > for (i = 0; i < num_cmds; i++) { > const GdbCmdParseEntry *cmd = &cmds[i]; > + void *user_ctx = NULL; > g_assert(cmd->handler && cmd->cmd); > > if ((cmd->cmd_startswith && !startswith(data, cmd->cmd)) || > @@ -952,8 +953,12 @@ static bool process_string_cmd(const char *data, > } > } > > + if (cmd->need_cpu_context) { > + user_ctx = (void *)gdbserver_state.g_cpu; > + } > + > gdbserver_state.allow_stop_reply = cmd->allow_stop_reply; > - cmd->handler(params, NULL); > + cmd->handler(params, user_ctx); > return true; > } > > -- > 2.39.2 >
Reviewed-by: Manos Pitsidianakis <manos.pitsidiana...@linaro.org>