[Dwarf-Discuss] Is this legal DWARF, and if so, what does it mean?
ron.brender at gmail.com
Mon Sep 15 11:44:58 PDT 2014
1. I am not enough of an C++ lawyer to comment on the meaning of lexical
blocks inside "std". But I don't recall that the formal definition of "std"
has any such blocks--if not, the presence here is either wrong or the
sloppy remains of some block nested in something else that did not get
properly cleaned up. The lack of anything else inside "std" suggests that
some compilation option may be at play to throttle DWARF production but is
not quite consistently applied.
2. As a DWARF lawyer (which is how I earn my big bucks) I would say that an
address range that is not within its containing block is an error. At best
it suggests poor QOI.
What compilation options produce this? The source being compiled does not
affect "std", of course, but does the compiler produce this same
description of "std" for all sources? The real expert, of course, should be
our very own John Bishop...
My 2 cents...
On Mon, Sep 15, 2014 at 1:32 PM, John DelSignore <
John.DelSignore at roguewave.com> wrote:
> TotalView has a customer that has C++ code that produces the following
> DWARF with the Intel 12.1 compiler:
> <0><1192a2>: Abbrev Number: 1 (DW_TAG_compile_unit)
> DW_AT_comp_dir : ...SNIPPED...
> DW_AT_language : 4 (C++)
> DW_AT_name : ...SNIPPED...
> DW_AT_producer : Intel(R) C++ Intel(R) 64 Compiler XE for
> applications running on Intel(R) 64, Version 12.1 Build 20110811
> Fixes SameLinkageName MemberPointers
> DW_AT_stmt_list : 0x5d20
> <1><119376>: Abbrev Number: 2 (DW_TAG_namespace)
> DW_AT_name : std
> <2><268209>: Abbrev Number: 37 (DW_TAG_lexical_block)
> DW_AT_decl_line : 1301
> DW_AT_decl_column : 79
> DW_AT_decl_file : 1
> DW_AT_low_pc : 0xb02a1
> DW_AT_high_pc : 0xb02d4
> <3><26821e>: Abbrev Number: 38 (DW_TAG_lexical_block)
> DW_AT_decl_line : 1351
> DW_AT_decl_column : 31
> DW_AT_decl_file : 1
> DW_AT_low_pc : 0xb03a7
> DW_AT_high_pc : 0xb03f7
> <2><268234>: Abbrev Number: 16 (DW_TAG_inlined_subroutine)
> 1. The lexical block at <268209> is at "std" namespace scope. What
> does it mean to have a lexical block at namespace scope? Note that that
> lexical block contains *only* another lexical block at <26821e>; no
> subroutines or variables.
> 2. The lexical block at <26821e> has an address range that is not
> nested inside its containing lexical block's address range. Is that legal,
> and if so, what does that mean? Note that that lexical block contains
> nothing else; no subroutines, blocks, or variables.
> Thanks, John D.
> Dwarf-Discuss mailing list
> Dwarf-Discuss at lists.dwarfstd.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Dwarf-Discuss