* sparc-tdep.c (sparc_extract_struct_value_address): Get the
authorMark Kettenis <kettenis@gnu.org>
Mon, 5 Jan 2004 20:38:57 +0000 (20:38 +0000)
committerMark Kettenis <kettenis@gnu.org>
Mon, 5 Jan 2004 20:38:57 +0000 (20:38 +0000)
address from [sp + 64] instead of %o2.

gdb/ChangeLog
gdb/sparc-tdep.c

index 0e5ef296347bcdee49f554a1c9c907fd6b4fb65c..2c4903e75d60b1d1aebba511577b7507e1bad05c 100644 (file)
@@ -1,5 +1,8 @@
 2004-01-05  Mark Kettenis  <kettenis@gnu.org>
 
+       * sparc-tdep.c (sparc_extract_struct_value_address): Get the
+       address from [sp + 64] instead of %o2.
+
        * frame.c (get_prev_frame): Don't try to unwind the PC.  This
        fixes PR backtrace/1476.
 
index ab3f365a7e856290835fa4dc9fae53e104260b6a..92684a325b5adf4734d9efe0cc20fb7c953738cd 100644 (file)
@@ -839,10 +839,10 @@ sparc32_return_value (struct gdbarch *gdbarch, struct type *type,
 static CORE_ADDR
 sparc_extract_struct_value_address (struct regcache *regcache)
 {
-  ULONGEST addr;
+  ULONGEST sp;
 
-  regcache_cooked_read_unsigned (regcache, SPARC_O0_REGNUM, &addr);
-  return addr;
+  regcache_cooked_read_unsigned (regcache, SPARC_SP_REGNUM, &sp);
+  return read_memory_unsigned_integer (sp + 64, 4);
 }
 
 static int