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.
This commit is contained in:
Andrew Cagney 2004-10-29 14:00:58 +00:00
parent dd891d7edb
commit 00b25ff323
10 changed files with 86 additions and 25 deletions

View file

@ -1,3 +1,17 @@
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.
2004-10-28 Mark Kettenis <kettenis@jive.nl> 2004-10-28 Mark Kettenis <kettenis@jive.nl>
* proc-events.c: Fix several coding-style issues. Consistently * proc-events.c: Fix several coding-style issues. Consistently

View file

@ -898,8 +898,12 @@ amd64_frame_prev_register (struct frame_info *next_frame, void **this_cache,
return; return;
} }
frame_register_unwind (next_frame, regnum, *optimizedp = 0;
optimizedp, lvalp, addrp, realnump, valuep); *lvalp = lval_register;
*addrp = 0;
*realnump = regnum;
if (valuep)
frame_unwind_register (next_frame, (*realnump), valuep);
} }
static const struct frame_unwind amd64_frame_unwind = static const struct frame_unwind amd64_frame_unwind =

View file

@ -770,9 +770,12 @@ dwarf2_frame_prev_register (struct frame_info *next_frame, void **this_cache,
break; break;
case DWARF2_FRAME_REG_SAVED_REG: case DWARF2_FRAME_REG_SAVED_REG:
regnum = DWARF2_REG_TO_REGNUM (cache->reg[regnum].loc.reg); *optimizedp = 0;
frame_register_unwind (next_frame, regnum, *lvalp = lval_register;
optimizedp, lvalp, addrp, realnump, valuep); *addrp = 0;
*realnump = DWARF2_REG_TO_REGNUM (cache->reg[regnum].loc.reg);
if (valuep)
frame_unwind_register (next_frame, (*realnump), valuep);
break; break;
case DWARF2_FRAME_REG_SAVED_EXP: 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. "undefined"). Code above issues a complaint about this.
Here just fudge the books, assume GCC, and that the value is Here just fudge the books, assume GCC, and that the value is
more inner on the stack. */ more inner on the stack. */
frame_register_unwind (next_frame, regnum, *optimizedp = 0;
optimizedp, lvalp, addrp, realnump, valuep); *lvalp = lval_register;
*addrp = 0;
*realnump = regnum;
if (valuep)
frame_unwind_register (next_frame, (*realnump), valuep);
break; break;
case DWARF2_FRAME_REG_SAME_VALUE: case DWARF2_FRAME_REG_SAME_VALUE:
frame_register_unwind (next_frame, regnum, *optimizedp = 0;
optimizedp, lvalp, addrp, realnump, valuep); *lvalp = lval_register;
*addrp = 0;
*realnump = regnum;
if (valuep)
frame_unwind_register (next_frame, (*realnump), valuep);
break; break;
case DWARF2_FRAME_REG_CFA: case DWARF2_FRAME_REG_CFA:

View file

@ -984,8 +984,12 @@ i386_frame_prev_register (struct frame_info *next_frame, void **this_cache,
if (regnum == I386_EIP_REGNUM && cache->pc_in_eax) if (regnum == I386_EIP_REGNUM && cache->pc_in_eax)
{ {
frame_register_unwind (next_frame, I386_EAX_REGNUM, *optimizedp = 0;
optimizedp, lvalp, addrp, realnump, valuep); *lvalp = lval_register;
*addrp = 0;
*realnump = I386_EAX_REGNUM;
if (valuep)
frame_unwind_register (next_frame, (*realnump), valuep);
return; return;
} }
@ -1018,8 +1022,12 @@ i386_frame_prev_register (struct frame_info *next_frame, void **this_cache,
return; return;
} }
frame_register_unwind (next_frame, regnum, *optimizedp = 0;
optimizedp, lvalp, addrp, realnump, valuep); *lvalp = lval_register;
*addrp = 0;
*realnump = regnum;
if (valuep)
frame_unwind_register (next_frame, (*realnump), valuep);
} }
static const struct frame_unwind i386_frame_unwind = static const struct frame_unwind i386_frame_unwind =

