* frame.c (get_prev_frame_1): Check PC_REGNUM before using it.
This commit is contained in:
parent
dc4503c681
commit
d57df5e4d8
2 changed files with 14 additions and 3 deletions
|
@ -1,3 +1,7 @@
|
|||
2007-01-11 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* frame.c (get_prev_frame_1): Check PC_REGNUM before using it.
|
||||
|
||||
2007-01-10 Jim Blandy <jimb@codesourcery.com>
|
||||
|
||||
* MAINTAINERS (Global Maintainers): Ulrich Weigand has accepted
|
||||
|
|
13
gdb/frame.c
13
gdb/frame.c
|
@ -1221,10 +1221,17 @@ get_prev_frame_1 (struct frame_info *this_frame)
|
|||
have different frame IDs, the new frame will be bogus; two
|
||||
functions can't share a register save slot for the PC. This can
|
||||
happen when the prologue analyzer finds a stack adjustment, but
|
||||
no PC save. This check does assume that the "PC register" is
|
||||
roughly a traditional PC, even if the gdbarch_unwind_pc method
|
||||
frobs it. */
|
||||
no PC save.
|
||||
|
||||
This check does assume that the "PC register" is roughly a
|
||||
traditional PC, even if the gdbarch_unwind_pc method adjusts
|
||||
it (we do not rely on the value, only on the unwound PC being
|
||||
dependent on this value). A potential improvement would be
|
||||
to have the frame prev_pc method and the gdbarch unwind_pc
|
||||
method set the same lval and location information as
|
||||
frame_register_unwind. */
|
||||
if (this_frame->level > 0
|
||||
&& PC_REGNUM >= 0
|
||||
&& get_frame_type (this_frame) == NORMAL_FRAME
|
||||
&& get_frame_type (this_frame->next) == NORMAL_FRAME)
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue