From cbfc58d1256ae92102a3b1e10e0698db095eea5c Mon Sep 17 00:00:00 2001
From: Mark Kettenis <kettenis@gnu.org>
Date: Mon, 29 Nov 2004 08:41:56 +0000
Subject: [PATCH] * 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.

---
 gdb/ChangeLog   |  5 +++++
 gdb/sparc-nat.c | 19 +++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b7c605df3b9..14835cd0143 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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.
 
diff --git a/gdb/sparc-nat.c b/gdb/sparc-nat.c
index a3836ce892e..4bd7b725384 100644
--- a/gdb/sparc-nat.c
+++ b/gdb/sparc-nat.c
@@ -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);
+}
 
 /* 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;
 }
 
-- 
GitLab