[Dwarf-discuss] Interpretation of FBREG: implied deref of frame_base?

Chris Quenelle Chris.Quenelle
Thu Apr 21 19:50:45 GMT 2005


Thanks Jim!

Obviously I should have waited one more day before diving into
this thread, and then read it from the end going backwards.
It would have saved me a lot of time.

Your analysis makes a lot of sense to me.

--chris




Jim Blandy wrote:
> brender at gemevn.zko.dec.com (Ron 603-884-2088) writes:
> 
> 
>>it seems better to incorporate the explanation in the frame base
>>attribute description proper.
> 
> 
> I agree.
> 
> 
>>The current description of DW_AT_frame_base (Section 3.3.5, page
>>46 of V3) reads:
>>
>>    A subroutine or entry point may also have a DW_AT_frame_base
>>    attribute, whose value is a location description that
>>    computes the "frame base" for the subroutine or entry point.
> 
> 
> How about replacing it with this:
> 
>       A subroutine or entry point may also have a DW_AT_frame_base
>       attribute, whose value is a location description that
>       computes the "frame base" for the subroutine or entry point.
> +     If the location description is a register name, that register
> +     contains the frame base address.  Otherwise, the location
> +     description must leave a value on the stack, wich the frame base
> +     address.
> 
> I think the first paragraph of section 2.5.1, "Register Name
> Operators", spells out some stuff that clarifies all this:
> 
>     The following DWARF operators can be used to name a register.
>     They can be used only in location expressions.  Each register name
>     operator must be used alone (as a DWARF expression consisting of
>     just that one operation).
> 
> and similarly in 2.5.2, "Location Expressions":
> 
>     The location operations fall into two categories, register names
>     and addressing operations.
> 
> In other words, location expressions that are register names are just
> a different kind of beast from other DWARF expressions: they're never
> part of a larger expression (except for DW_OP_piece), and are used to
> describe objects that lack addresses altogether.
> 
> So it's not a question of when and when not to dereference.  Rather,
> there are two different categories of location expression, and we need
> to assign an interpretation to each when it appears as the value of a
> DW_AT_frame_base attribute.  The only thing one can reasonably do with
> a register name is to look at the named register's contents.
> 
> (I'm left wondering why the original description of DW_AT_frame_base
> specifies that its value is a location description, instead of a DWARF
> expression, if not to explicitly allow the use of DW_OP_reg*
> operators.  That's the only distinction between location expressions
> and DWARF expressions.)
> 
> 
> _______________________________________________
> Dwarf-discuss mailing list
> Dwarf-discuss at mail.freestandards.org
> http://mail.freestandards.org/mailman/listinfo/dwarf-discuss




More information about the Dwarf-discuss mailing list