aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@gnu.org>2004-11-29 08:41:56 +0000
committerMark Kettenis <kettenis@gnu.org>2004-11-29 08:41:56 +0000
commitcbfc58d1256ae92102a3b1e10e0698db095eea5c (patch)
treefb88b248b83eaf3834e4c76db5b8f02306dee048
parent3919e12ce57a6ea9e5647f4707c5dce4382a7356 (diff)
downloadgdb-cbfc58d1256ae92102a3b1e10e0698db095eea5c.zip
gdb-cbfc58d1256ae92102a3b1e10e0698db095eea5c.tar.gz
gdb-cbfc58d1256ae92102a3b1e10e0698db095eea5c.tar.bz2
* 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.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/sparc-nat.c19
2 files changed, 24 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b7c605d..14835cd 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 a3836ce..4bd7b72 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;
}