[PATCH 07/15] winedbg: Support partial qXfer replies.
Rémi Bernon
rbernon at codeweavers.com
Mon Jan 27 06:07:10 CST 2020
Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
programs/winedbg/gdbproxy.c | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/programs/winedbg/gdbproxy.c b/programs/winedbg/gdbproxy.c
index e845485ae98..fdab2a9755f 100644
--- a/programs/winedbg/gdbproxy.c
+++ b/programs/winedbg/gdbproxy.c
@@ -775,6 +775,35 @@ static void packet_reply_close(struct gdb_context* gdbctx)
gdbctx->out_curr_packet = -1;
}
+static void packet_reply_open_xfer(struct gdb_context* gdbctx)
+{
+ packet_reply_open(gdbctx);
+ packet_reply_add(gdbctx, "m");
+}
+
+static void packet_reply_close_xfer(struct gdb_context* gdbctx, int off, int len)
+{
+ int begin = gdbctx->out_curr_packet + 1;
+ int plen;
+
+ if (begin + off < gdbctx->out_len)
+ {
+ gdbctx->out_len -= off;
+ memmove(gdbctx->out_buf + begin, gdbctx->out_buf + begin + off, gdbctx->out_len);
+ }
+ else
+ {
+ gdbctx->out_buf[gdbctx->out_curr_packet] = 'l';
+ gdbctx->out_len = gdbctx->out_curr_packet + 1;
+ }
+
+ plen = gdbctx->out_len - begin;
+ if (len >= 0 && plen > len) gdbctx->out_len -= (plen - len);
+ else gdbctx->out_buf[gdbctx->out_curr_packet] = 'l';
+
+ packet_reply_close(gdbctx);
+}
+
static enum packet_return packet_reply(struct gdb_context* gdbctx, const char* packet)
{
packet_reply_open(gdbctx);
--
2.25.0
More information about the wine-devel
mailing list