monitor.c: Don't install a deprecated_xfer_memory method.

This removes another yet instance of a deprecated_xfer_memory user.

Tested by building a --enable-targets=all gdb, on x86-64 Fedora 17.

gdb/
2013-10-09  Pedro Alves  <palves@redhat.com>

	* monitor.c (monitor_write_memory, monitor_write_memory_bytes)
	(monitor_write_memory_longlongs, monitor_write_memory_block):
	Constify 'myaddr' parameter.
	(monitor_xfer_memory): Adjust interface as monitor_xfer_partial
	helper.
	(monitor_xfer_partial): New function.
	(init_base_monitor_ops): Don't install a deprecated_xfer_memory
	hook.  Install a to_xfer_partial hook.
This commit is contained in:
Pedro Alves 2013-10-09 15:55:17 +00:00
parent 6085f85378
commit 915215be09
2 changed files with 44 additions and 15 deletions

View File

@ -1,3 +1,14 @@
2013-10-09 Pedro Alves <palves@redhat.com>
* monitor.c (monitor_write_memory, monitor_write_memory_bytes)
(monitor_write_memory_longlongs, monitor_write_memory_block):
Constify 'myaddr' parameter.
(monitor_xfer_memory): Adjust interface as monitor_xfer_partial
helper.
(monitor_xfer_partial): New function.
(init_base_monitor_ops): Don't install a deprecated_xfer_memory
hook. Install a to_xfer_partial hook.
2013-10-09 Tom Tromey <tromey@redhat.com>
* dwarf2read.c (dwarf2_get_dwz_file): Update for type change in

View File

@ -1439,7 +1439,7 @@ monitor_files_info (struct target_ops *ops)
}
static int
monitor_write_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len)
monitor_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, int len)
{
enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
unsigned int val, hostval;
@ -1542,7 +1542,7 @@ monitor_write_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len)
static int
monitor_write_memory_bytes (CORE_ADDR memaddr, gdb_byte *myaddr, int len)
monitor_write_memory_bytes (CORE_ADDR memaddr, const gdb_byte *myaddr, int len)
{
unsigned char val;
int written = 0;
@ -1638,7 +1638,7 @@ longlong_hexchars (unsigned long long value,
Which possably entails endian conversions. */
static int
monitor_write_memory_longlongs (CORE_ADDR memaddr, gdb_byte *myaddr, int len)
monitor_write_memory_longlongs (CORE_ADDR memaddr, const gdb_byte *myaddr, int len)
{
static char hexstage[20]; /* At least 16 digits required, plus null. */
char *endstring;
@ -1686,7 +1686,7 @@ monitor_write_memory_longlongs (CORE_ADDR memaddr, gdb_byte *myaddr, int len)
monitor variations. */
static int
monitor_write_memory_block (CORE_ADDR memaddr, gdb_byte *myaddr, int len)
monitor_write_memory_block (CORE_ADDR memaddr, const gdb_byte *myaddr, int len)
{
int written;
@ -2015,31 +2015,49 @@ monitor_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len)
return len;
}
/* Transfer LEN bytes between target address MEMADDR and GDB address
MYADDR. Returns 0 for success, errno code for failure. TARGET is
unused. */
/* Helper for monitor_xfer_partial that handles memory transfers.
Arguments are like target_xfer_partial. */
static int
monitor_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len, int write,
struct mem_attrib *attrib, struct target_ops *target)
static LONGEST
monitor_xfer_memory (gdb_byte *readbuf, const gdb_byte *writebuf,
ULONGEST memaddr, LONGEST len)
{
int res;
if (write)
if (writebuf != NULL)
{
if (current_monitor->flags & MO_HAS_BLOCKWRITES)
res = monitor_write_memory_block(memaddr, myaddr, len);
res = monitor_write_memory_block (memaddr, writebuf, len);
else
res = monitor_write_memory(memaddr, myaddr, len);
res = monitor_write_memory (memaddr, writebuf, len);
}
else
{
res = monitor_read_memory(memaddr, myaddr, len);
res = monitor_read_memory (memaddr, readbuf, len);
}
if (res == 0)
return TARGET_XFER_E_IO;
return res;
}
/* Target to_xfer_partial implementation. */
static LONGEST
monitor_xfer_partial (struct target_ops *ops, enum target_object object,
const char *annex, gdb_byte *readbuf,
const gdb_byte *writebuf, ULONGEST offset, LONGEST len)
{
switch (object)
{
case TARGET_OBJECT_MEMORY:
return monitor_xfer_memory (readbuf, writebuf, offset, len);
default:
return TARGET_XFER_E_IO;
}
}
static void
monitor_kill (struct target_ops *ops)
{
@ -2344,7 +2362,7 @@ init_base_monitor_ops (void)
monitor_ops.to_fetch_registers = monitor_fetch_registers;
monitor_ops.to_store_registers = monitor_store_registers;
monitor_ops.to_prepare_to_store = monitor_prepare_to_store;
monitor_ops.deprecated_xfer_memory = monitor_xfer_memory;
monitor_ops.to_xfer_partial = monitor_xfer_partial;
monitor_ops.to_files_info = monitor_files_info;
monitor_ops.to_insert_breakpoint = monitor_insert_breakpoint;
monitor_ops.to_remove_breakpoint = monitor_remove_breakpoint;