[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v9 14/27] gdbstub: Implement read all registers
From: |
Alex Bennée |
Subject: |
Re: [Qemu-devel] [PATCH v9 14/27] gdbstub: Implement read all registers (g pkt) with new infra |
Date: |
Wed, 15 May 2019 17:10:54 +0100 |
User-agent: |
mu4e 1.3.1; emacs 26.1 |
Jon Doron <address@hidden> writes:
> Signed-off-by: Jon Doron <address@hidden>
> ---
> gdbstub.c | 31 +++++++++++++++++++++++--------
> 1 file changed, 23 insertions(+), 8 deletions(-)
>
> diff --git a/gdbstub.c b/gdbstub.c
> index adfe39b3a3..3478ac778d 100644
> --- a/gdbstub.c
> +++ b/gdbstub.c
> @@ -1757,6 +1757,21 @@ static void handle_write_all_regs(GdbCmdContext
> *gdb_ctx, void *user_ctx)
> put_packet(gdb_ctx->s, "OK");
> }
>
> +static void handle_read_all_regs(GdbCmdContext *gdb_ctx, void *user_ctx)
> +{
> + target_ulong addr, len;
> +
> + cpu_synchronize_state(gdb_ctx->s->g_cpu);
> + len = 0;
> + for (addr = 0; addr < gdb_ctx->s->g_cpu->gdb_num_g_regs; addr++) {
> + len += gdb_read_register(gdb_ctx->s->g_cpu, gdb_ctx->mem_buf + len,
> + addr);
> + }
Again no bounds checking - we get away with it because for hppa:
(* 8 128 2) = 2048
Anyway:
Reviewed-by: Alex Bennée <address@hidden>
> +
> + memtohex(gdb_ctx->str_buf, gdb_ctx->mem_buf, len);
> + put_packet(gdb_ctx->s, gdb_ctx->str_buf);
> +}
> +
> static int gdb_handle_packet(GDBState *s, const char *line_buf)
> {
> CPUState *cpu;
> @@ -1764,7 +1779,7 @@ static int gdb_handle_packet(GDBState *s, const char
> *line_buf)
> CPUClass *cc;
> const char *p;
> uint32_t pid, tid;
> - int ch, reg_size, type, res;
> + int ch, type, res;
> uint8_t mem_buf[MAX_PACKET_LENGTH];
> char buf[sizeof(mem_buf) + 1 /* trailing NUL */];
> char thread_id[16];
> @@ -1923,14 +1938,14 @@ static int gdb_handle_packet(GDBState *s, const char
> *line_buf)
> }
> break;
> case 'g':
> - cpu_synchronize_state(s->g_cpu);
> - len = 0;
> - for (addr = 0; addr < s->g_cpu->gdb_num_g_regs; addr++) {
> - reg_size = gdb_read_register(s->g_cpu, mem_buf + len, addr);
> - len += reg_size;
> + {
> + static const GdbCmdParseEntry read_all_regs_cmd_desc = {
> + .handler = handle_read_all_regs,
> + .cmd = "g",
> + .cmd_startswith = 1
> + };
> + cmd_parser = &read_all_regs_cmd_desc;
> }
> - memtohex(buf, mem_buf, len);
> - put_packet(s, buf);
> break;
> case 'G':
> {
--
Alex Bennée
- [Qemu-devel] [PATCH v9 01/27] gdbstub: Add infrastructure to parse cmd packets, (continued)
- [Qemu-devel] [PATCH v9 01/27] gdbstub: Add infrastructure to parse cmd packets, Jon Doron, 2019/05/02
- [Qemu-devel] [PATCH v9 02/27] gdbstub: Implement deatch (D pkt) with new infra, Jon Doron, 2019/05/02
- [Qemu-devel] [PATCH v9 03/27] gdbstub: Implement thread_alive (T pkt) with new infra, Jon Doron, 2019/05/02
- [Qemu-devel] [PATCH v9 04/27] gdbstub: Implement continue (c pkt) with new infra, Jon Doron, 2019/05/02
- [Qemu-devel] [PATCH v9 14/27] gdbstub: Implement read all registers (g pkt) with new infra, Jon Doron, 2019/05/02
- Re: [Qemu-devel] [PATCH v9 14/27] gdbstub: Implement read all registers (g pkt) with new infra,
Alex Bennée <=
- [Qemu-devel] [PATCH v9 10/27] gdbstub: Implement get register (p pkt) with new infra, Jon Doron, 2019/05/02
- [Qemu-devel] [PATCH v9 09/27] gdbstub: Implement set register (P pkt) with new infra, Jon Doron, 2019/05/02
- [Qemu-devel] [PATCH v9 17/27] gdbstub: Implement v commands with new infra, Jon Doron, 2019/05/02
- [Qemu-devel] [PATCH v9 06/27] gdbstub: Implement set_thread (H pkt) with new infra, Jon Doron, 2019/05/02