From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12439 invoked by alias); 1 Apr 2011 16:21:26 -0000 Received: (qmail 12415 invoked by uid 22791); 1 Apr 2011 16:21:25 -0000 X-SWARE-Spam-Status: No, hits=-0.8 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from localhost (HELO sourceware.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 01 Apr 2011 16:21:21 +0000 From: "pedro at codesourcery dot com" To: gdb-prs@sourceware.org Subject: [Bug c++/12630] New: gdb is picky on method constness in overload resolution X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gdb X-Bugzilla-Component: c++ X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: pedro at codesourcery dot com X-Bugzilla-Status: NEW X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: unassigned at sourceware dot org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: X-Bugzilla-URL: http://sourceware.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Date: Fri, 01 Apr 2011 16:21:00 -0000 Mailing-List: contact gdb-prs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-prs-owner@sourceware.org X-SW-Source: 2011-q2/txt/msg00000.txt.bz2 http://sourceware.org/bugzilla/show_bug.cgi?id=12630 Summary: gdb is picky on method constness in overload resolution Product: gdb Version: HEAD Status: NEW Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned@sourceware.org ReportedBy: pedro@codesourcery.com With: struct base { int overload (void) const { return 0; } // base::overload(void) const int overload (int) const { return 0; } // base::overload(int) const }; int main (int argc, char* argv[]) { base a; (void) a.overload (); (void) a.overload (1); return 0; } Listing the (void) variant without the `const' fails: (gdb) list 'base::overload()' the class `base' does not have any method instance named overload() With `const', it succeeds: (gdb) list 'base::overload() const' 1 struct base 2 { 3 int overload (void) const { return 0; } // base::overload(void) const 4 int overload (int) const { return 0; } // base::overload(int) const 5 }; Since there's no ambiguity, gdb could pick the const variant without the explicit `const'. This affects "break" and "print" similarly. Interestingly, if you drop all but one of the overloads (hence, no overloads) gdb ignores all the prototype arguments you specify, and always finds something: (gdb) list 'base::overload' 1 struct base ... (gdb) list 'base::overload()' 1 struct base ... (gdb) list 'base::overload(asdf1234)' 1 struct base ... (gdb) list 'base::overload(?????)' 1 struct base ... -- Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.