This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug debug/55665] New: [4.8 Regression] Missing DW_TAG_lexical_block PC range
- From: "jan.kratochvil at redhat dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 12 Dec 2012 14:21:57 +0000
- Subject: [Bug debug/55665] New: [4.8 Regression] Missing DW_TAG_lexical_block PC range
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55665
Bug #: 55665
Summary: [4.8 Regression] Missing DW_TAG_lexical_block PC range
Classification: Unclassified
Product: gcc
Version: 4.8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: debug
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: jan.kratochvil@redhat.com
Target: x86_64-unknown-linux-gnu
This is a regression for GDB gdb.cp/abstract-origin.exp.
PASS: gcc (GCC) 4.7.3 20121212 (prerelease)
FAIL: gcc (GCC) 4.8.0 20121212 (experimental)
(regression sometimes in ~ the last month)
PASS was:
<1><9e>: Abbrev Number: 14 (DW_TAG_subprogram)
<9f> DW_AT_abstract_origin: <0x5a>
<a3> DW_AT_linkage_name: (indirect string, offset: 0xac): _ZN1AC2Ei
[...]
<2><d1>: Abbrev Number: 16 (DW_TAG_lexical_block)
<d2> DW_AT_low_pc : 0x40081e
<da> DW_AT_high_pc : 0x400891
<3><e2>: Abbrev Number: 17 (DW_TAG_variable)
<e3> DW_AT_abstract_origin: <0x7c>
and above:
<2><7b>: Abbrev Number: 11 (DW_TAG_lexical_block)
<3><7c>: Abbrev Number: 12 (DW_TAG_variable)
<7d> DW_AT_name : (indirect string, offset: 0x51): problem
[...]
BTW <d1> was missing DW_AT_abstract_origin <0x7b>; but GDB works with that.
FAIL is:
<1><9e>: Abbrev Number: 14 (DW_TAG_subprogram)
<9f> DW_AT_abstract_origin: <0x5a>
<a3> DW_AT_linkage_name: (indirect string, offset: 0xa9): _ZN1AC2Ei
[...]
<nothing for DW_TAG_variable>
This means GDB correctly inherits the DIE from inherited DIE tree:
<2><7b>: Abbrev Number: 11 (DW_TAG_lexical_block)
<3><7c>: Abbrev Number: 12 (DW_TAG_variable)
<7d> DW_AT_name : (indirect string, offset: 0x97): problem
[...]
But that DW_TAG_lexical_block has no DW_AT_low/high_pc (it cannot have as it is
not the concrete instance) which is a regression.
GDB currently ignores DW_TAG_lexical_block without DW_AT_low/high_pc/range.
While GDB could recognize DW_TAG_lexical_block without DW_AT_low/high_pc it
would be still a debug info quality regression as the GCC-4.7 range there is
more narrow than the DW_TAG_subprogram PC range.