aboutsummaryrefslogtreecommitdiff
path: root/gdb/inftarg.c
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2003-11-07 21:33:37 +0000
committerAndrew Cagney <cagney@redhat.com>2003-11-07 21:33:37 +0000
commitf168dd8007e67f2572a89da61a25066944a0a3db (patch)
treef8651ca66dadb65b871b755b85f442bb2026b64a /gdb/inftarg.c
parent05580c65ad432b4dfab9283a4573bc812835375a (diff)
downloadgdb-f168dd8007e67f2572a89da61a25066944a0a3db.zip
gdb-f168dd8007e67f2572a89da61a25066944a0a3db.tar.gz
gdb-f168dd8007e67f2572a89da61a25066944a0a3db.tar.bz2
2003-11-07 Andrew Cagney <cagney@redhat.com>
* inftarg.c (child_xfer_partial): New function (init_child_ops): Set "to_xfer_partial".
Diffstat (limited to 'gdb/inftarg.c')
-rw-r--r--gdb/inftarg.c42
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;