diff options
author | Andrew Cagney <cagney@redhat.com> | 2004-10-29 14:00:58 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2004-10-29 14:00:58 +0000 |
commit | eadcfb6a7c0d6c35468bb76e713ac8f1aba7003a (patch) | |
tree | 170821a81f5e7de65e8a8581dea855a7ab51d251 /gdb/dwarf2-frame.c | |
parent | 2c87f9fec6dc885e4126bea733c4eadaede5b409 (diff) | |
download | gdb-eadcfb6a7c0d6c35468bb76e713ac8f1aba7003a.tar.gz |
2004-10-27 Andrew Cagney <cagney@gnu.org>
* trad-frame.c (trad_frame_get_prev_register): Use
frame_unwind_register instead of frame_register_unwind, do not
recurse the register's location.
* xstormy16-tdep.c (xstormy16_frame_prev_register):
* sparc-tdep.c (sparc32_frame_prev_register): Ditto.
* sparc64-tdep.c (sparc64_frame_prev_register): Ditto.
* sh-tdep.c (sh_frame_prev_register): Ditto.
* m68k-tdep.c (m68k_frame_prev_register): Ditto.
* i386-tdep.c (i386_frame_prev_register): Ditto.
* dwarf2-frame.c (dwarf2_frame_prev_register): Ditto.
* amd64-tdep.c (amd64_frame_prev_register): Ditto.
Diffstat (limited to 'gdb/dwarf2-frame.c')
-rw-r--r-- | gdb/dwarf2-frame.c | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c index 005592c1994..0e1a9532a99 100644 --- a/gdb/dwarf2-frame.c +++ b/gdb/dwarf2-frame.c @@ -770,9 +770,12 @@ dwarf2_frame_prev_register (struct frame_info *next_frame, void **this_cache, break; case DWARF2_FRAME_REG_SAVED_REG: - regnum = DWARF2_REG_TO_REGNUM (cache->reg[regnum].loc.reg); - frame_register_unwind (next_frame, regnum, - optimizedp, lvalp, addrp, realnump, valuep); + *optimizedp = 0; + *lvalp = lval_register; + *addrp = 0; + *realnump = DWARF2_REG_TO_REGNUM (cache->reg[regnum].loc.reg); + if (valuep) + frame_unwind_register (next_frame, (*realnump), valuep); break; case DWARF2_FRAME_REG_SAVED_EXP: @@ -797,13 +800,21 @@ dwarf2_frame_prev_register (struct frame_info *next_frame, void **this_cache, "undefined"). Code above issues a complaint about this. Here just fudge the books, assume GCC, and that the value is more inner on the stack. */ - frame_register_unwind (next_frame, regnum, - optimizedp, lvalp, addrp, realnump, valuep); + *optimizedp = 0; + *lvalp = lval_register; + *addrp = 0; + *realnump = regnum; + if (valuep) + frame_unwind_register (next_frame, (*realnump), valuep); break; case DWARF2_FRAME_REG_SAME_VALUE: - frame_register_unwind (next_frame, regnum, - optimizedp, lvalp, addrp, realnump, valuep); + *optimizedp = 0; + *lvalp = lval_register; + *addrp = 0; + *realnump = regnum; + if (valuep) + frame_unwind_register (next_frame, (*realnump), valuep); break; case DWARF2_FRAME_REG_CFA: |