From f8ee0138e4c3b517d6cfe42cd34287835dc98a45 Mon Sep 17 00:00:00 2001 From: midipix Date: Mon, 9 Sep 2019 05:06:17 +0000 Subject: mgdb: winnt_xfer_partial((): initial implementation. --- overlay/mgdb/gdb/winnt-nat.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/overlay/mgdb/gdb/winnt-nat.c b/overlay/mgdb/gdb/winnt-nat.c index 4458878..bcb4c5b 100644 --- a/overlay/mgdb/gdb/winnt-nat.c +++ b/overlay/mgdb/gdb/winnt-nat.c @@ -191,8 +191,15 @@ static enum target_xfer_status winnt_xfer_partial( (void)t; (void)object; (void)annex; - (void)offset; - (void)len; + + ssize_t ret; + pid_t pid; + struct winnt_process * pidinfo; + + pid = inferior_ptid.pid; + + if (!(pidinfo = winnt_process_record(pid))) + winnt_perror("internal error: record not found",pid); if (readbuf && writebuf) winnt_error("internal error: both readbuf and writebuf are non-null."); @@ -203,7 +210,16 @@ static enum target_xfer_status winnt_xfer_partial( if (!nxfered) winnt_error("internal error: nxfered is null."); - return TARGET_XFER_E_IO; + ret = (readbuf) + ? __dbg_vm_read(pidinfo->pfd,readbuf,len,offset) + : __dbg_vm_write(pidinfo->pfd,writebuf,len,offset); + + if (ret < 0) + return TARGET_XFER_E_IO; + + *nxfered = ret; + + return TARGET_XFER_OK; } static int winnt_thread_alive (struct target_ops * t, ptid_t ptid) -- cgit v1.2.3