mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-29 04:53:56 +08:00
* win32-low.c (child_xfer_memory): Check if ReadProcessMemory
or WriteProcessMemory complete successfully and handle ERROR_PARTIAL_COPY error.
This commit is contained in:
parent
9a13b2fa01
commit
cee83bcb49
@ -1,3 +1,9 @@
|
||||
2013-09-02 Pierre Muller <muller@sourceware.org>
|
||||
|
||||
* win32-low.c (child_xfer_memory): Check if ReadProcessMemory
|
||||
or WriteProcessMemory complete successfully and handle
|
||||
ERROR_PARTIAL_COPY error.
|
||||
|
||||
2013-09-02 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* server.c (gdb_read_memory): Return -1 on traceframe memory read
|
||||
|
@ -278,21 +278,30 @@ static int
|
||||
child_xfer_memory (CORE_ADDR memaddr, char *our, int len,
|
||||
int write, struct target_ops *target)
|
||||
{
|
||||
SIZE_T done;
|
||||
BOOL success;
|
||||
SIZE_T done = 0;
|
||||
DWORD lasterror = 0;
|
||||
uintptr_t addr = (uintptr_t) memaddr;
|
||||
|
||||
if (write)
|
||||
{
|
||||
WriteProcessMemory (current_process_handle, (LPVOID) addr,
|
||||
(LPCVOID) our, len, &done);
|
||||
success = WriteProcessMemory (current_process_handle, (LPVOID) addr,
|
||||
(LPCVOID) our, len, &done);
|
||||
if (!success)
|
||||
lasterror = GetLastError ();
|
||||
FlushInstructionCache (current_process_handle, (LPCVOID) addr, len);
|
||||
}
|
||||
else
|
||||
{
|
||||
ReadProcessMemory (current_process_handle, (LPCVOID) addr, (LPVOID) our,
|
||||
len, &done);
|
||||
success = ReadProcessMemory (current_process_handle, (LPCVOID) addr,
|
||||
(LPVOID) our, len, &done);
|
||||
if (!success)
|
||||
lasterror = GetLastError ();
|
||||
}
|
||||
return done;
|
||||
if (!success && lasterror == ERROR_PARTIAL_COPY && done > 0)
|
||||
return done;
|
||||
else
|
||||
return success ? done : -1;
|
||||
}
|
||||
|
||||
/* Clear out any old thread list and reinitialize it to a pristine
|
||||
|
Loading…
Reference in New Issue
Block a user