windows-nat.c: Don't install a deprecated_xfer_memory method.

This stops another target from installing a
target_ops->deprecated_xfer_memory method.

Tested on native MinGW.

gdb/
2013-08-27  Pedro Alves  <palves@redhat.com>

	* windows-nat.c (windows_xfer_memory): Adjust prototype to follow
	xfer_partial's interface.  Return TARGET_XFER_E_IO on error.
	(windows_xfer_partial): Defer TARGET_OBJECT_MEMORY handling to
	windows_xfer_memory directly.
	(init_windows_ops): Don't install a deprecated_xfer_memory method.
This commit is contained in:
Pedro Alves 2013-08-27 11:36:09 +00:00
parent d28d46b554
commit 44f3886761
2 changed files with 25 additions and 22 deletions

View File

@ -1,3 +1,11 @@
2013-08-27 Pedro Alves <palves@redhat.com>
* windows-nat.c (windows_xfer_memory): Adjust prototype to follow
xfer_partial's interface. Return TARGET_XFER_E_IO on error.
(windows_xfer_partial): Defer TARGET_OBJECT_MEMORY handling to
windows_xfer_memory directly.
(init_windows_ops): Don't install a deprecated_xfer_memory method.
2013-08-27 Pedro Alves <palves@redhat.com> 2013-08-27 Pedro Alves <palves@redhat.com>
* darwin-nat.c (darwin_xfer_memory): Delete. * darwin-nat.c (darwin_xfer_memory): Delete.

View File

@ -2315,20 +2315,23 @@ windows_stop (ptid_t ptid)
registers_changed (); /* refresh register state */ registers_changed (); /* refresh register state */
} }
static int /* Helper for windows_xfer_partial that handles memory transfers.
windows_xfer_memory (CORE_ADDR memaddr, gdb_byte *our, int len, Arguments are like target_xfer_partial. */
int write, struct mem_attrib *mem,
struct target_ops *target) static LONGEST
windows_xfer_memory (gdb_byte *readbuf, const gdb_byte *writebuf,
ULONGEST memaddr, LONGEST len)
{ {
SIZE_T done = 0; SIZE_T done = 0;
if (write) BOOL success;
if (writebuf != NULL)
{ {
DEBUG_MEM (("gdb: write target memory, %d bytes at %s\n", DEBUG_MEM (("gdb: write target memory, %d bytes at %s\n",
len, core_addr_to_string (memaddr))); len, core_addr_to_string (memaddr)));
if (!WriteProcessMemory (current_process_handle, success = WriteProcessMemory (current_process_handle,
(LPVOID) (uintptr_t) memaddr, our, (LPVOID) (uintptr_t) memaddr, writebuf,
len, &done)) len, &done);
done = 0;
FlushInstructionCache (current_process_handle, FlushInstructionCache (current_process_handle,
(LPCVOID) (uintptr_t) memaddr, len); (LPCVOID) (uintptr_t) memaddr, len);
} }
@ -2336,12 +2339,11 @@ windows_xfer_memory (CORE_ADDR memaddr, gdb_byte *our, int len,
{ {
DEBUG_MEM (("gdb: read target memory, %d bytes at %s\n", DEBUG_MEM (("gdb: read target memory, %d bytes at %s\n",
len, core_addr_to_string (memaddr))); len, core_addr_to_string (memaddr)));
if (!ReadProcessMemory (current_process_handle, success = ReadProcessMemory (current_process_handle,
(LPCVOID) (uintptr_t) memaddr, our, (LPCVOID) (uintptr_t) memaddr, readbuf,
len, &done)) len, &done);
done = 0;
} }
return done; return success ? done : TARGET_XFER_E_IO;
} }
static void static void
@ -2442,13 +2444,7 @@ windows_xfer_partial (struct target_ops *ops, enum target_object object,
switch (object) switch (object)
{ {
case TARGET_OBJECT_MEMORY: case TARGET_OBJECT_MEMORY:
if (readbuf) return windows_xfer_memory (readbuf, writebuf, offset, len);
return (*ops->deprecated_xfer_memory) (offset, readbuf,
len, 0/*read*/, NULL, ops);
if (writebuf)
return (*ops->deprecated_xfer_memory) (offset, (gdb_byte *) writebuf,
len, 1/*write*/, NULL, ops);
return -1;
case TARGET_OBJECT_LIBRARIES: case TARGET_OBJECT_LIBRARIES:
return windows_xfer_shared_libraries (ops, object, annex, readbuf, return windows_xfer_shared_libraries (ops, object, annex, readbuf,
@ -2502,7 +2498,6 @@ init_windows_ops (void)
windows_ops.to_fetch_registers = windows_fetch_inferior_registers; windows_ops.to_fetch_registers = windows_fetch_inferior_registers;
windows_ops.to_store_registers = windows_store_inferior_registers; windows_ops.to_store_registers = windows_store_inferior_registers;
windows_ops.to_prepare_to_store = windows_prepare_to_store; windows_ops.to_prepare_to_store = windows_prepare_to_store;
windows_ops.deprecated_xfer_memory = windows_xfer_memory;
windows_ops.to_xfer_partial = windows_xfer_partial; windows_ops.to_xfer_partial = windows_xfer_partial;
windows_ops.to_files_info = windows_files_info; windows_ops.to_files_info = windows_files_info;
windows_ops.to_insert_breakpoint = memory_insert_breakpoint; windows_ops.to_insert_breakpoint = memory_insert_breakpoint;