> 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?
Is this a recursive inlined call? The DW_TAG_subprogram DIE at <10397ce> represents an out-of-line copy of ext2_lookup. The DW_TAG_inlined_subroutine DIE at <1039820> represents an inlined copy of the same subprogram, inlined into the out-of-line copy. It makes sense that the entry PC for an inlined subroutine would be within the PC range of the calling subprogram. If you look at the range table entry at <0x14a0c0>, you will be able to see the ranges of PCs within the top-level subprogram that actually belong to the inlined copy. It appears that the subprogram is defined at line 58 in the source file, and the inlined call also occurs at line 58, so something looks fishy. What does the source code look like? -cary > <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 3e > a0 (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 3e > a0 (DW_OP_addr: c000000000793ea0) > > Thank you, > Venkata Ramanaiah N > _______________________________________________ > Dwarf-Discuss mailing list > Dwarf-Discuss@lists.dwarfstd.org > http://lists.dwarfstd.org/listinfo.cgi/dwarf-discuss-dwarfstd.org _______________________________________________ Dwarf-Discuss mailing list Dwarf-Discuss@lists.dwarfstd.org http://lists.dwarfstd.org/listinfo.cgi/dwarf-discuss-dwarfstd.org