[PATCH] [WineDbg]: implemented the pXX request in gdb proxy

Eric Pouech eric.pouech at orange.fr
Fri Feb 1 14:26:47 CST 2008




A+
---

 programs/winedbg/gdbproxy.c |   29 ++++++++++++++++++++++++++++-
 1 files changed, 28 insertions(+), 1 deletions(-)

diff --git a/programs/winedbg/gdbproxy.c b/programs/winedbg/gdbproxy.c
index 4f83c72..d68bff4 100644
--- a/programs/winedbg/gdbproxy.c
+++ b/programs/winedbg/gdbproxy.c
@@ -1385,6 +1385,33 @@ static enum packet_return packet_write_memory(struct gdb_context* gdbctx)
     return packet_ok; /* FIXME: error while writing ? */
 }
 
+static enum packet_return packet_read_register(struct gdb_context* gdbctx)
+{
+    unsigned            reg;
+    CONTEXT             ctx;
+    CONTEXT*            pctx = &gdbctx->context;
+
+    assert(gdbctx->in_trap);
+    reg = hex_to_int(gdbctx->in_packet, gdbctx->in_packet_len);
+    if (reg >= cpu_num_regs)
+    {
+        if (gdbctx->trace & GDBPXY_TRC_COMMAND_ERROR)
+            fprintf(stderr, "Register out of bounds %x (%x)\n", reg, cpu_num_regs);
+        return packet_error;
+    }
+    if (dbg_curr_thread != gdbctx->other_thread && gdbctx->other_thread)
+    {
+        if (!fetch_context(gdbctx, gdbctx->other_thread->handle, pctx = &ctx))
+            return packet_error;
+    }
+    if (gdbctx->trace & GDBPXY_TRC_COMMAND)
+        fprintf(stderr, "Read register %x => %lx\n", reg, *cpu_register(pctx, reg));
+    packet_reply_open(gdbctx);
+    packet_reply_hex_to(gdbctx, cpu_register(pctx, reg), 4);
+    packet_reply_close(gdbctx);
+    return packet_done;
+}
+
 static enum packet_return packet_write_register(struct gdb_context* gdbctx)
 {
     unsigned            reg;
@@ -1931,7 +1958,7 @@ static struct packet_entry packet_entries[] =
         {'H', packet_thread},
         {'m', packet_read_memory},
         {'M', packet_write_memory},
-        /* {'p', packet_read_register}, doesn't seem needed */
+        {'p', packet_read_register},
         {'P', packet_write_register},
         {'q', packet_query},
         /* {'Q', packet_set}, */





More information about the wine-patches mailing list