2004-10-27 Andrew Cagney * 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. Index: amd64-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/amd64-tdep.c,v retrieving revision 1.15 diff -p -u -r1.15 amd64-tdep.c --- amd64-tdep.c 7 Jun 2004 02:02:45 -0000 1.15 +++ amd64-tdep.c 29 Oct 2004 13:33:05 -0000 @@ -898,8 +898,12 @@ amd64_frame_prev_register (struct frame_ return; } - 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); } static const struct frame_unwind amd64_frame_unwind = Index: dwarf2-frame.c =================================================================== RCS file: /cvs/src/src/gdb/dwarf2-frame.c,v retrieving revision 1.38 diff -p -u -r1.38 dwarf2-frame.c --- dwarf2-frame.c 23 Jul 2004 22:05:20 -0000 1.38 +++ dwarf2-frame.c 29 Oct 2004 13:33:05 -0000 @@ -770,9 +770,12 @@ dwarf2_frame_prev_register (struct frame 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 "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: Index: i386-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/i386-tdep.c,v retrieving revision 1.201 diff -p -u -r1.201 i386-tdep.c --- i386-tdep.c 18 Sep 2004 20:16:37 -0000 1.201 +++ i386-tdep.c 29 Oct 2004 13:33:05 -0000 @@ -984,8 +984,12 @@ i386_frame_prev_register (struct frame_i if (regnum == I386_EIP_REGNUM && cache->pc_in_eax) { - frame_register_unwind (next_frame, I386_EAX_REGNUM, - optimizedp, lvalp, addrp, realnump, valuep); + *optimizedp = 0; + *lvalp = lval_register; + *addrp = 0; + *realnump = I386_EAX_REGNUM; + if (valuep) + frame_unwind_register (next_frame, (*realnump), valuep); return; } @@ -1018,8 +1022,12 @@ i386_frame_prev_register (struct frame_i return; } - 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); } static const struct frame_unwind i386_frame_unwind = Index: m68k-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/m68k-tdep.c,v retrieving revision 1.95 diff -p -u -r1.95 m68k-tdep.c --- m68k-tdep.c 2 Sep 2004 19:16:36 -0000 1.95 +++ m68k-tdep.c 29 Oct 2004 13:33:05 -0000 @@ -862,8 +862,12 @@ m68k_frame_prev_register (struct frame_i return; } - 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); } static const struct frame_unwind m68k_frame_unwind = Index: sh-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/sh-tdep.c,v retrieving revision 1.177 diff -p -u -r1.177 sh-tdep.c --- sh-tdep.c 6 Oct 2004 08:59:02 -0000 1.177 +++ sh-tdep.c 29 Oct 2004 13:33:05 -0000 @@ -2363,8 +2363,12 @@ sh_frame_prev_register (struct frame_inf return; } - 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); } static void Index: sparc-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/sparc-tdep.c,v retrieving revision 1.153 diff -p -u -r1.153 sparc-tdep.c --- sparc-tdep.c 7 Jun 2004 02:02:55 -0000 1.153 +++ sparc-tdep.c 29 Oct 2004 13:33:06 -0000 @@ -763,8 +763,12 @@ sparc32_frame_prev_register (struct fram && regnum >= SPARC_O0_REGNUM && regnum <= SPARC_O7_REGNUM) regnum += (SPARC_I0_REGNUM - SPARC_O0_REGNUM); - 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); } static const struct frame_unwind sparc32_frame_unwind = Index: sparc64-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/sparc64-tdep.c,v retrieving revision 1.14 diff -p -u -r1.14 sparc64-tdep.c --- sparc64-tdep.c 24 Jun 2004 19:36:41 -0000 1.14 +++ sparc64-tdep.c 29 Oct 2004 13:33:06 -0000 @@ -544,8 +544,12 @@ sparc64_frame_prev_register (struct fram && regnum >= SPARC_O0_REGNUM && regnum <= SPARC_O7_REGNUM) regnum += (SPARC_I0_REGNUM - SPARC_O0_REGNUM); - 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, regnum, valuep); } static const struct frame_unwind sparc64_frame_unwind = Index: trad-frame.c =================================================================== RCS file: /cvs/src/src/gdb/trad-frame.c,v retrieving revision 1.7 diff -p -u -r1.7 trad-frame.c --- trad-frame.c 1 Aug 2004 14:34:39 -0000 1.7 +++ trad-frame.c 29 Oct 2004 13:33:06 -0000 @@ -145,9 +145,13 @@ trad_frame_get_prev_register (struct fra } else if (trad_frame_realreg_p (this_saved_regs, regnum)) { + *optimizedp = 0; + *lvalp = lval_register; + *addrp = 0; + *realregp = this_saved_regs[regnum].realreg; /* Ask the next frame to return the value of the register. */ - frame_register_unwind (next_frame, this_saved_regs[regnum].realreg, - optimizedp, lvalp, addrp, realregp, bufferp); + if (bufferp) + frame_unwind_register (next_frame, (*realregp), bufferp); } else if (trad_frame_value_p (this_saved_regs, regnum)) { Index: xstormy16-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/xstormy16-tdep.c,v retrieving revision 1.82 diff -p -u -r1.82 xstormy16-tdep.c --- xstormy16-tdep.c 23 Sep 2004 17:00:16 -0000 1.82 +++ xstormy16-tdep.c 29 Oct 2004 13:33:06 -0000 @@ -712,8 +712,12 @@ xstormy16_frame_prev_register (struct fr return; } - 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); } static void