From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26671 invoked by alias); 9 Oct 2006 19:28:46 -0000 Received: (qmail 26661 invoked by uid 22791); 9 Oct 2006 19:28:45 -0000 X-Spam-Check-By: sourceware.org Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Mon, 09 Oct 2006 19:28:42 +0000 Received: from drow by nevyn.them.org with local (Exim 4.54) id 1GX0nn-00066d-H6; Mon, 09 Oct 2006 15:28:39 -0400 Date: Mon, 09 Oct 2006 19:28:00 -0000 From: Daniel Jacobowitz To: Paul Pluzhnikov Cc: gdb-patches@sourceware.org Subject: Re: [rfa] patch for PR2116 Message-ID: <20061009192839.GB22848@nevyn.them.org> Mail-Followup-To: Paul Pluzhnikov , gdb-patches@sourceware.org References: <20060819042040.GA14602@nevyn.them.org> <200608190748.k7J7m5ho005424@elgar.sibelius.xs4all.nl> <20060819151843.GA24752@nevyn.them.org> <44E72F6C.9020809@charter.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <44E72F6C.9020809@charter.net> User-Agent: Mutt/1.5.13 (2006-08-11) X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2006-10/txt/msg00081.txt.bz2 On Sat, Aug 19, 2006 at 08:34:04AM -0700, Paul Pluzhnikov wrote: > Greetings, > > Here is a trivial patch for a gdb crash in pr2116 > http://sources.redhat.com/cgi-bin/gnatsweb.pl?database=gdb&pr=2116 Sorry for the delay. I wrote a testcase for this and applied the patch. Thanks a lot! -- Daniel Jacobowitz CodeSourcery 2006-10-09 Paul Pluzhnikov PR c++/2116 * valops.c (find_overload_match): Check for a NULL name. 2006-10-09 Daniel Jacobowitz PR c++/2116 * gdb.cp/call-c.cc, gdb.cp/call-c.exp, gdb.cp/call-c-1.c: New. Index: valops.c =================================================================== RCS file: /cvs/src/src/gdb/valops.c,v retrieving revision 1.164 diff -u -p -r1.164 valops.c --- valops.c 13 Jul 2006 04:31:42 -0000 1.164 +++ valops.c 9 Oct 2006 19:26:04 -0000 @@ -1889,10 +1889,15 @@ find_overload_match (struct type **arg_t else { const char *qualified_name = SYMBOL_CPLUS_DEMANGLED_NAME (fsym); - func_name = cp_func_name (qualified_name); - /* If the name is NULL this must be a C-style function. - Just return the same symbol. */ + /* If we have a C++ name, try to extract just the function + part. */ + if (qualified_name) + func_name = cp_func_name (qualified_name); + + /* If there was no C++ name, this must be a C-style function. + Just return the same symbol. Do the same if cp_func_name + fails for some reason. */ if (func_name == NULL) { *symp = fsym; Index: testsuite/gdb.cp/call-c-1.c =================================================================== RCS file: testsuite/gdb.cp/call-c-1.c diff -N testsuite/gdb.cp/call-c-1.c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ testsuite/gdb.cp/call-c-1.c 9 Oct 2006 19:26:04 -0000 @@ -0,0 +1,21 @@ +/* This test script is part of GDB, the GNU debugger. + + Copyright 2006 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +int foo(int x) { return x; } Index: testsuite/gdb.cp/call-c.cc =================================================================== RCS file: testsuite/gdb.cp/call-c.cc diff -N testsuite/gdb.cp/call-c.cc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ testsuite/gdb.cp/call-c.cc 9 Oct 2006 19:26:04 -0000 @@ -0,0 +1,29 @@ +/* This test script is part of GDB, the GNU debugger. + + Copyright 2006 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +int func(int x) +{ + return x; +} + +int main() +{ + return func(0); +} Index: testsuite/gdb.cp/call-c.exp =================================================================== RCS file: testsuite/gdb.cp/call-c.exp diff -N testsuite/gdb.cp/call-c.exp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ testsuite/gdb.cp/call-c.exp 9 Oct 2006 19:26:04 -0000 @@ -0,0 +1,47 @@ +# Copyright 2006 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +if $tracelevel then { + strace $tracelevel +} + +set prms_id 0 +set bug_id 0 + +if { [skip_cplus_tests] } { continue } + +set testfile call-c +set binfile ${objdir}/${subdir}/${testfile} +set srcfilec ${srcdir}/${subdir}/${testfile}-1.c +set srcfilecpp ${srcdir}/${subdir}/${testfile}.cc +set objfilec ${objdir}/${subdir}/${testfile}-1.o +set objfilecpp ${objdir}/${subdir}/${testfile}.o + +if {[gdb_compile "${srcfilec}" "${objfilec}" object {debug}] != "" + || [gdb_compile "${srcfilecpp}" "${objfilecpp}" object {c++ debug}] != "" + || [gdb_compile "${objfilecpp} ${objfilec}" "${binfile}" executable {c++ debug}] != ""} { + untested hang.exp + return -1 +} + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} + +runto_main + +gdb_test "print foo(1)" "\\\$$decimal = 1"