summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--overlay/mgdb/gdb/winnt-nat.c22
1 files 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)