diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-07-01 20:27:59 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-07-01 20:27:59 +0000 |
commit | 418c7cf76163513b4e26ff980214fc68bab5e0d5 (patch) | |
tree | a365cb7ae97debd161ba72610b6c33e560c966ce /gdb | |
parent | 3d50dd94cb60adbb423659378bb9d758381959a2 (diff) | |
download | gdb-418c7cf76163513b4e26ff980214fc68bab5e0d5.zip gdb-418c7cf76163513b4e26ff980214fc68bab5e0d5.tar.gz gdb-418c7cf76163513b4e26ff980214fc68bab5e0d5.tar.bz2 |
gdb/
* linespec.c (find_method): Accept the function type automatically only
if it was specified with parameter types.
gdb/testsuite/
* gdb.cp/paren-type.cc: New files.
* gdb.cp/paren-type.exp: New files.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/linespec.c | 5 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.cp/paren-type.cc | 33 | ||||
-rw-r--r-- | gdb/testsuite/gdb.cp/paren-type.exp | 26 |
5 files changed, 73 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 5ac570e..406da71 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2011-07-01 Jan Kratochvil <jan.kratochvil@redhat.com> + * linespec.c (find_method): Accept the function type automatically only + if it was specified with parameter types. + +2011-07-01 Jan Kratochvil <jan.kratochvil@redhat.com> + Stop on first linespec terminator instead of eating what we can. * linespec.c (is_linespec_boundary): New function. (name_end): Remove function. diff --git a/gdb/linespec.c b/gdb/linespec.c index 1b5b6f1..7740633 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -1697,7 +1697,10 @@ find_method (int funfirstline, struct linespec_result *canonical, i1 = find_methods (t, copy, SYMBOL_LANGUAGE (sym_class), sym_arr, file_symtab); - if (i1 == 1) + /* If we were given a specific overload instance in COPY, defer the field + acceptance till the strcmp_iw verification below, even if we found just + a single field with that name. */ + if (i1 == 1 && strchr (copy, '(') == NULL) { /* There is exactly one field with that name. */ sym = sym_arr[0]; diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index a0ecba7..7a37183 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2011-07-01 Jan Kratochvil <jan.kratochvil@redhat.com> + * gdb.cp/paren-type.cc: New files. + * gdb.cp/paren-type.exp: New files. + +2011-07-01 Jan Kratochvil <jan.kratochvil@redhat.com> + Stop on first linespec terminator instead of eating what we can. * gdb.cp/minsym-fallback-main.cc (main): Call also C::operator (). * gdb.cp/minsym-fallback.cc (C::operator ()): Define. diff --git a/gdb/testsuite/gdb.cp/paren-type.cc b/gdb/testsuite/gdb.cp/paren-type.cc new file mode 100644 index 0000000..00c4872 --- /dev/null +++ b/gdb/testsuite/gdb.cp/paren-type.cc @@ -0,0 +1,33 @@ +/* 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 <http://www.gnu.org/licenses/>. */ + +class C +{ +public: + static void f (short x); +}; + +void +C::f (short x) +{ +} + +int +main () +{ + C::f(1); +} diff --git a/gdb/testsuite/gdb.cp/paren-type.exp b/gdb/testsuite/gdb.cp/paren-type.exp new file mode 100644 index 0000000..daba521 --- /dev/null +++ b/gdb/testsuite/gdb.cp/paren-type.exp @@ -0,0 +1,26 @@ +# 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 <http://www.gnu.org/licenses/>. + +set testfile paren-type +if { [prepare_for_testing ${testfile}.exp ${testfile} ${testfile}.cc {c++ debug}] } { + return -1 +} + +gdb_test_no_output "set breakpoint pending off" + +gdb_test "break C::f(long)" {Function "C::f\(long\)" not defined\.} + +# Sanity check the breakpoints work for the correct type. +gdb_test "break C::f(short)" "Breakpoint 1 at \[^\r\n\]*" |