aboutsummaryrefslogtreecommitdiff
path: root/gdb/sparc-tdep.c
diff options
context:
space:
mode:
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 1719109..bbe5665 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