2002-09-17 Andrew Cagney <ac131313@redhat.com>

* arch-utils.c (legacy_virtual_frame_pointer): If FP_REGNUM is
	invalid, return SP_REGNUM.
This commit is contained in:
Andrew Cagney 2002-09-17 21:18:54 +00:00
parent 009a997142
commit 20bcf01c7a
2 changed files with 18 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2002-09-17 Andrew Cagney <ac131313@redhat.com>
* arch-utils.c (legacy_virtual_frame_pointer): If FP_REGNUM is
invalid, return SP_REGNUM.
2002-09-17 Michael Snyder <msnyder@redhat.com>
* mips-tdep.c (mips_pop_frame): Read saved values of floating

View File

@ -423,8 +423,19 @@ legacy_virtual_frame_pointer (CORE_ADDR pc,
int *frame_regnum,
LONGEST *frame_offset)
{
gdb_assert (FP_REGNUM >= 0);
*frame_regnum = FP_REGNUM;
/* FIXME: cagney/2002-09-13: This code is used when identifying the
frame pointer of the current PC. It is assuming that a single
register and an offset can determine this. I think it should
instead generate a byte code expression as that would work better
with things like Dwarf2's CFI. */
if (FP_REGNUM >= 0 && FP_REGNUM < NUM_REGS)
*frame_regnum = FP_REGNUM;
else if (SP_REGNUM >= 0 && SP_REGNUM < NUM_REGS)
*frame_regnum = SP_REGNUM;
else
/* Should this be an internal error? I guess so, it is reflecting
an architectural limitation in the current design. */
internal_error (__FILE__, __LINE__, "No virtual frame pointer available");
*frame_offset = 0;
}