From: Andrew Cagney Date: Fri, 7 Nov 2003 21:33:37 +0000 (+0000) Subject: 2003-11-07 Andrew Cagney X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f168dd8007e67f2572a89da61a25066944a0a3db;p=binutils-gdb.git 2003-11-07 Andrew Cagney * inftarg.c (child_xfer_partial): New function (init_child_ops): Set "to_xfer_partial". --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index adce433df2f..a0628f31884 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2003-11-07 Andrew Cagney + + * inftarg.c (child_xfer_partial): New function + (init_child_ops): Set "to_xfer_partial". + 2003-11-07 Andrew Cagney * ppc-linux-tdep.c (ppc_linux_init_abi): When 32-bit GNU/Linux, diff --git a/gdb/inftarg.c b/gdb/inftarg.c index 05036b6267a..fd02ad03cf2 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;