This is the mail archive of the gdb@sources.redhat.com 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: [rfc] Add per frame frame_saved_pc()


On Sep 19, 11:30pm, Andrew Cagney wrote:


Back to (trumpet noises) CFI and more fall-out from the MIPS and generic dummy frames.

- The CFI doco describes a ``return_address_register'' which ``[...] might not correspond to a machine register''. This means a CFI specific frame saved PC method.

I'm not certain that this should (necessarily) drive our decisions.
There are currently three (er 4) frame_saved_pc() functions:

frame_saved_pc(dummy)
frame_saved_pc(CFI)
frame_saved_pc(``old style with frame init saved regs'')
frame_saved_pc(NULL) === read_pc() (but only sort of)

- Given a generic dummy frame, it knows exactly where the callers frame PC is. No need to ask the target code.

With this in mind, I'd like to propose making frame_saved_pc() a per-frame method.

I'd be willing to look at a patch.  In particular, what I'm curious
about it to see the places where the frame_saved_pc field is
initialized in the frame.  I can picture how the generic dummy
frame code would look, but what I'm less clear about is what it'd
look like for normal frames.  It seems to me that you have two choices,
1) have a generic method which falls back on the current machinery, or
2) have architecture specific methods.  I'm more interested in how (2)
will be accomplished.
If I get the code right, I won't be changing any targets :-^ The target frame_saved_pc() code would, simply, not be called in certain cases.

It would be handled the same way as the unwind code - See set_unwind_by_pc().

Andrew



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