[RFA] DWARF frame unwinder executes one too many rows
Jan Kratochvil
jan.kratochvil@redhat.com
Mon Aug 6 15:19:00 GMT 2012
On Mon, 06 Aug 2012 17:10:01 +0200, Tom Tromey wrote:
> You left out an important part of my message:
>
> "but looking at the diff it appears I just hoisted the call to
> get_frame_pc out of execute_cfa_program."
That's true but I do not see any change with it. get_frame_pc was just called
in the callers instead, not as the first statement of the callee.
8d35b3995d73e87826263f02da0fd05190d34638
execute_cfa_program (struct dwarf2_fde *fde, const gdb_byte *insn_ptr,
- const gdb_byte *insn_end, struct frame_info *this_frame,
- struct dwarf2_frame_state *fs)
+ const gdb_byte *insn_end, struct gdbarch *gdbarch,
+ CORE_ADDR pc, struct dwarf2_frame_state *fs)
{
int eh_frame_p = fde->eh_frame_p;
- CORE_ADDR pc = get_frame_pc (this_frame);
int bytes_read;
and
execute_cfa_program (fde, fde->cie->initial_instructions,
- fde->cie->end, this_frame, fs);
+ fde->cie->end, gdbarch, get_frame_pc (this_frame), fs);
and
- execute_cfa_program (fde, fde->instructions, fde->end, this_frame, fs);
+ execute_cfa_program (fde, fde->instructions, fde->end, gdbarch,
+ get_frame_pc (this_frame), fs);
Moreover without a reproducer I do not feel comfortable to say anything.
Jan
More information about the Gdb-patches
mailing list