Skip to content

Commit

Permalink
gdbstub: tidy away reverse debugging check into function
Browse files Browse the repository at this point in the history
In theory we don't need an actual record/replay to enact reverse
debugging on a purely deterministic system (i.e one with no external
inputs running under icount). Tidy away the logic into a little
function.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20210520174303.12310-8-alex.bennee@linaro.org>
  • Loading branch information
stsquad committed May 25, 2021
1 parent 0c25abd commit 6b8559b
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 additions & 2 deletions gdbstub.c
Expand Up @@ -465,6 +465,15 @@ int use_gdb_syscalls(void)
return gdb_syscall_mode == GDB_SYS_ENABLED;
}

static bool stub_can_reverse(void)
{
#ifdef CONFIG_USER_ONLY
return false;
#else
return replay_mode == REPLAY_MODE_PLAY;
#endif
}

/* Resume execution. */
static inline void gdb_continue(void)
{
Expand Down Expand Up @@ -1880,7 +1889,7 @@ static void handle_step(GArray *params, void *user_ctx)

static void handle_backward(GArray *params, void *user_ctx)
{
if (replay_mode != REPLAY_MODE_PLAY) {
if (!stub_can_reverse()) {
put_packet("E22");
}
if (params->len == 1) {
Expand Down Expand Up @@ -2153,7 +2162,7 @@ static void handle_query_supported(GArray *params, void *user_ctx)
g_string_append(gdbserver_state.str_buf, ";qXfer:features:read+");
}

if (replay_mode == REPLAY_MODE_PLAY) {
if (stub_can_reverse()) {
g_string_append(gdbserver_state.str_buf,
";ReverseStep+;ReverseContinue+");
}
Expand Down

0 comments on commit 6b8559b

Please sign in to comment.