This is the mail archive of the 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] frame->frame => frame->addr && frame->base()

On Apr 11,  4:56pm, Andrew Cagney wrote:

> This comes from DanielB's and my discussion about dwarf2 CFA and 
> dwarf2's frame_base vs GDB's frame->frame.
> An executive summary is that the two dwarf2 frame concepts (CFA and 
> frame_base) do not go into one GDB frame (frame->frame).
> Because of this, I'd like to propose that the frame object have both:
> struct frame_info
> {
>   ...
> // An ISA/ABI specific address within the ``specified frame'' that is 
> constant throughout the lifetime of the frame.  This address is used by 
> GDB as a handle to identify this frame.  This field must be initialized 
> as part of the creation of a frame object.  (see dwarf2 CFA)
> CORE_ADDR addr;

I like this.  I find frame->frame confusing.  Also, I like it that
you're documenting the fact that this value remains constant over the
lifetime of the frame.  I think we have a number of targets which
don't get this right.

> // High level language concept of the base address of a frame.  Often 
> refered to as ``frame_base'' or ``frame pointer''.  This value should 
> only be computed on-demand.  It is strongly recommended, though, that 
> implementations cache the computed value in the frame cache.  The method 
> is initialized as part of the frame objects creation.  The default 
> method returns frame->addr.  (see dwarf2 DW_AT_frame_base)
> CORE_ADDR (*base) (struct frame_info *frame);

This translates the CFA (canonical frame address) into an address that's
useful for some other purpose, right?  What are the purposes that it
would be used for?

(My worry is that there may be more than one translation which might
prove to be useful.)


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