* sparc-nat.c (inf_ptrace_xfer_partial): New variable.
authorMark Kettenis <kettenis@gnu.org>
Mon, 29 Nov 2004 08:41:56 +0000 (08:41 +0000)
committerMark Kettenis <kettenis@gnu.org>
Mon, 29 Nov 2004 08:41:56 +0000 (08:41 +0000)
(sparc_xfer_partial): New function.
(sparc_target): Save value of to_xfer_partial from ptrace vector.
Set to_xfer_partial.

gdb/ChangeLog
gdb/sparc-nat.c

index b7c605df3b9bcd83610d6686bf4ec7a6f5b6accb..14835cd0143d2d3e958aa7a51ef258d281a32ea1 100644 (file)
@@ -1,5 +1,10 @@
 2004-11-29  Mark Kettenis  <kettenis@gnu.org>
 
+       * sparc-nat.c (inf_ptrace_xfer_partial): New variable.
+       (sparc_xfer_partial): New function.
+       (sparc_target): Save value of to_xfer_partial from ptrace vector.
+       Set to_xfer_partial.
+
        * fork-child.c (fork_inferior): Fork instead of vfork if
        PRE_TRACE_FUN is non-null.
 
index a3836ce892ef5283af517d7c347fec3ddf6112ec..4bd7b7253849134a023a94a401860ae0bca93998 100644 (file)
@@ -305,6 +305,23 @@ sparc_xfer_wcookie (struct target_ops *ops, enum target_object object,
   memcpy (readbuf, buf + offset, len);
   return len;
 }
+
+LONGEST (*inf_ptrace_xfer_partial) (struct target_ops *, enum target_object,
+                                   const char *, void *, const void *,
+                                   ULONGEST, LONGEST);
+
+static LONGEST
+sparc_xfer_partial (struct target_ops *ops, enum target_object object,
+                   const char *annex, void *readbuf, const void *writebuf,
+                   ULONGEST offset, LONGEST len)
+{
+  if (object == TARGET_OBJECT_WCOOKIE)
+    return sparc_xfer_wcookie (ops, object, annex, readbuf, writebuf, 
+                              offset, len);
+
+  return inf_ptrace_xfer_partial (ops, object, annex, readbuf, writebuf,
+                                 offset, len);
+}
 \f
 /* Create a prototype generic SPARC target.  The client can override
    it with local methods.  */
@@ -317,6 +334,8 @@ sparc_target (void)
   t = inf_ptrace_target ();
   t->to_fetch_registers = fetch_inferior_registers;
   t->to_store_registers = store_inferior_registers;
+  inf_ptrace_xfer_partial = t->to_xfer_partial;
+  t->to_xfer_partial = sparc_xfer_partial;
   return t;
 }