Re: [Qemu-devel] [PATCH v9 16/27] gdbstub: Implement step (s pkt) with new infra
Jon Doron writes: > Signed-off-by: Jon Doron Reviewed-by: Alex Bennée > --- > gdbstub.c | 25 +++-- > 1 file changed, 19 insertions(+), 6 deletions(-) > > diff --git a/gdbstub.c b/gdbstub.c > index 9fe130f30d..9b0556f8be 100644 > --- a/gdbstub.c > +++ b/gdbstub.c > @@ -1805,6 +1805,16 @@ static void handle_file_io(GdbCmdContext *gdb_ctx, > void *user_ctx) > gdb_continue(gdb_ctx->s); > } > > +static void handle_step(GdbCmdContext *gdb_ctx, void *user_ctx) > +{ > +if (gdb_ctx->num_params) { > +gdb_set_cpu_pc(gdb_ctx->s, (target_ulong)gdb_ctx->params[0].val_ull); > +} > + > +cpu_single_step(gdb_ctx->s->c_cpu, sstep_flags); > +gdb_continue(gdb_ctx->s); > +} > + > static int gdb_handle_packet(GDBState *s, const char *line_buf) > { > CPUState *cpu; > @@ -1937,13 +1947,16 @@ static int gdb_handle_packet(GDBState *s, const char > *line_buf) > } > break; > case 's': > -if (*p != '\0') { > -addr = strtoull(p, (char **)&p, 16); > -gdb_set_cpu_pc(s, addr); > +{ > +static const GdbCmdParseEntry step_cmd_desc = { > +.handler = handle_step, > +.cmd = "s", > +.cmd_startswith = 1, > +.schema = "L0" > +}; > +cmd_parser = &step_cmd_desc; > } > -cpu_single_step(s->c_cpu, sstep_flags); > -gdb_continue(s); > -return RS_IDLE; > +break; > case 'F': > { > static const GdbCmdParseEntry file_io_cmd_desc = { -- Alex Bennée
[Qemu-devel] [PATCH v9 16/27] gdbstub: Implement step (s pkt) with new infra
Signed-off-by: Jon Doron --- gdbstub.c | 25 +++-- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 9fe130f30d..9b0556f8be 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1805,6 +1805,16 @@ static void handle_file_io(GdbCmdContext *gdb_ctx, void *user_ctx) gdb_continue(gdb_ctx->s); } +static void handle_step(GdbCmdContext *gdb_ctx, void *user_ctx) +{ +if (gdb_ctx->num_params) { +gdb_set_cpu_pc(gdb_ctx->s, (target_ulong)gdb_ctx->params[0].val_ull); +} + +cpu_single_step(gdb_ctx->s->c_cpu, sstep_flags); +gdb_continue(gdb_ctx->s); +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { CPUState *cpu; @@ -1937,13 +1947,16 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf) } break; case 's': -if (*p != '\0') { -addr = strtoull(p, (char **)&p, 16); -gdb_set_cpu_pc(s, addr); +{ +static const GdbCmdParseEntry step_cmd_desc = { +.handler = handle_step, +.cmd = "s", +.cmd_startswith = 1, +.schema = "L0" +}; +cmd_parser = &step_cmd_desc; } -cpu_single_step(s->c_cpu, sstep_flags); -gdb_continue(s); -return RS_IDLE; +break; case 'F': { static const GdbCmdParseEntry file_io_cmd_desc = { -- 2.20.1