2004-05-17 Randolph Chung <tausq@debian.org>
* hppa-tdep.c (hppa_stub_frame_unwind_cache): For HPUX stub unwinding, check to see if we are unwinding an export stub. Export stubs clobber the %rp in the call path and stores the original rp in a stack slot.
This commit is contained in:
parent
22f2b2f398
commit
22b0923df5
|
@ -1,3 +1,9 @@
|
|||
2004-05-17 Randolph Chung <tausq@debian.org>
|
||||
|
||||
* hppa-tdep.c (hppa_stub_frame_unwind_cache): For HPUX stub unwinding,
|
||||
check to see if we are unwinding an export stub. Export stubs clobber
|
||||
the %rp in the call path and stores the original rp in a stack slot.
|
||||
|
||||
2004-05-17 Jim Blandy <jimb@redhat.com>
|
||||
|
||||
* MAINTAINERS: Update address for J.T. Conklin.
|
||||
|
|
|
@ -1987,6 +1987,7 @@ hppa_stub_frame_unwind_cache (struct frame_info *next_frame,
|
|||
{
|
||||
struct gdbarch *gdbarch = get_frame_arch (next_frame);
|
||||
struct hppa_stub_unwind_cache *info;
|
||||
struct unwind_table_entry *u;
|
||||
|
||||
if (*this_cache)
|
||||
return *this_cache;
|
||||
|
@ -1995,9 +1996,27 @@ hppa_stub_frame_unwind_cache (struct frame_info *next_frame,
|
|||
*this_cache = info;
|
||||
info->saved_regs = trad_frame_alloc_saved_regs (next_frame);
|
||||
|
||||
info->saved_regs[HPPA_PCOQ_HEAD_REGNUM].realreg = HPPA_RP_REGNUM;
|
||||
info->base = frame_unwind_register_unsigned (next_frame, HPPA_SP_REGNUM);
|
||||
|
||||
if (gdbarch_osabi (gdbarch) == GDB_OSABI_HPUX_ELF
|
||||
|| gdbarch_osabi (gdbarch) == GDB_OSABI_HPUX_SOM)
|
||||
{
|
||||
/* HPUX uses export stubs in function calls; the export stub clobbers
|
||||
the return value of the caller, and, later restores it from the
|
||||
stack. */
|
||||
u = find_unwind_entry (frame_pc_unwind (next_frame));
|
||||
|
||||
if (u && u->stub_unwind.stub_type == EXPORT)
|
||||
{
|
||||
info->saved_regs[HPPA_PCOQ_HEAD_REGNUM].addr = info->base - 24;
|
||||
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
||||
/* By default we assume that stubs do not change the rp. */
|
||||
info->saved_regs[HPPA_PCOQ_HEAD_REGNUM].realreg = HPPA_RP_REGNUM;
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue