[Bug debug/37410] New: DW_TAG_imported_module is not in its DW_TAG_lexical_block
jan dot kratochvil at redhat dot com
gcc-bugzilla@gcc.gnu.org
Sun Sep 7 17:56:00 GMT 2008
DW_TAG_imported_module (c++ `using namespace') has validity only in the same
block in which they are stated. It works right for the compiled code but it
gets defined for the whole function in DWARF.
DW_TAG_imported_module should be located in DW_TAG_lexical_block. Without the
`int block_create;' declaration the whole DW_TAG_lexical_block is missing
there so it should be created when needed.
The testcase produces:
1
2
Tests on Fedora:
compat-gcc-34-c++-3.4.6-9.x86_64 has no DW_TAG_imported_module there at all.
gcc-4.3.2-3.x86_64 and gcc-4.1.2-33.x86_64 produce the output below.
<1><6f>: Abbrev Number: 5 (DW_TAG_subprogram)
<70> DW_AT_external : 1
<71> DW_AT_name : (indirect string, offset: 0x7f): main
<75> DW_AT_decl_file : 1
<76> DW_AT_decl_line : 13
<77> DW_AT_type : <0x57>
<7b> DW_AT_low_pc : 0x4005ac
<83> DW_AT_high_pc : 0x4005fc
<8b> DW_AT_frame_base : 0x0 (location list)
<8f> DW_AT_sibling : <0xf2>
<2><93>: Abbrev Number: 6 (DW_TAG_imported_module)
<94> DW_AT_decl_file : 1
<95> DW_AT_decl_line : 19
<96> DW_AT_import : <0xf2> [Abbrev Number: 11 (DW_TAG_namespace)]
<2><9a>: Abbrev Number: 6 (DW_TAG_imported_module)
<9b> DW_AT_decl_file : 1
<9c> DW_AT_decl_line : 27
<9d> DW_AT_import : <0x10e> [Abbrev Number: 11 (DW_TAG_namespace)]
<2><a1>: Abbrev Number: 7 (DW_TAG_variable)
<a2> DW_AT_name : x
<a4> DW_AT_decl_file : 1
<a5> DW_AT_decl_line : 15
<a6> DW_AT_type : <0x57>
<aa> DW_AT_location : 2 byte block: 91 64 (DW_OP_fbreg: -28)
<2><ad>: Abbrev Number: 8 (DW_TAG_lexical_block)
<ae> DW_AT_low_pc : 0x4005b4
<b6> DW_AT_high_pc : 0x4005d2
<be> DW_AT_sibling : <0xd1>
<3><c2>: Abbrev Number: 9 (DW_TAG_variable)
<c3> DW_AT_name : (indirect string, offset: 0x32): block_create
<c7> DW_AT_decl_file : 1
<c8> DW_AT_decl_line : 18
<c9> DW_AT_type : <0x57>
<cd> DW_AT_location : 2 byte block: 91 68 (DW_OP_fbreg: -24)
<2><d1>: Abbrev Number: 10 (DW_TAG_lexical_block)
<d2> DW_AT_low_pc : 0x4005d2
<da> DW_AT_high_pc : 0x4005f0
<3><e2>: Abbrev Number: 9 (DW_TAG_variable)
<e3> DW_AT_name : (indirect string, offset: 0x32): block_create
<e7> DW_AT_decl_file : 1
<e8> DW_AT_decl_line : 26
<e9> DW_AT_type : <0x57>
<ed> DW_AT_location : 2 byte block: 91 6c (DW_OP_fbreg: -20)
--
Summary: DW_TAG_imported_module is not in its
DW_TAG_lexical_block
Product: gcc
Version: 4.3.2
Status: UNCONFIRMED
Severity: minor
Priority: P3
Component: debug
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: jan dot kratochvil at redhat dot com
GCC build triplet: x86_64-fedora-linux-gnu
GCC host triplet: x86_64-fedora-linux-gnu
GCC target triplet: x86_64-fedora-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37410
More information about the Gcc-bugs
mailing list