This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Regarding concrete inlined and out-of-line inlined instances
- From: Ramana <ramana dot venkat83 at gmail dot com>
- To: gcc at gcc dot gnu dot org
- Date: Mon, 16 Jun 2014 09:39:52 +0530
- Subject: Regarding concrete inlined and out-of-line inlined instances
- Authentication-results: sourceware.org; auth=none
Hi,
I have the below debug information (dwarf4) generated by the GCC
compiler v4.8.2 for an inlined function. Please help me with the
following queries.
In the concrete inlined instance of 'ext2_lookup', its DW_AT_entry_pc
value (0xc0000000001b49d0) is overlapping with the address range i.e.
DW_AT_low_pc (0xc0000000001b4980) and DW_AT_high_pc
(0xc0000000001b4a60) of the out-of-line instance root entry. Is this
overlapping legitimate and how?
Also, if we closely look at the debug information tables, the
DW_AT_location attribute is not generated either for all formal
parameters in the concrete inlined instance tree OR for all function
local variables in the out-of-line inlined instance tree. Isn't that
something abnormal? If it is legitimate, how the debugger is supposed
to get the DW_AT_location details of the formal parameters of the
concrete inlined instance tree?
<1><1038302>: Abbrev Number: 51 (DW_TAG_subprogram)
<1038303> DW_AT_name : (indirect string, offset:
0x7a615): ext2_lookup
<1038307> DW_AT_decl_file : 1
<1038308> DW_AT_decl_line : 58
<1038309> DW_AT_prototyped : 1
<103830a> DW_AT_type : <0x10330af>
<103830e> DW_AT_inline : 1 (inlined)
<103830f> DW_AT_sibling : <0x1038359>
<2><1038313>: Abbrev Number: 52 (DW_TAG_formal_parameter)
<1038314> DW_AT_name : dir
<1038318> DW_AT_decl_file : 1
<1038319> DW_AT_decl_line : 58
<103831a> DW_AT_type : <0x103331d>
<2><103831e>: Abbrev Number: 56 (DW_TAG_formal_parameter)
<103831f> DW_AT_name : (indirect string, offset: 0x4fb14): dentry
<1038323> DW_AT_decl_file : 1
<1038324> DW_AT_decl_line : 58
<1038325> DW_AT_type : <0x10330af>
<2><1038329>: Abbrev Number: 56 (DW_TAG_formal_parameter)
<103832a> DW_AT_name : (indirect string, offset: 0x1a72d5): flags
<103832e> DW_AT_decl_file : 1
<103832f> DW_AT_decl_line : 58
<1038330> DW_AT_type : <0x1030083>
<2><1038334>: Abbrev Number: 61 (DW_TAG_variable)
<1038335> DW_AT_name : (indirect string, offset: 0x7a533): inode
<1038339> DW_AT_decl_file : 1
<103833a> DW_AT_decl_line : 60
<103833b> DW_AT_type : <0x103331d>
<2><103833f>: Abbrev Number: 57 (DW_TAG_variable)
<1038340> DW_AT_name : ino
<1038344> DW_AT_decl_file : 1
<1038345> DW_AT_decl_line : 61
<1038346> DW_AT_type : <0x1030243>
<2><103834a>: Abbrev Number: 62 (DW_TAG_variable)
<103834b> DW_AT_name : (indirect string, offset: 0xdd81): __func__
<103834f> DW_AT_type : <0x1038369>
<1038353> DW_AT_artificial : 1
<1038354> DW_AT_const_value : (indirect string, offset:
0x7a615): ext2_lookup
<1><1038359>: Abbrev Number: 8 (DW_TAG_array_type)
<103835a> DW_AT_type : <0x1030168>
<103835e> DW_AT_sibling : <0x1038369>
<2><1038362>: Abbrev Number: 9 (DW_TAG_subrange_type)
<1038363> DW_AT_type : <0x1030129>
<1038367> DW_AT_upper_bound : 11
<1><1038369>: Abbrev Number: 11 (DW_TAG_const_type)
<103836a> DW_AT_type : <0x1038359>
.................................
................................. (some intermediate DIE entries)
.................................
<1><10397ce>: Abbrev Number: 92 (DW_TAG_subprogram)
<10397cf> DW_AT_abstract_origin: <0x1038302>
<10397d3> DW_AT_low_pc : 0xc0000000001b4980
<10397db> DW_AT_high_pc : 0xc0000000001b4a60
<10397e3> DW_AT_frame_base : 0x53243a (location list)
<10397e7> DW_AT_GNU_all_call_sites: 1
<10397e8> DW_AT_sibling : <0x10398eb>
<2><10397ec>: Abbrev Number: 70 (DW_TAG_formal_parameter)
<10397ed> DW_AT_abstract_origin: <0x1038313>
<10397f1> DW_AT_location : 0x5324c5 (location list)
<2><10397f5>: Abbrev Number: 70 (DW_TAG_formal_parameter)
<10397f6> DW_AT_abstract_origin: <0x103831e>
<10397fa> DW_AT_location : 0x53254d (location list)
<2><10397fe>: Abbrev Number: 70 (DW_TAG_formal_parameter)
<10397ff> DW_AT_abstract_origin: <0x1038329>
<1039803> DW_AT_location : 0x5325e8 (location list)
<2><1039807>: Abbrev Number: 93 (DW_TAG_variable)
<1039808> DW_AT_abstract_origin: <0x1038334>
<2><103980c>: Abbrev Number: 93 (DW_TAG_variable)
<103980d> DW_AT_abstract_origin: <0x103833f>
<2><1039811>: Abbrev Number: 94 (DW_TAG_variable)
<1039812> DW_AT_abstract_origin: <0x103834a>
<1039816> DW_AT_location : 9 byte block: 3 c0 0 0 0 0 79 3ea0
(DW_OP_addr: c000000000793ea0)
<2><1039820>: Abbrev Number: 95 (DW_TAG_inlined_subroutine)
<1039821> DW_AT_abstract_origin: <0x1038302>
<1039825> DW_AT_entry_pc : 0xc0000000001b49d0
<103982d> DW_AT_ranges : 0x14a0c0
<1039831> DW_AT_call_file : 1
<1039832> DW_AT_call_line : 58
<3><1039833>: Abbrev Number: 96 (DW_TAG_formal_parameter)
<1039834> DW_AT_abstract_origin: <0x103831e>
<3><1039838>: Abbrev Number: 70 (DW_TAG_formal_parameter)
<1039839> DW_AT_abstract_origin: <0x1038313>
<103983d> DW_AT_location : 0x53264a (location list)
<3><1039841>: Abbrev Number: 86 (DW_TAG_lexical_block)
<1039842> DW_AT_ranges : 0x14a0f0
<4><1039846>: Abbrev Number: 87 (DW_TAG_variable)
<1039847> DW_AT_abstract_origin: <0x1038334>
<103984b> DW_AT_location : 0x532696 (location list)
<4><103984f>: Abbrev Number: 87 (DW_TAG_variable)
<1039850> DW_AT_abstract_origin: <0x103833f>
<1039854> DW_AT_location : 0x5326f4 (location list)
<4><1039858>: Abbrev Number: 96 (DW_TAG_formal_parameter)
<1039859> DW_AT_abstract_origin: <0x1038329>
<4><103985d>: Abbrev Number: 94 (DW_TAG_variable)
<103985e> DW_AT_abstract_origin: <0x103834a>
<1039862> DW_AT_location : 9 byte block: 3 c0 0 0 0 0 79 3ea0
(DW_OP_addr: c000000000793ea0)
Thank you,
Venkata Ramanaiah N