From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9321 invoked by alias); 1 Jul 2011 20:21:28 -0000 Received: (qmail 9299 invoked by uid 22791); 1 Jul 2011 20:21:25 -0000 X-SWARE-Spam-Status: No, hits=-5.6 required=5.0 tests=AWL,BAYES_00,KAM_STOCKGEN,RCVD_IN_DNSWL_HI,SPF_HELO_PASS,TW_BJ,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 01 Jul 2011 20:21:11 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p61KLAS7024684 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Fri, 1 Jul 2011 16:21:10 -0400 Received: from host1.jankratochvil.net ([10.3.113.13]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p61KL8aj021422 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Fri, 1 Jul 2011 16:21:10 -0400 Received: from host1.jankratochvil.net (localhost [127.0.0.1]) by host1.jankratochvil.net (8.14.4/8.14.4) with ESMTP id p61KL76u014445 for ; Fri, 1 Jul 2011 22:21:07 +0200 Received: (from jkratoch@localhost) by host1.jankratochvil.net (8.14.4/8.14.4/Submit) id p61KL6pD014433 for gdb-patches@sourceware.org; Fri, 1 Jul 2011 22:21:06 +0200 Date: Fri, 01 Jul 2011 20:21:00 -0000 From: Jan Kratochvil To: gdb-patches@sourceware.org Subject: [commit] Re: [patch 1/2] physname reg.: linespec minsym fallback Message-ID: <20110701202105.GA22980@host1.jankratochvil.net> References: <20110605202645.GB20427@host1.jankratochvil.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110605202645.GB20427@host1.jankratochvil.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-07/txt/msg00058.txt.bz2 Hi, checked in. Thanks, Jan http://sourceware.org/ml/gdb-cvs/2011-07/msg00029.html --- src/gdb/ChangeLog 2011/07/01 19:19:13 1.13151 +++ src/gdb/ChangeLog 2011/07/01 20:16:38 1.13152 @@ -1,5 +1,12 @@ 2011-07-01 Jan Kratochvil + Fall back linespec to minimal symbols. + * linespec.c (decode_line_1): New variable ex, saved_argptr. Protect + decode_compound by TRY_CATCH, fall back on minsyms if it failed. + (find_method, symbol_found): Change error to cplusplus_error. + +2011-07-01 Jan Kratochvil + * symtab.c (symbol_find_demangled_name): Remove DMGL_VERBOSE. 2011-07-01 Jan Kratochvil --- src/gdb/testsuite/ChangeLog 2011/07/01 19:18:36 1.2774 +++ src/gdb/testsuite/ChangeLog 2011/07/01 20:16:38 1.2775 @@ -1,5 +1,16 @@ 2011-07-01 Jan Kratochvil + Fall back linespec to minimal symbols. + * gdb.base/psymtab.exp (Don't search past end of psymtab.): Update the + error message. + * gdb.cp/cplusfuncs.exp (list foo::operator int*): Likewise. + * gdb.cp/minsym-fallback-main.cc: New file. + * gdb.cp/minsym-fallback.cc: New file. + * gdb.cp/minsym-fallback.exp: New file. + * gdb.cp/minsym-fallback.h: New file. + +2011-07-01 Jan Kratochvil + * gdb.cp/no-dmgl-verbose.cc: New file. * gdb.cp/no-dmgl-verbose.exp: New file. --- src/gdb/linespec.c 2011/05/31 22:13:51 1.122 +++ src/gdb/linespec.c 2011/07/01 20:16:38 1.123 @@ -933,35 +933,51 @@ if (p[0] == '.' || p[1] == ':') { struct symtabs_and_lines values; + volatile struct gdb_exception ex; + char *saved_argptr = *argptr; if (is_quote_enclosed) ++saved_arg; - values = decode_compound (argptr, funfirstline, canonical, - file_symtab, saved_arg, p); + + TRY_CATCH (ex, RETURN_MASK_ERROR) + { + values = decode_compound (argptr, funfirstline, canonical, + file_symtab, saved_arg, p); + } if ((is_quoted || is_squote_enclosed) && **argptr == '\'') *argptr = *argptr + 1; - return values; + + if (ex.reason >= 0) + return values; + + if (ex.error != NOT_FOUND_ERROR) + throw_exception (ex); + + *argptr = saved_argptr; } + else + { + /* If there was an exception looking up a specified filename earlier, + then check whether we were really given `function:label'. */ + if (file_exception.reason < 0) + { + function_symbol = find_function_symbol (argptr, p, + is_quote_enclosed); + /* If we did not find a function, re-throw the original + exception. */ + if (!function_symbol) + throw_exception (file_exception); + } - /* If there was an exception looking up a specified filename earlier, - then check whether we were really given `function:label'. */ - if (file_exception.reason < 0) - { - function_symbol = find_function_symbol (argptr, p, is_quote_enclosed); - /* If we did not find a function, re-throw the original - exception. */ - if (!function_symbol) - throw_exception (file_exception); - } - - /* Check for single quotes on the non-filename part. */ - if (!is_quoted) - { - is_quoted = (**argptr - && strchr (get_gdb_completer_quote_characters (), - **argptr) != NULL); - if (is_quoted) - end_quote = skip_quoted (*argptr); + /* Check for single quotes on the non-filename part. */ + if (!is_quoted) + { + is_quoted = (**argptr + && strchr (get_gdb_completer_quote_characters (), + **argptr) != NULL); + if (is_quoted) + end_quote = skip_quoted (*argptr); + } } } @@ -1798,9 +1814,9 @@ } } - error (_("the class `%s' does not have " - "any method instance named %s"), - SYMBOL_PRINT_NAME (sym_class), copy); + cplusplus_error (saved_arg, _("the class `%s' does not have " + "any method instance named %s"), + SYMBOL_PRINT_NAME (sym_class), copy); } return decode_line_2 (sym_arr, i1, funfirstline, canonical); @@ -2208,7 +2224,12 @@ return values; } else if (funfirstline) - error (_("\"%s\" is not a function"), copy); + { + /* NOT_FOUND_ERROR is not correct but it ensures COPY will be + searched also as a minimal symbol. */ + + throw_error (NOT_FOUND_ERROR, _("\"%s\" is not a function"), copy); + } else if (SYMBOL_LINE (sym) != 0) { /* We know its line number. */ --- src/gdb/testsuite/gdb.base/psymtab.exp 2011/01/01 15:33:42 1.12 +++ src/gdb/testsuite/gdb.base/psymtab.exp 2011/07/01 20:16:38 1.13 @@ -71,4 +71,4 @@ # zzz::dummy currently causes a search for 'zzz' in STRUCT_NAMESPACE # without a preceding search for 'zzz' in VAR_NAMESPACE. -gdb_test "break zzz::dummy" "Can't find member of namespace, class, struct, or union named \"zzz::dummy\"\r\n.*" "Don't search past end of psymtab." +gdb_test "break zzz::dummy" {Function "zzz::dummy" not defined\.} "Don't search past end of psymtab." --- src/gdb/testsuite/gdb.cp/minsym-fallback-main.cc +++ src/gdb/testsuite/gdb.cp/minsym-fallback-main.cc 2011-07-01 20:19:16.961654000 +0000 @@ -0,0 +1,26 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2011 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 3 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, see . */ + +#include "minsym-fallback.h" + +C c; + +int +main () +{ + c.f (); +} --- src/gdb/testsuite/gdb.cp/minsym-fallback.cc +++ src/gdb/testsuite/gdb.cp/minsym-fallback.cc 2011-07-01 20:19:17.298867000 +0000 @@ -0,0 +1,23 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2011 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 3 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, see . */ + +#include "minsym-fallback.h" + +void +C::f () +{ +} --- src/gdb/testsuite/gdb.cp/minsym-fallback.exp +++ src/gdb/testsuite/gdb.cp/minsym-fallback.exp 2011-07-01 20:19:17.664768000 +0000 @@ -0,0 +1,38 @@ +# Copyright (C) 2011 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 3 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, see . + +# The goal is to have class with full DWARF symbols present in one file having +# only a declaration there for the method. The method is then defined in +# a different file providing only ELF symbols. + +set testfile minsym-fallback +set srcfile ${testfile}.cc +set srcmainfile ${testfile}-main.cc +set executable $testfile +set objfile $objdir/$subdir/${testfile}.o +set objmainfile $objdir/$subdir/${testfile}-main.o +set binfile $objdir/$subdir/$executable +if {[gdb_compile $srcdir/$subdir/$srcfile $objfile object {}] != "" + || [gdb_compile $srcdir/$subdir/$srcmainfile $objmainfile object {debug}] != "" + || [gdb_compile "$objfile $objmainfile" $binfile executable {}] != ""} { + untested ${testfile}.exp + return -1 +} + +clean_restart ${executable} + +gdb_test_no_output "set breakpoint pending off" + +gdb_test "break 'C::f()'" {Breakpoint [0-9]+ at 0x[0-9a-f]+} --- src/gdb/testsuite/gdb.cp/minsym-fallback.h +++ src/gdb/testsuite/gdb.cp/minsym-fallback.h 2011-07-01 20:19:17.955661000 +0000 @@ -0,0 +1,22 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2011 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 3 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, see . */ + +class C +{ +public: + static void f (); +}; --- src/gdb/testsuite/gdb.cp/cplusfuncs.exp 2011/01/01 15:33:43 1.15 +++ src/gdb/testsuite/gdb.cp/cplusfuncs.exp 2011/07/01 20:16:39 1.16 @@ -616,7 +616,7 @@ # A regression test on errors involving operators gdb_test "list foo::operator $dm_type_int_star" \ - ".*the class foo does not have any method named operator $dm_type_int_star.*" + "Function \"foo::operator [string_to_regexp $dm_type_int_star]\" not defined\\." } do_tests