address from [sp + 64] instead of %o2.
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.
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