From: Jon Doron <arilou@gmail.com> To: qemu-devel@nongnu.org Cc: alex.bennee@linaro.org, liran.alon@oracle.com, Jon Doron <arilou@gmail.com> Subject: [Qemu-devel] [PATCH v8 12/27] gdbstub: Implement read memory (m pkt) with new infra Date: Thu, 2 May 2019 10:26:26 +0300 [thread overview] Message-ID: <20190502072641.4667-13-arilou@gmail.com> (raw) In-Reply-To: <20190502072641.4667-1-arilou@gmail.com> Signed-off-by: Jon Doron <arilou@gmail.com> --- gdbstub.c | 48 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 8dc2e1d507..daa602edc3 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1710,6 +1710,30 @@ static void handle_write_mem(GdbCmdContext *gdb_ctx, void *user_ctx) put_packet(gdb_ctx->s, "OK"); } +static void handle_read_mem(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + if (gdb_ctx->num_params < 2) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + /* memtohex() doubles the required space */ + if (gdb_ctx->params[1].val_ull > MAX_PACKET_LENGTH / 2) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + if (target_memory_rw_debug(gdb_ctx->s->g_cpu, gdb_ctx->params[0].val_ull, + gdb_ctx->mem_buf, + gdb_ctx->params[1].val_ull, false)) { + put_packet(gdb_ctx->s, "E14"); + return; + } + + memtohex(gdb_ctx->str_buf, gdb_ctx->mem_buf, gdb_ctx->params[1].val_ull); + put_packet(gdb_ctx->s, gdb_ctx->str_buf); +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { CPUState *cpu; @@ -1899,22 +1923,14 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf) put_packet(s, "OK"); break; case 'm': - addr = strtoull(p, (char **)&p, 16); - if (*p == ',') - p++; - len = strtoull(p, NULL, 16); - - /* memtohex() doubles the required space */ - if (len > MAX_PACKET_LENGTH / 2) { - put_packet (s, "E22"); - break; - } - - if (target_memory_rw_debug(s->g_cpu, addr, mem_buf, len, false) != 0) { - put_packet (s, "E14"); - } else { - memtohex(buf, mem_buf, len); - put_packet(s, buf); + { + static const GdbCmdParseEntry read_mem_cmd_desc = { + .handler = handle_read_mem, + .cmd = "m", + .cmd_startswith = 1, + .schema = "L,L0" + }; + cmd_parser = &read_mem_cmd_desc; } break; case 'M': -- 2.20.1
WARNING: multiple messages have this Message-ID (diff)
From: Jon Doron <arilou@gmail.com> To: qemu-devel@nongnu.org Cc: liran.alon@oracle.com, alex.bennee@linaro.org, Jon Doron <arilou@gmail.com> Subject: [Qemu-devel] [PATCH v8 12/27] gdbstub: Implement read memory (m pkt) with new infra Date: Thu, 2 May 2019 10:26:26 +0300 [thread overview] Message-ID: <20190502072641.4667-13-arilou@gmail.com> (raw) Message-ID: <20190502072626.V4t_U_yvHZXf_4ec7DiFOLS0_F66rQBsjzHJN6jfvUA@z> (raw) In-Reply-To: <20190502072641.4667-1-arilou@gmail.com> Signed-off-by: Jon Doron <arilou@gmail.com> --- gdbstub.c | 48 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 8dc2e1d507..daa602edc3 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1710,6 +1710,30 @@ static void handle_write_mem(GdbCmdContext *gdb_ctx, void *user_ctx) put_packet(gdb_ctx->s, "OK"); } +static void handle_read_mem(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + if (gdb_ctx->num_params < 2) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + /* memtohex() doubles the required space */ + if (gdb_ctx->params[1].val_ull > MAX_PACKET_LENGTH / 2) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + if (target_memory_rw_debug(gdb_ctx->s->g_cpu, gdb_ctx->params[0].val_ull, + gdb_ctx->mem_buf, + gdb_ctx->params[1].val_ull, false)) { + put_packet(gdb_ctx->s, "E14"); + return; + } + + memtohex(gdb_ctx->str_buf, gdb_ctx->mem_buf, gdb_ctx->params[1].val_ull); + put_packet(gdb_ctx->s, gdb_ctx->str_buf); +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { CPUState *cpu; @@ -1899,22 +1923,14 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf) put_packet(s, "OK"); break; case 'm': - addr = strtoull(p, (char **)&p, 16); - if (*p == ',') - p++; - len = strtoull(p, NULL, 16); - - /* memtohex() doubles the required space */ - if (len > MAX_PACKET_LENGTH / 2) { - put_packet (s, "E22"); - break; - } - - if (target_memory_rw_debug(s->g_cpu, addr, mem_buf, len, false) != 0) { - put_packet (s, "E14"); - } else { - memtohex(buf, mem_buf, len); - put_packet(s, buf); + { + static const GdbCmdParseEntry read_mem_cmd_desc = { + .handler = handle_read_mem, + .cmd = "m", + .cmd_startswith = 1, + .schema = "L,L0" + }; + cmd_parser = &read_mem_cmd_desc; } break; case 'M': -- 2.20.1
next prev parent reply other threads:[~2019-05-02 7:30 UTC|newest] Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-05-02 7:26 [Qemu-devel] [PATCH v8 00/27] gdbstub: Refactor command packets handler Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 01/27] gdbstub: Add infrastructure to parse cmd packets Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 02/27] gdbstub: Implement deatch (D pkt) with new infra Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 03/27] gdbstub: Implement thread_alive (T " Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 04/27] gdbstub: Implement continue (c " Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 05/27] gdbstub: Implement continue with signal (C " Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 06/27] gdbstub: Implement set_thread (H " Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 07/27] gdbstub: Implement insert breakpoint (Z " Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 08/27] gdbstub: Implement remove breakpoint (z " Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 09/27] gdbstub: Implement set register (P " Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 10/27] gdbstub: Implement get register (p " Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 11/27] gdbstub: Implement write memory (M " Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` Jon Doron [this message] 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 12/27] gdbstub: Implement read memory (m " Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 13/27] gdbstub: Implement write all registers (G " Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 14/27] gdbstub: Implement read all registers (g " Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 15/27] gdbstub: Implement file io (F " Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 16/27] gdbstub: Implement step (s " Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 17/27] gdbstub: Implement v commands " Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 18/27] gdbstub: Implement generic query (q pkt) " Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 19/27] gdbstub: Implement generic set (Q " Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 20/27] gdbstub: Implement target halted (? " Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 21/27] gdbstub: Clear unused variables in gdb_handle_packet Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 22/27] gdbstub: Implement generic query qemu.Supported Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 23/27] gdbstub: Implement qemu physical memory mode Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 24/27] gdbstub: Add another handler for setting qemu.sstep Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 25/27] kvm: Add API to read/write a CPU MSR value Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 26/27] gdbstub: Add support to read a MSR for KVM target Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:26 ` [Qemu-devel] [PATCH v8 27/27] gdbstub: Add support to write " Jon Doron 2019-05-02 7:26 ` Jon Doron 2019-05-02 7:53 ` [Qemu-devel] [PATCH v8 00/27] gdbstub: Refactor command packets handler no-reply 2019-05-02 7:53 ` no-reply
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190502072641.4667-13-arilou@gmail.com \ --to=arilou@gmail.com \ --cc=alex.bennee@linaro.org \ --cc=liran.alon@oracle.com \ --cc=qemu-devel@nongnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).