[Dwarf-Discuss] OP_fbreg within AT_frame_base, static or dynamic ?

Tristan Gingold gingold@adacore.com
Tue Mar 1 09:21:31 GMT 2011


Hi,

The DW_OP_fbreg has a meaning only within the context of DW_AT_frame_base.

My question is about the semantic on the 'within' (which doesn't appear in the standard): it is static or
dynamic.

Ie, is this dwarf CU valid ?
Note that the node <113> which uses OP_deref is not a child or a grand-child of node <74> which has the AT_frame_base.
Some debuggers only allow static imbrication, while some others allow dynamic one.

 <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
    ...
 <1><74>: Abbrev Number: 2 (DW_TAG_subprogram)
    ...
    <92>   DW_AT_frame_base  : 0x0	(location list)
    ...
 <2><9a>: Abbrev Number: 3 (DW_TAG_formal_parameter)
    ...
 <2><a6>: Abbrev Number: 3 (DW_TAG_formal_parameter)
    ...
 <2><b2>: Abbrev Number: 4 (DW_TAG_variable)
    <b3>   DW_AT_name        : b	
    <b5>   DW_AT_decl_file   : 1	
    <b6>   DW_AT_decl_line   : 3	
    <b7>   DW_AT_type        : <0x10a>	
    <bb>   DW_AT_location    : 3 byte block: 91 50 6 	(DW_OP_fbreg: -48; DW_OP_deref)

 <1><102>: Abbrev Number: 9 (DW_TAG_base_type)
    <103>   DW_AT_byte_size   : 1	
    <104>   DW_AT_encoding    : 6	(signed char)
    <105>   DW_AT_name        : char	
 <1><10a>: Abbrev Number: 11 (DW_TAG_array_type)
    <10b>   DW_AT_type        : <0x102>	
 <2><113>: Abbrev Number: 12 (DW_TAG_subrange_type)
    <114>   DW_AT_type        : <0x11d>	
    <118>   DW_AT_upper_bound : 3 byte block: 91 58 6 	(DW_OP_fbreg: -40; DW_OP_deref) [without DW_AT_frame_base]
 <1><11d>: Abbrev Number: 9 (DW_TAG_base_type)
    <11e>   DW_AT_byte_size   : 8	
    <11f>   DW_AT_encoding    : 7	(unsigned)
    <120>   DW_AT_name        : long unsigned int	

(Maybe this question was already asked but I wasn't able to find the answer in the ml archives).

Regards,
Tristan.





More information about the Dwarf-discuss mailing list