summaryrefslogtreecommitdiff
path: root/gdb/sparc-tdep.c
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@gnu.org>2004-02-04 21:49:58 +0000
committerMark Kettenis <kettenis@gnu.org>2004-02-04 21:49:58 +0000
commit1b238ed0d27d9770bc136f81f7c1928e3d3cc248 (patch)
tree4010e0a9c49558cf9551a2a323718e32fed370ac /gdb/sparc-tdep.c
parent6e492e936c6ebf4375a9ad4d5cb935dbbb61c51e (diff)
downloadgdb-1b238ed0d27d9770bc136f81f7c1928e3d3cc248.tar.gz
* target.h (target_object): Add TARGET_OBJECT_WCOOKIE.
* inftarg.c: Update copyright year. (child_xfer_partial): Add support for TARGET_OBJECT_WCOOKIE. * sparc-nat.c: Include "target.h" and "gdb_assert.h". (sparc_xfer_wcookie): New function. * sparc-tdep.c (sparc_fetch_wcookie): New function. * Makefile.in (sparc-nat.o): Update dependencies. * config/sparc/nm-nbsd.h: Include "target.h". (NATIVE_XFER_WCOOKIE): New define. (sparc_xfer_wcookie): New prototype.
Diffstat (limited to 'gdb/sparc-tdep.c')
-rw-r--r--gdb/sparc-tdep.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/gdb/sparc-tdep.c b/gdb/sparc-tdep.c
index 1719109ac28..bbe56652096 100644
--- a/gdb/sparc-tdep.c
+++ b/gdb/sparc-tdep.c
@@ -141,13 +141,21 @@ sparc_fetch_instruction (CORE_ADDR pc)
ULONGEST
sparc_fetch_wcookie (void)
{
- /* FIXME: kettenis/20040131: We should fetch the cookie from the
- target. For now, return zero, which is right for targets without
- StackGhost. */
- return 0;
-}
+ struct target_ops *ops = &current_target;
+ char buf[8];
+ int len;
+
+ len = target_read_partial (ops, TARGET_OBJECT_WCOOKIE, NULL, buf, 0, 8);
+ if (len == -1)
+ return 0;
+
+ /* We should have either an 32-bit or an 64-bit cookie. */
+ gdb_assert (len == 4 || len == 8);
+ return extract_unsigned_integer (buf, len);
+}
+
/* Return the contents if register REGNUM as an address. */
static CORE_ADDR