Le 13/09/2012 14:09, Michael Eager a écrit :
On 09/13/2012 02:37 AM, Marion Guthmuller wrote:
Hi,

What does this expression mean ? DW_OP_breg7+8

This expression is associated to DW_AT_frame base in a loclist. DW_OP_breg7 is the contents of r7 but I don't understand the "+8". I thought that this expression mean to add 8 to the value in register 7 but in this case, the expression should be DW_OP_breg7 8 (without "+") according to
examples of location description in user guide.

Where do you see DW_OP_breg7+8?

What user guide are you referring to?  The DWARF Standard?

DWARF expressions are sequences of binary values.  Different
programs may print them with different formats.  My guess
is that the dump program you are using is trying to indicate
that the expression is (r7+8).

I want to retrieve local variables and their values of an executable. For that, I used dwarfdump and I focused on .debug_info section.

My executable contains 3 functions. For each, I found in .debug_info a node DW_TAG_subprogram with an attribute DW_AT_frame_base.

For example, I have a function "client" with these information :

< 1><0x000009a0>    DW_TAG_subprogram
                      DW_AT_external              yes(1)
                      DW_AT_name                  "client"
                      DW_AT_decl_file             0x00000001 ./bugged1.c
                      DW_AT_decl_line             0x0000003a
                      DW_AT_prototyped            yes(1)
                      DW_AT_type <0x00000090>
                      DW_AT_low_pc                0x00401570
                      DW_AT_high_pc               0x0040198c
                      DW_AT_frame_base <loclist with 6 entries follows>
            [ 0]<lowpc=0x00401570><highpc=0x00401572>DW_OP_breg7+8
            [ 1]<lowpc=0x00401572><highpc=0x00401574>DW_OP_breg7+16
            [ 2]<lowpc=0x00401574><highpc=0x00401578>DW_OP_breg7+24
            [ 3]<lowpc=0x00401578><highpc=0x0040157e>DW_OP_breg7+32
            [ 4]<lowpc=0x0040157e><highpc=0x00401582>DW_OP_breg7+40
            [ 5]<lowpc=0x00401582><highpc=0x0040198c>DW_OP_breg7+160
                      DW_AT_GNU_all_call_sites    yes(1)
                      DW_AT_sibling <0x00000f34>

After other research, it seems that my first evaluation and yours are the good one : we simply add 8 to the value in register 7.

--
Marion G.<http://www.loria.fr/%7Eguthmull>
_______________________________________________
Dwarf-Discuss mailing list
[email protected]
http://lists.dwarfstd.org/listinfo.cgi/dwarf-discuss-dwarfstd.org

Reply via email to