Re: [Qemu-devel] [PATCH v9 16/27] gdbstub: Implement step (s pkt) with new infra

2019-05-15 Thread Alex Bennée


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 **), 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 = _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

2019-05-02 Thread Jon Doron
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 **), 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 = _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