This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFA] DWARF frame unwinder executes one too many rows


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]