From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19131 invoked by alias); 23 Dec 2011 17:42:47 -0000 Received: (qmail 19122 invoked by uid 22791); 23 Dec 2011 17:42:44 -0000 X-SWARE-Spam-Status: No, hits=-2.9 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from localhost (HELO gcc.gnu.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 23 Dec 2011 17:42:32 +0000 From: "jan.kratochvil at redhat dot com" To: gcc-bugs@gcc.gnu.org Subject: [Bug debug/51668] New: class DW_AT_name does not match method's linkage name prefix (char)1 vs. '\001' Date: Fri, 23 Dec 2011 18:05:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: debug X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: jan.kratochvil at redhat dot com X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2011-12/txt/msg02555.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51668 Bug #: 51668 Summary: class DW_AT_name does not match method's linkage name prefix (char)1 vs. '\001' Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: debug AssignedTo: unassigned@gcc.gnu.org ReportedBy: jan.kratochvil@redhat.com CC: dodji@gcc.gnu.org Target: x86_64-unknown-linux-gnu PASS: gcc (GCC) 4.6.3 20111222 (prerelease) FAIL: gcc (GCC) 4.7.0 20111222 (experimental) >>From the GDB point of view it is a regression because gcc-4.7 now provides the non-matching DW_AT_linkage_name for ctors/dtors which GDB prefers over its physname computed from class's DW_AT_name. template class C { public: void m () {} ~C() {} }; typedef C<1> D; D d; int main () { d.m (); } nm: 0000000000400604 W _ZN1CILc1EED1Ev 0000000000400604 W _ZN1CILc1EED2Ev nm -C: 0000000000400604 W C<(char)1>::~C() 0000000000400604 W C<(char)1>::~C() readelf -wi: <1><3a>: Abbrev Number: 3 (DW_TAG_class_type) <3b> DW_AT_name : (indirect string, offset: 0xac): C<'\001'> The gcc-4.6 -> gcc-4.7 regression: -PASS: gdb.cp/templates.exp: print destructor of template typedef +FAIL: gdb.cp/templates.exp: print destructor of template typedef (gdb) p D::~C $1 = {void (C<(char)'\001'> * const)} 0x40056e ::~C()> -> There is no field named ~C