View file

@ -862,8 +862,12 @@ m68k_frame_prev_register (struct frame_info *next_frame, void **this_cache,
return; return;
} }
frame_register_unwind (next_frame, regnum, *optimizedp = 0;
optimizedp, lvalp, addrp, realnump, valuep); *lvalp = lval_register;
*addrp = 0;
*realnump = regnum;
if (valuep)
frame_unwind_register (next_frame, (*realnump), valuep);
} }
static const struct frame_unwind m68k_frame_unwind = static const struct frame_unwind m68k_frame_unwind =

View file

@ -2363,8 +2363,12 @@ sh_frame_prev_register (struct frame_info *next_frame, void **this_cache,
return; return;
} }
frame_register_unwind (next_frame, regnum, *optimizedp = 0;
optimizedp, lvalp, addrp, realnump, valuep); *lvalp = lval_register;
*addrp = 0;
*realnump = regnum;
if (valuep)
frame_unwind_register (next_frame, (*realnump), valuep);
} }
static void static void

View file

@ -763,8 +763,12 @@ sparc32_frame_prev_register (struct frame_info *next_frame, void **this_cache,
&& regnum >= SPARC_O0_REGNUM && regnum <= SPARC_O7_REGNUM) && regnum >= SPARC_O0_REGNUM && regnum <= SPARC_O7_REGNUM)
regnum += (SPARC_I0_REGNUM - SPARC_O0_REGNUM); regnum += (SPARC_I0_REGNUM - SPARC_O0_REGNUM);
frame_register_unwind (next_frame, regnum, *optimizedp = 0;
optimizedp, lvalp, addrp, realnump, valuep); *lvalp = lval_register;
*addrp = 0;
*realnump = regnum;
if (valuep)
frame_unwind_register (next_frame, (*realnump), valuep);
} }
static const struct frame_unwind sparc32_frame_unwind = static const struct frame_unwind sparc32_frame_unwind =

View file

@ -544,8 +544,12 @@ sparc64_frame_prev_register (struct frame_info *next_frame, void **this_cache,
&& regnum >= SPARC_O0_REGNUM && regnum <= SPARC_O7_REGNUM) && regnum >= SPARC_O0_REGNUM && regnum <= SPARC_O7_REGNUM)
regnum += (SPARC_I0_REGNUM - SPARC_O0_REGNUM); regnum += (SPARC_I0_REGNUM - SPARC_O0_REGNUM);
frame_register_unwind (next_frame, regnum, *optimizedp = 0;
optimizedp, lvalp, addrp, realnump, valuep); *lvalp = lval_register;
*addrp = 0;
*realnump = regnum;
if (valuep)
frame_unwind_register (next_frame, regnum, valuep);
} }
static const struct frame_unwind sparc64_frame_unwind = static const struct frame_unwind sparc64_frame_unwind =

View file

@ -145,9 +145,13 @@ trad_frame_get_prev_register (struct frame_info *next_frame,
} }
else if (trad_frame_realreg_p (this_saved_regs, regnum)) 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. */ /* Ask the next frame to return the value of the register. */
frame_register_unwind (next_frame, this_saved_regs[regnum].realreg, if (bufferp)
optimizedp, lvalp, addrp, realregp, bufferp); frame_unwind_register (next_frame, (*realregp), bufferp);
} }
else if (trad_frame_value_p (this_saved_regs, regnum)) else if (trad_frame_value_p (this_saved_regs, regnum))
{ {

View file

@ -712,8 +712,12 @@ xstormy16_frame_prev_register (struct frame_info *next_frame, void **this_cache,
return; return;
} }
frame_register_unwind (next_frame, regnum, *optimizedp = 0;
optimizedp, lvalp, addrp, realnump, valuep); *lvalp = lval_register;
*addrp = 0;
*realnump = regnum;
if (valuep)
frame_unwind_register (next_frame, (*realnump), valuep);
} }
static void static void