diff options
Diffstat (limited to 'gdb/inftarg.c')
-rw-r--r-- | gdb/inftarg.c | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/gdb/inftarg.c b/gdb/inftarg.c index 05036b6..fd02ad0 100644 --- a/gdb/inftarg.c +++ b/gdb/inftarg.c @@ -551,7 +551,46 @@ child_core_file_to_sym_file (char *core) */ return NULL; } - + +/* Perform a partial transfer to/from the specified object. For + memory transfers, fall back to the old memory xfer functions. */ + +static LONGEST +child_xfer_partial (struct target_ops *ops, + enum target_object object, + const char *annex, const void *writebuf, + void *readbuf, ULONGEST offset, LONGEST len) +{ + switch (object) + { + case TARGET_OBJECT_MEMORY: + if (readbuf) + return child_xfer_memory (offset, readbuf, len, 0/*write*/, + NULL, ops); + if (writebuf) + return child_xfer_memory (offset, readbuf, len, 1/*write*/, + NULL, ops); + return -1; + +#if 0 + case TARGET_OBJECT_UNWIND_TABLE: +#ifndef NATIVE_XFER_UNWIND_TABLE +#define NATIVE_XFER_UNWIND_TABLE(OPS,OBJECT,ANNEX,WRITEBUF,READBUF,OFFSET,LEN) (-1) +#endif + return NATIVE_XFER_UNWIND_TABLE (ops, object, annex, writebuf, + readbuf, offset, len); +#endif + +#if 0 + case TARGET_OBJECT_AUXV: + return native_xfer_auxv (PIDGET (inferior_ptid), writebuf, readbuf, + offset, len); +#endif + + default: + return -1; + } +} #if !defined(CHILD_PID_TO_STR) char * @@ -578,6 +617,7 @@ init_child_ops (void) child_ops.to_store_registers = store_inferior_registers; child_ops.to_prepare_to_store = child_prepare_to_store; child_ops.to_xfer_memory = child_xfer_memory; + child_ops.to_xfer_partial = child_xfer_partial; child_ops.to_files_info = child_files_info; child_ops.to_insert_breakpoint = memory_insert_breakpoint; child_ops.to_remove_breakpoint = memory_remove_breakpoint; |