2015-01-01 09:32:14 +00:00
|
|
|
# Copyright (C) 1998-2015 Free Software Foundation, Inc.
|
1999-04-16 01:35:26 +00:00
|
|
|
|
|
|
|
# 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
|
2007-08-23 18:14:19 +00:00
|
|
|
# the Free Software Foundation; either version 3 of the License, or
|
1999-04-16 01:35:26 +00:00
|
|
|
# (at your option) any later version.
|
2007-08-23 18:14:19 +00:00
|
|
|
#
|
1999-04-16 01:35:26 +00:00
|
|
|
# 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.
|
2007-08-23 18:14:19 +00:00
|
|
|
#
|
1999-04-16 01:35:26 +00:00
|
|
|
# You should have received a copy of the GNU General Public License
|
2007-08-23 18:14:19 +00:00
|
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
1999-04-16 01:35:26 +00:00
|
|
|
|
|
|
|
# written by Elena Zannoni (ezannoni@cygnus.com)
|
2001-01-28 23:49:43 +00:00
|
|
|
# modified by Michael Chastain (chastain@redhat.com)
|
1999-04-16 01:35:26 +00:00
|
|
|
|
|
|
|
# This file is part of the gdb testsuite
|
|
|
|
#
|
|
|
|
# tests for overloaded member functions. Set breakpoints on
|
|
|
|
# overloaded member functions
|
|
|
|
#
|
|
|
|
|
* gdb.cp/cp-relocate.exp: Remove single-quoting of C++ methods.
* gdb.cp/cplusfuncs.cc (dm_type_short): New function.
(dm_type_long): New function.
(dm_type_unsigned_short): New function.
(dm_type_unsigned_long): New function.
(myint): New typedef.
* gdb.cp/cplusfuncs.exp (probe_demangler): Add tests for short,
long, unsigned shor and long, operator char*, and typedef.
(test_lookup_operator_functions): Add operator char* test.
(test_paddr_operator_functions): Likewise.
(test_paddr_overloaded_functions): Use probe values for
short, long, and unsigned short and long.
(test_paddr_hairy_functions): If the demangler probe detected
gdb type printers, "expect" them. Otherwise "expect" the v2 or v3
demangler.
* gdb.cp/expand-sals.exp: Backtrace may contain class names.
* gdb.cp/member-ptr.exp: Refine expected result for "print pmf"
and "print null_pmf".
Add test "ptype a.*pmf".
* gdb.cp/overload.exp: Allow optional "int" to appear with
"short" and "long".
* gdb.cp/ovldbreak.exp: Use append to construct super-duper
long expect value for men_overload1arg.
Allow "int" to appear with "short" and "long".
When testing "info break", add argument for main (void).
Also allow "int" to appear with "short" and "long".
Ditto with "unsigned" and "long long".
* gdb.java/jmain.exp: Do not enclose methods names in single
quotes.
* gdb.java/jmisc.exp: Likewise.
* gdb.java/jprint.exp: Likewise.
* gdb.python/py-symbol.exp: Update expected "linkage_name" value.
From Jan Kratochvil <jan.kratochvil@redhat.com>:
* gdb.cp/exception.exp (backtrace after first throw)
(backtrace after second throw): Allow a namespace before __cxa_throw.
(backtrace after first catch, backtrace after second catch): Allow
a namespace before __cxa_begin_catch.
* gdb.cp/cpexprs.exp: New file.
* gdb.cp/cpexprs.cc: New file.
From Daniel Jacobowitz <dan@codesourcery.com>
* gdb.cp/cpexprs.exp (escape): Delete. Change all callers
to use string_to_regexp.
(ctor, dtor): New functions. Use them to match constructor
and destructor function types.
(Top level): Use runto_main.
2010-03-09 18:08:05 +00:00
|
|
|
global timeout
|
|
|
|
set timeout 15
|
1999-04-16 01:35:26 +00:00
|
|
|
#
|
|
|
|
# test running programs
|
|
|
|
#
|
|
|
|
|
1999-09-09 00:02:17 +00:00
|
|
|
if { [skip_cplus_tests] } { continue }
|
|
|
|
|
* gdb.cp/abstract-origin.exp: Use standard_testfile.
* gdb.cp/ambiguous.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/annota2.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/annota3.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/anon-ns.exp: Use standard_testfile.
* gdb.cp/anon-struct.exp: Use standard_testfile.
* gdb.cp/anon-union.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/arg-reference.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/bool.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/breakpoint.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/bs15503.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/call-c.exp: Use standard_testfile, clean_restart,
standard_output_file.
* gdb.cp/casts.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/class2.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/classes.exp: Use standard_testfile, prepare_for_testing.
(test_static_members): Update.
* gdb.cp/cmpd-minsyms.exp: Use standard_testfile.
* gdb.cp/converts.exp: Use standard_testfile.
* gdb.cp/cp-relocate.exp: Use standard_testfile.
* gdb.cp/cpcompletion.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/cpexprs.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/cplabel.exp: Use standard_testfile.
* gdb.cp/cplusfuncs.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/ctti.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/derivation.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/destrprint.exp: Use standard_testfile.
* gdb.cp/dispcxx.exp: Use standard_testfile.
* gdb.cp/exception.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/expand-psymtabs-cxx.exp: Use standard_testfile.
* gdb.cp/extern-c.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/formatted-ref.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/fpointer.exp: Use standard_testfile.
* gdb.cp/gdb1355.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/gdb2384.exp: Use standard_testfile, clean_restart,
standard_output_file.
* gdb.cp/gdb2495.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/hang.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/infcall-dlopen.exp: Use standard_testfile,
standard_output_file.
* gdb.cp/inherit.exp: Use standard_testfile, prepare_for_testing.
(do_tests): Update.
* gdb.cp/koenig.exp: Use standard_testfile.
* gdb.cp/local.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/m-data.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/m-static.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/mb-ctor.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/mb-inline.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/mb-templates.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/member-ptr.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/meth-typedefs.exp: Use standard_testfile.
* gdb.cp/method.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/method2.exp: Use standard_testfile.
* gdb.cp/minsym-fallback.exp: Use standard_testfile,
standard_output_file.
* gdb.cp/misc.exp: Use standard_testfile, prepare_for_testing.
(do_tests): Update.
* gdb.cp/namespace-enum.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/namespace-nested-import.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/namespace.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/nextoverthrow.exp: Use standard_testfile.
* gdb.cp/no-dmgl-verbose.exp: Use standard_testfile.
* gdb.cp/nsdecl.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/nsimport.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/nsnested.exp: Use standard_testfile.
* gdb.cp/nsnoimports.exp: Use standard_testfile.
* gdb.cp/nsrecurs.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/nsstress.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/nsusing.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/operator.exp: Use standard_testfile.
* gdb.cp/oranking.exp: Use standard_testfile.
* gdb.cp/overload-const.exp: Use standard_testfile.
* gdb.cp/overload.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/ovldbreak.exp: Use standard_testfile.
* gdb.cp/ovsrch.exp: Use standard_testfile.
* gdb.cp/paren-type.exp: Use standard_testfile.
* gdb.cp/pass-by-ref.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/pr-1023.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/pr-1210.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/pr-574.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/pr10687.exp: Use standard_testfile, clean_restart.
* gdb.cp/pr10728.exp: Use standard_testfile,
standard_output_file.
* gdb.cp/pr12028.exp: Use standard_testfile.
* gdb.cp/pr9067.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/pr9167.exp: Use standard_testfile.
* gdb.cp/pr9631.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/printmethod.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/psmang.exp: Use standard_testfile, clean_restart.
* gdb.cp/psymtab-parameter.exp: Use standard_testfile.
* gdb.cp/ptype-cv-cp.exp: Use standard_testfile.
* gdb.cp/re-set-overloaded.exp: Use standard_testfile,
standard_output_file.
* gdb.cp/readnow-language.exp: Use standard_testfile.
* gdb.cp/ref-params.exp: Use standard_testfile, build_executable.
(gdb_start_again): Use clean_restart.
* gdb.cp/ref-types.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/rtti.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/shadow.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/smartp.exp: Use standard_testfile.
* gdb.cp/static-method.exp: Use standard_testfile.
* gdb.cp/static-print-quit.exp: Use standard_testfile.
* gdb.cp/temargs.exp: Use standard_testfile.
* gdb.cp/templates.exp: Use standard_testfile,
prepare_for_testing.
(do_tests): Update.
* gdb.cp/try_catch.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/typedef-operator.exp: Use standard_testfile.
* gdb.cp/userdef.exp: Use standard_testfile, prepare_for_testing.
* gdb.cp/virtbase.exp: Use standard_testfile,
prepare_for_testing.
* gdb.cp/virtfunc.exp: Use standard_testfile,
prepare_for_testing.
(do_tests): Update.
* gdb.cp/virtfunc2.exp: Use standard_testfile,
prepare_for_testing.
2012-07-10 15:18:18 +00:00
|
|
|
standard_testfile .cc
|
1999-04-16 01:35:26 +00:00
|
|
|
|
2012-03-01 20:34:13 +00:00
|
|
|
if {[prepare_for_testing $testfile.exp $testfile $srcfile {debug c++}]} {
|
|
|
|
return -1
|
1999-04-16 01:35:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
# set it up at a breakpoint so we can play with the variable values
|
|
|
|
#
|
2012-03-01 20:34:13 +00:00
|
|
|
if {![runto_main]} {
|
1999-04-16 01:35:26 +00:00
|
|
|
perror "couldn't run to breakpoint"
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
|
2001-01-28 23:49:43 +00:00
|
|
|
# When I ask gdb to set a breakpoint on an overloaded function,
|
|
|
|
# gdb gives me a choice menu. I might get stuck in that choice menu
|
|
|
|
# (for example, if C++ name mangling is not working properly).
|
|
|
|
#
|
|
|
|
# This procedure issues a command that works at either the menu
|
|
|
|
# prompt or the command prompt to get back to the command prompt.
|
|
|
|
#
|
|
|
|
# Note that an empty line won't do it (it means 'repeat the previous command'
|
|
|
|
# at top level). A line with a single space in it works nicely.
|
1999-04-16 01:35:26 +00:00
|
|
|
|
2001-01-28 23:49:43 +00:00
|
|
|
proc take_gdb_out_of_choice_menu {} {
|
|
|
|
global gdb_prompt
|
2010-06-01 18:18:35 +00:00
|
|
|
gdb_test_multiple " " " " {
|
2001-01-28 23:49:43 +00:00
|
|
|
-re ".*$gdb_prompt $" {
|
|
|
|
}
|
|
|
|
timeout {
|
|
|
|
perror "could not resynchronize to command prompt (timeout)"
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
1999-04-16 01:35:26 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2001-01-28 23:49:43 +00:00
|
|
|
# This procedure sets an overloaded breakpoint.
|
|
|
|
# When I ask for such a breakpoint, gdb gives me a menu of 'cancel' 'all'
|
|
|
|
# and a bunch of choices. I then choose from that menu by number.
|
1999-04-16 01:35:26 +00:00
|
|
|
|
2001-01-28 23:49:43 +00:00
|
|
|
proc set_bp_overloaded {name expectedmenu mychoice bpnumber linenumber} {
|
|
|
|
global gdb_prompt hex srcfile
|
1999-04-16 01:35:26 +00:00
|
|
|
|
2001-01-28 23:49:43 +00:00
|
|
|
# Get into the overload menu.
|
|
|
|
send_gdb "break $name\n"
|
|
|
|
gdb_expect {
|
|
|
|
-re "$expectedmenu" {
|
|
|
|
pass "bp menu for $name choice $mychoice"
|
1999-04-16 01:35:26 +00:00
|
|
|
|
2001-01-28 23:49:43 +00:00
|
|
|
# Choose my choice.
|
|
|
|
send_gdb "$mychoice\n"
|
1999-04-16 01:35:26 +00:00
|
|
|
gdb_expect {
|
2001-01-28 23:49:43 +00:00
|
|
|
-re "Breakpoint $bpnumber at $hex: file.*$srcfile, line $linenumber.\r\n$gdb_prompt $" {
|
|
|
|
pass "set bp $bpnumber on $name $mychoice line $linenumber"
|
|
|
|
}
|
|
|
|
-re ".*$gdb_prompt $" {
|
|
|
|
fail "set bp $bpnumber on $name $mychoice line $linenumber (bad bp)"
|
|
|
|
}
|
|
|
|
timeout {
|
|
|
|
fail "set bp $bpnumber on $name $mychoice line $linenumber (timeout)"
|
|
|
|
take_gdb_out_of_choice_menu
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
-re ".*\r\n> " {
|
|
|
|
fail "bp menu for $name choice $mychoice (bad menu)"
|
|
|
|
take_gdb_out_of_choice_menu
|
|
|
|
}
|
|
|
|
-re ".*$gdb_prompt $" {
|
|
|
|
fail "bp menu for $name choice $mychoice (no menu)"
|
|
|
|
}
|
|
|
|
timeout {
|
|
|
|
fail "bp menu for $name choice $mychoice (timeout)"
|
|
|
|
take_gdb_out_of_choice_menu
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
1999-04-16 01:35:26 +00:00
|
|
|
|
2012-03-01 20:34:13 +00:00
|
|
|
# Compute the expected menu for overload1arg.
|
* gdb.cp/cp-relocate.exp: Remove single-quoting of C++ methods.
* gdb.cp/cplusfuncs.cc (dm_type_short): New function.
(dm_type_long): New function.
(dm_type_unsigned_short): New function.
(dm_type_unsigned_long): New function.
(myint): New typedef.
* gdb.cp/cplusfuncs.exp (probe_demangler): Add tests for short,
long, unsigned shor and long, operator char*, and typedef.
(test_lookup_operator_functions): Add operator char* test.
(test_paddr_operator_functions): Likewise.
(test_paddr_overloaded_functions): Use probe values for
short, long, and unsigned short and long.
(test_paddr_hairy_functions): If the demangler probe detected
gdb type printers, "expect" them. Otherwise "expect" the v2 or v3
demangler.
* gdb.cp/expand-sals.exp: Backtrace may contain class names.
* gdb.cp/member-ptr.exp: Refine expected result for "print pmf"
and "print null_pmf".
Add test "ptype a.*pmf".
* gdb.cp/overload.exp: Allow optional "int" to appear with
"short" and "long".
* gdb.cp/ovldbreak.exp: Use append to construct super-duper
long expect value for men_overload1arg.
Allow "int" to appear with "short" and "long".
When testing "info break", add argument for main (void).
Also allow "int" to appear with "short" and "long".
Ditto with "unsigned" and "long long".
* gdb.java/jmain.exp: Do not enclose methods names in single
quotes.
* gdb.java/jmisc.exp: Likewise.
* gdb.java/jprint.exp: Likewise.
* gdb.python/py-symbol.exp: Update expected "linkage_name" value.
From Jan Kratochvil <jan.kratochvil@redhat.com>:
* gdb.cp/exception.exp (backtrace after first throw)
(backtrace after second throw): Allow a namespace before __cxa_throw.
(backtrace after first catch, backtrace after second catch): Allow
a namespace before __cxa_begin_catch.
* gdb.cp/cpexprs.exp: New file.
* gdb.cp/cpexprs.cc: New file.
From Daniel Jacobowitz <dan@codesourcery.com>
* gdb.cp/cpexprs.exp (escape): Delete. Change all callers
to use string_to_regexp.
(ctor, dtor): New functions. Use them to match constructor
and destructor function types.
(Top level): Use runto_main.
2010-03-09 18:08:05 +00:00
|
|
|
# Note the arg type variations for void and integer types.
|
2001-01-28 23:49:43 +00:00
|
|
|
# This accommodates different versions of g++.
|
1999-04-16 01:35:26 +00:00
|
|
|
|
2012-03-01 20:34:13 +00:00
|
|
|
# Probe for the real types. This will do some unnecessary checking
|
|
|
|
# for some simple types (like "int"), but it's just easier to loop
|
|
|
|
# over all_types instead of calling out just the exceptions.
|
|
|
|
# This list /must/ remain in the same order that the methods are
|
|
|
|
# called in the source code. Otherwise the order in which breakpoints
|
|
|
|
# are hit (tested below) will be incorrect.
|
|
|
|
set all_types [list void char signed_char unsigned_char short_int \
|
|
|
|
unsigned_short_int int unsigned_int long_int \
|
|
|
|
unsigned_long_int float double]
|
|
|
|
|
|
|
|
# ARGUMENTS is an array that will map from synthetic type to argument
|
|
|
|
# expressions in the source code, which is of the form "arg = $decimal".
|
|
|
|
# ARGUMENTS stores this decimal number.
|
|
|
|
array set arguments {
|
|
|
|
void ""
|
|
|
|
char 2
|
|
|
|
signed_char 3
|
|
|
|
unsigned_char 4
|
|
|
|
short_int 5
|
|
|
|
unsigned_short_int 6
|
|
|
|
int 7
|
|
|
|
unsigned_int 8
|
|
|
|
long_int 9
|
|
|
|
unsigned_long_int 10
|
|
|
|
float 100(.0)?
|
|
|
|
double 200(.0)?
|
|
|
|
}
|
|
|
|
|
|
|
|
unset -nocomplain line types
|
|
|
|
foreach type $all_types {
|
|
|
|
# TYPES is an array that maps the synthetic names in ALL_TYPES
|
|
|
|
# to the real type used in the debugger. These will be checked
|
|
|
|
# below and changed if the debugger thinks they are different from
|
|
|
|
# their default values.
|
|
|
|
set types($type) [join [split $type "_"] " "]
|
|
|
|
|
|
|
|
# LINE is an array that will map from synthetic type to line number.
|
|
|
|
# in the source code.
|
|
|
|
set line($type) [gdb_get_line_number "fo1 $type"]
|
|
|
|
|
|
|
|
# Probe for the actual type.
|
|
|
|
gdb_test_multiple "print &foo::overload1arg($types($type))" \
|
|
|
|
"probe $types($type)" {
|
|
|
|
-re ".*\<foo::.*\>.*$gdb_prompt $" {
|
|
|
|
regexp {<.*>} $expect_out(0,string) func
|
|
|
|
regexp {\(.*\)} $func real_type
|
|
|
|
|
|
|
|
# Store the real type into TYPES.
|
|
|
|
set types($type) [string trim $real_type {()}]
|
|
|
|
|
|
|
|
# Create an inverse mapping of the actual type to
|
|
|
|
# the synthetic type.
|
|
|
|
set type_map("$types($type)") $type
|
|
|
|
pass "detect $type"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
# This is a list of the actual overloaded method arguments.
|
|
|
|
set overloads {}
|
|
|
|
foreach type $all_types {
|
|
|
|
lappend overloads $types($type)
|
|
|
|
}
|
|
|
|
|
|
|
|
# Sort this list alphabetically.
|
|
|
|
set overloads [lsort $overloads]
|
|
|
|
|
|
|
|
# Create the menu list.
|
|
|
|
set items {"cancel" "all"}
|
|
|
|
foreach ovld $overloads {
|
|
|
|
lappend items "$srcfile:foo::overload1arg\\($ovld\\)"
|
|
|
|
}
|
|
|
|
set menu_items {}
|
|
|
|
set idx 0
|
|
|
|
foreach item $items {
|
|
|
|
lappend menu_items ".$idx. .*$item"
|
|
|
|
incr idx
|
|
|
|
}
|
|
|
|
set menu_overload1arg [join $menu_items {[\r\n]*}]
|
|
|
|
append menu_overload1arg {[\r\n]*> $}
|
1999-04-16 01:35:26 +00:00
|
|
|
|
2008-04-03 21:42:33 +00:00
|
|
|
# Set multiple-symbols to "ask", to allow us to test the use
|
|
|
|
# of the multiple-choice menu when breaking on an overloaded method.
|
2010-06-02 20:03:16 +00:00
|
|
|
gdb_test_no_output "set multiple-symbols ask"
|
1999-04-16 01:35:26 +00:00
|
|
|
|
2001-01-28 23:49:43 +00:00
|
|
|
# Set breakpoints on foo::overload1arg, one by one.
|
2012-03-01 20:34:13 +00:00
|
|
|
set bpnum 1
|
|
|
|
set method "foo::overload1arg"
|
|
|
|
for {set idx 0} {$idx < [llength $overloads]} {incr idx} {
|
|
|
|
set type [lindex $overloads $idx]
|
|
|
|
set_bp_overloaded $method $menu_overload1arg \
|
|
|
|
[expr {$idx + 2}] [incr bpnum] $line($type_map("$type"))
|
|
|
|
}
|
1999-04-16 01:35:26 +00:00
|
|
|
|
2001-01-28 23:49:43 +00:00
|
|
|
# Verify the breakpoints.
|
2012-03-01 20:34:13 +00:00
|
|
|
set bptable "Num Type\[\t \]+Disp Enb Address\[\t \]+What.*"
|
|
|
|
append bptable "\[0-9\]+\[\t \]+breakpoint keep y\[\t \]+$hex\[\t \]+in main(\\((|void)\\))? at.*$srcfile:49\[\r\n\]+"
|
|
|
|
append bptable "\[\t \]+breakpoint already hit 1 time\[\r\n\]+"
|
|
|
|
foreach ovld $overloads {
|
|
|
|
append bptable [format "\[0-9\]+\[\t \]+breakpoint keep y\[\t \]+$hex\[\t \]+in foo::overload1arg\\(%s\\) at.*$srcfile:%d\[\r\n\]+" $ovld \
|
|
|
|
$line($type_map("$ovld"))]
|
|
|
|
}
|
|
|
|
gdb_test "info break" $bptable "breakpoint info (after setting one-by-one)"
|
1999-04-16 01:35:26 +00:00
|
|
|
|
2001-01-28 23:49:43 +00:00
|
|
|
# Test choice "cancel".
|
|
|
|
# This is copy-and-paste from set_bp_overloaded.
|
1999-04-16 01:35:26 +00:00
|
|
|
|
|
|
|
send_gdb "break foo::overload1arg\n"
|
|
|
|
gdb_expect {
|
2001-01-28 23:49:43 +00:00
|
|
|
-re "$menu_overload1arg" {
|
|
|
|
pass "bp menu for foo::overload1arg choice cancel"
|
|
|
|
# Choose cancel.
|
|
|
|
send_gdb "0\n"
|
|
|
|
gdb_expect {
|
|
|
|
-re "canceled\r\n$gdb_prompt $" {
|
|
|
|
pass "set bp on overload1arg canceled"
|
|
|
|
}
|
|
|
|
-re "cancelled\r\n$gdb_prompt $" {
|
|
|
|
pass "set bp on overload1arg canceled"
|
|
|
|
}
|
|
|
|
-re ".*$gdb_prompt $" {
|
|
|
|
fail "set bp on overload1arg canceled (bad message)"
|
|
|
|
}
|
|
|
|
timeout {
|
|
|
|
fail "set bp on overload1arg canceled (timeout)"
|
|
|
|
take_gdb_out_of_choice_menu
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
-re ".*\r\n> " {
|
|
|
|
fail "bp menu for foo::overload1arg choice cancel (bad menu)"
|
|
|
|
take_gdb_out_of_choice_menu
|
|
|
|
}
|
|
|
|
-re ".*$gdb_prompt $" {
|
|
|
|
fail "bp menu for foo::overload1arg choice cancel (no menu)"
|
|
|
|
}
|
|
|
|
timeout {
|
|
|
|
fail "bp menu for foo::overload1arg choice cancel (timeout)"
|
|
|
|
take_gdb_out_of_choice_menu
|
|
|
|
}
|
|
|
|
}
|
1999-04-16 01:35:26 +00:00
|
|
|
|
2012-03-01 20:34:13 +00:00
|
|
|
gdb_test "info break" $bptable "breakpoint info (after cancel)"
|
1999-04-16 01:35:26 +00:00
|
|
|
|
2001-01-28 23:49:43 +00:00
|
|
|
# Delete these breakpoints.
|
1999-04-16 01:35:26 +00:00
|
|
|
|
|
|
|
send_gdb "delete breakpoints\n"
|
|
|
|
gdb_expect {
|
2001-01-28 23:49:43 +00:00
|
|
|
-re "Delete all breakpoints.* $" {
|
1999-04-16 01:35:26 +00:00
|
|
|
send_gdb "y\n"
|
|
|
|
gdb_expect {
|
|
|
|
-re ".*$gdb_prompt $" {
|
2001-01-28 23:49:43 +00:00
|
|
|
pass "delete all breakpoints"
|
|
|
|
}
|
|
|
|
timeout {
|
|
|
|
fail "delete all breakpoints (timeout)"
|
1999-04-16 01:35:26 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2001-01-28 23:49:43 +00:00
|
|
|
timeout {
|
|
|
|
fail "delete all breakpoints (timeout)"
|
|
|
|
}
|
1999-04-16 01:35:26 +00:00
|
|
|
}
|
|
|
|
|
2001-01-28 23:49:43 +00:00
|
|
|
gdb_test "info breakpoints" "No breakpoints or watchpoints." "breakpoint info (after delete)"
|
1999-04-16 01:35:26 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2001-01-28 23:49:43 +00:00
|
|
|
# Test choice "all".
|
|
|
|
# This is copy-and-paste from set_bp_overloaded.
|
1999-04-16 01:35:26 +00:00
|
|
|
|
2001-01-28 23:49:43 +00:00
|
|
|
send_gdb "break foo::overload1arg\n"
|
|
|
|
gdb_expect {
|
|
|
|
-re "$menu_overload1arg" {
|
|
|
|
pass "bp menu for foo::overload1arg choice all"
|
|
|
|
# Choose all.
|
|
|
|
send_gdb "1\n"
|
|
|
|
gdb_expect {
|
the "ambiguous linespec" series
gdb
2011-12-06 Joel Brobecker <brobecker@acacore.com>
* language.h (struct language_defn): Add new component
la_symbol_name_compare.
* symfile.h (struct quick_symbol_functions): Update the profile
of parameter "name_matcher" for the expand_symtabs_matching
method. Update the documentation accordingly.
* ada-lang.h (ada_name_for_lookup): Add declaration.
* ada-lang.c (ada_name_for_lookup): New function, extracted out
from ada_iterate_over_symbols.
(ada_iterate_over_symbols): Do not encode symbol name anymore.
(ada_expand_partial_symbol_name): Adjust profile.
(ada_language_defn): Add value for la_symbol_name_compare field.
* linespec.c: #include "ada-lang.h".
(iterate_name_matcher): Add language parameter. Replace call
to strcmp_iw by call to language->la_symbol_name_compare.
(decode_variable): Encode COPY if current language is Ada.
* dwarf2read.c (dw2_expand_symtabs_matching): Adjust profile
of name_matcher parameter. Adjust call to name_matcher.
* psymtab.c (expand_symtabs_matching_via_partial): Likewise.
(expand_partial_symbol_names): Update profile of parameter "fun".
* psymtab.h (expand_partial_symbol_names): Update profile of
parameter "fun".
* symtab.c (demangle_for_lookup): Update function documentation.
(search_symbols_name_matches): Add language parameter.
(expand_partial_symbol_name): Likewise.
* c-lang.c (c_language_defn, cplus_language_defn)
(asm_language_defn, minimal_language_defn): Add value for
la_symbol_name_compare field.
* d-lang.c (d_language_defn): Likewise.
* f-lang.c (f_language_defn): Ditto.
* jv-lang.c (java_language_defn): Ditto.
* m2-lang.c (m2_language_defn): Ditto.
* objc-lang.c (objc_language_defn): Ditto.
* opencl-lang.c (opencl_language_defn): Ditto.
* p-lang.c (pascal_language_defn): Ditto.
* language.c (unknown_language_defn, auto_language_defn)
(local_language_defn): Ditto.
2011-12-06 Tom Tromey <tromey@redhat.com>
* linespec.c (iterate_over_all_matching_symtabs): Use
LA_ITERATE_OVER_SYMBOLS.
(lookup_prefix_sym, add_matching_symbols_to_info): Likewise.
(find_function_symbols, decode_variable): Remove Ada special
case.
* language.h (struct language_defn) <la_iterate_over_symbols>: New
field.
(LA_ITERATE_OVER_SYMBOLS): New macro.
* language.c (unknown_language_defn, auto_language_defn)
(local_language_defn): Update.
* c-lang.c (c_language_defn, cplus_language_defn)
(asm_language_defn, minimal_language_defn): Update.
* d-lang.c (d_language_defn): Update.
* f-lang.c (f_language_defn): Update.
* jv-lang.c (java_language_defn): Update.
* m2-lang.c (m2_language_defn): Update.
* objc-lang.c (objc_language_defn): Update.
* opencl-lang.c (opencl_language_defn): Update.
* p-lang.c (pascal_language_defn): Update.
* ada-lang.c (ada_iterate_over_symbols): New function.
(ada_language_defn): Update.
2011-12-06 Tom Tromey <tromey@redhat.com>
Joel Brobecker <brobecker@acacore.com>
PR breakpoints/13105, PR objc/8341, PR objc/8343, PR objc/8366,
PR objc/8535, PR breakpoints/11657, PR breakpoints/11970,
PR breakpoints/12023, PR breakpoints/12334, PR breakpoints/12856,
PR shlibs/8929, PR shlibs/7393:
* python/py-type.c (compare_maybe_null_strings): Rename from
compare_strings.
(check_types_equal): Update.
* utils.c (compare_strings): New function.
* tui/tui-winsource.c (tui_update_breakpoint_info): Update for
location changes.
* tracepoint.c (scope_info): Update.
(trace_find_line_command): Use DECODE_LINE_FUNFIRSTLINE.
* symtab.h (iterate_over_minimal_symbols)
(iterate_over_some_symtabs, iterate_over_symtabs)
(find_pcs_for_symtab_line, iterate_over_symbols)
(demangle_for_lookup): Declare.
(expand_line_sal): Remove.
* symtab.c (iterate_over_some_symtabs, iterate_over_symtabs)
(lookup_symtab_callback): New functions.
(lookup_symtab): Rewrite.
(demangle_for_lookup): New function, extract from
lookup_symbol_in_language.
(lookup_symbol_in_language): Use it.
(iterate_over_symbols): New function.
(find_line_symtab): Update.
(find_pcs_for_symtab_line): New functions.
(find_line_common): Add 'start' argument.
(decode_line_spec): Update. Change argument to 'flags', change
interpretation.
(append_expanded_sal): Remove.
(append_exact_match_to_sals): Remove.
(expand_line_sal): Remove.
* symfile.h (struct quick_symbol_functions) <lookup_symtab>:
Remove.
<map_symtabs_matching_filename>: New field.
* stack.c (func_command): Only look in the current program space.
Use DECODE_LINE_FUNFIRSTLINE.
* source.c (line_info): Set pspace on sal. Check program space in
the loop. Use DECODE_LINE_LIST_MODE.
(select_source_symtab): Use DECODE_LINE_FUNFIRSTLINE.
* solib-target.c: Remove DEF_VEC_I(CORE_ADDR).
* python/python.c (gdbpy_decode_line): Update.
* psymtab.c (partial_map_expand_apply): New function.
(partial_map_symtabs_matching_filename): Rename from
lookup_partial_symbol. Update arguments.
(lookup_symtab_via_partial_symtab): Remove.
(psym_functions): Update.
* objc-lang.h (parse_selector, parse_method): Don't declare.
(find_imps): Update.
* objc-lang.c (parse_selector, parse_method): Now static.
(find_methods): Change arguments. Fill in a vector of symbol
names.
(uniquify_strings): New function.
(find_imps): Change arguments.
* minsyms.c (iterate_over_minimal_symbols): New function.
* linespec.h (enum decode_line_flags): New.
(struct linespec_sals): New.
(struct linespec_result) <canonical>: Remove.
<pre_expanded, addr_string, sals>: New fields.
(destroy_linespec_result, make_cleanup_destroy_linespec_result)
(decode_line_full): Declare.
(decode_line_1): Update.
* linespec.c (struct address_entry, struct linespec_state, struct
collect_info): New types.
(add_sal_to_sals_basic, add_sal_to_sals, hash_address_entry)
(eq_address_entry, maybe_add_address): New functions.
(total_number_of_methods): Remove.
(iterate_name_matcher, iterate_over_all_matching_symtabs): New
functions.
(find_methods): Change arguments. Don't canonicalize input.
Simplify logic.
(add_matching_methods, add_constructors)
(build_canonical_line_spec): Remove.
(filter_results, convert_results_to_lsals): New functions.
(decode_line_2): Change arguments. Rewrite for new data
structures.
(decode_line_internal): Rename from decode_line_1. Change
arguments. Add cleanups. Update for new data structures.
(linespec_state_constructor, linespec_state_destructor)
(decode_line_full, decode_line_1): New functions.
(decode_indirect): Change arguments. Update.
(locate_first_half): Use skip_spaces.
(decode_objc): Change arguments. Update for new data structures.
Simplify logic.
(decode_compound): Change arguments. Add cleanups. Remove
fallback code, replace with error.
(struct decode_compound_collector): New type.
(collect_one_symbol): New function.
(lookup_prefix_sym): Change arguments. Update.
(compare_symbol_name, add_all_symbol_names_from_pspace)
(find_superclass_methods ): New functions.
(find_method): Rewrite.
(struct symtab_collector): New type.
(add_symtabs_to_list, collect_symtabs_from_filename): New
functions.
(symtabs_from_filename): Change API. Rename from
symtab_from_filename.
(collect_function_symbols): New function.
(find_function_symbols): Change API. Rename from
find_function_symbol. Rewrite.
(decode_all_digits): Change arguments. Rewrite.
(decode_dollar): Change arguments. Use decode_variable.
(decode_label): Change arguments. Rewrite.
(collect_symbols): New function.
(minsym_found): Change arguments. Rewrite.
(check_minsym, search_minsyms_for_name)
(add_matching_symbols_to_info): New function.
(decode_variable): Change arguments. Iterate over all symbols.
(symbol_found): Remove.
(symbol_to_sal): New function.
(init_linespec_result, destroy_linespec_result)
(cleanup_linespec_result, make_cleanup_destroy_linespec_result):
New functions.
(decode_digits_list_mode, decode_digits_ordinary): New functions.
* dwarf2read.c (dw2_map_expand_apply): New function.
(dw2_map_symtabs_matching_filename): Rename from
dw2_lookup_symtab. Change arguments.
(dwarf2_gdb_index_functions): Update.
* dwarf2loc.c: Remove DEF_VEC_I(CORE_ADDR).
* defs.h (compare_strings): Declare.
* cli/cli-cmds.c (compare_strings): Move to utils.c.
(edit_command, list_command): Use DECODE_LINE_LIST_MODE. Call
filter_sals.
(compare_symtabs, filter_sals): New functions.
* breakpoint.h (struct bp_location) <line_number, source_file>:
New fields.
(struct breakpoint) <line_number, source_file>: Remove.
<filter>: New field.
* breakpoint.c (print_breakpoint_location, init_raw_breakpoint)
(momentary_breakpoint_from_master, add_location_to_breakpoint):
Update for changes to locations.
(init_breakpoint_sal): Add 'filter' argument. Set 'filter' on
breakpoint.
(create_breakpoint_sal): Add 'filter' argument.
(remove_sal, expand_line_sal_maybe): Remove.
(create_breakpoints_sal): Remove 'sals' argument. Handle
pre-expanded sals and the filter.
(parse_breakpoint_sals): Use decode_line_full.
(check_fast_tracepoint_sals): Use get_sal_arch.
(create_breakpoint): Create a linespec_sals. Update.
(break_range_command): Use decode_line_full. Update.
(until_break_command): Update.
(clear_command): Update match conditions for linespec.c changes.
Use DECODE_LINE_LIST_MODE.
(say_where): Update for changes to locations.
(bp_location_dtor): Free 'source_file'.
(base_breakpoint_dtor): Free 'filter'. Don't free 'source_file'.
(update_static_tracepoint): Update for changes to locations.
(update_breakpoint_locations): Disable ranged breakpoint if too
many locations match. Update.
(addr_string_to_sals): Use decode_line_full. Resolve all sal
PCs.
(breakpoint_re_set_default): Don't call expand_line_sal_maybe.
(decode_line_spec_1): Update. Change argument name to 'flags',
change interpretation.
* block.h (block_containing_function): Declare.
* block.c (block_containing_function): New function.
* skip.c (skip_function_command): Update.
(skip_re_set): Update.
* infcmd.c (jump_command): Use DECODE_LINE_FUNFIRSTLINE.
* mi/mi-main.c (mi_cmd_trace_find): Use DECODE_LINE_FUNFIRSTLINE.
* NEWS: Add entry.
2011-12-06 Tom Tromey <tromey@redhat.com>
* elfread.c (elf_gnu_ifunc_resolver_return_stop): Allow
breakpoint's pspace to be NULL.
* breakpoint.h (struct breakpoint) <pspace>: Update comment.
* breakpoint.c (init_raw_breakpoint): Conditionally set
breakpoint's pspace.
(init_breakpoint_sal): Don't set breakpoint's pspace.
(prepare_re_set_context): Conditionally switch program space.
(addr_string_to_sals): Check executing_startup on location's
program space.
2011-12-06 Tom Tromey <tromey@redhat.com>
* breakpoint.h (enum enable_state) <bp_startup_disabled>: Remove.
* breakpoint.c (should_be_inserted): Explicitly check if program
space is executing startup.
(describe_other_breakpoints): Update.
(disable_breakpoints_before_startup): Change executing_startup
earlier. Remove loop.
(enable_breakpoints_after_startup): Likewise.
(init_breakpoint_sal): Don't use bp_startup_disabled.
(create_breakpoint): Don't use bp_startup_disabled.
(update_global_location_list): Use should_be_inserted.
(bkpt_re_set): Update.
gdb/testsuite
2011-12-06 Joel Brobecker <brobecker@acacore.com>
* gdb.ada/fullname_bp.exp: Add tests for other valid linespecs
involving a fully qualified function name.
2011-12-06 Tom Tromey <tromey@redhat.com>
* gdb.ada/homonym.exp: Add three breakpoint tests.
2011-12-06 Tom Tromey <tromey@redhat.com>
* gdb.base/solib-weak.exp (do_test): Remove kfail.
* gdb.trace/tracecmd.exp: Disable pending breakpoints earlier.
* gdb.objc/objcdecode.exp: Update for output changes.
* gdb.linespec/linespec.exp: New file.
* gdb.linespec/lspec.cc: New file.
* gdb.linespec/lspec.h: New file.
* gdb.linespec/body.h: New file.
* gdb.linespec/base/two/thefile.cc: New file.
* gdb.linespec/base/one/thefile.cc: New file.
* gdb.linespec/Makefile.in: New file.
* gdb.cp/templates.exp (test_template_breakpoints): Update for
output changes.
* gdb.cp/re-set-overloaded.exp: Remove kfail.
* gdb.cp/ovldbreak.exp: Update for output changes. "all" test now
makes one breakpoint.
* gdb.cp/method2.exp (test_break): Update for output changes.
* gdb.cp/mb-templates.exp: Update for output changes.
* gdb.cp/mb-inline.exp: Update for output changes.
* gdb.cp/mb-ctor.exp: Update for output changes.
* gdb.cp/ovsrch.exp: Use fully-qualified names.
* gdb.base/solib-symbol.exp: Run to main later. Breakpoint now
has multiple matches.
* gdb.base/sepdebug.exp: Disable pending breakpoints. Update for
error message change.
* gdb.base/list.exp (test_list_filename_and_number): Update for
error message change.
* gdb.base/break.exp: Disable pending breakpoints. Update for
output changes.
* configure.ac: Add gdb.linespec.
* configure: Rebuild.
* Makefile.in (ALL_SUBDIRS): Add gdb.linespec.
gdb/doc
2011-12-06 Tom Tromey <tromey@redhat.com>
* gdb.texinfo (Set Breaks): Update for new behavior.
2011-12-06 18:54:43 +00:00
|
|
|
-re "Breakpoint $decimal at $hex: foo::overload1arg. .12 locations.\r\n.*$gdb_prompt $" {
|
2001-01-28 23:49:43 +00:00
|
|
|
pass "set bp on overload1arg all"
|
|
|
|
}
|
|
|
|
-re ".*$gdb_prompt $" {
|
|
|
|
fail "set bp on overload1arg all (bad message)"
|
|
|
|
}
|
|
|
|
timeout {
|
|
|
|
fail "set bp on overload1arg all (timeout)"
|
|
|
|
take_gdb_out_of_choice_menu
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
-re ".*\r\n> " {
|
|
|
|
fail "bp menu for foo::overload1arg choice all (bad menu)"
|
|
|
|
take_gdb_out_of_choice_menu
|
|
|
|
}
|
|
|
|
-re ".*$gdb_prompt $" {
|
|
|
|
fail "bp menu for foo::overload1arg choice all (no menu)"
|
|
|
|
}
|
|
|
|
timeout {
|
|
|
|
fail "bp menu for foo::overload1arg choice all (timeout)"
|
|
|
|
take_gdb_out_of_choice_menu
|
|
|
|
}
|
|
|
|
}
|
1999-04-16 01:35:26 +00:00
|
|
|
|
2012-04-05 18:50:29 +00:00
|
|
|
# Create the breakpoint table for "info breakpoint".
|
|
|
|
set bptable "Num Type\[\t \]+Disp Enb Address\[\t \]+What.*\[\r\n]+"
|
|
|
|
append bptable "\[0-9\]+\[\t \]+breakpoint\[\t \]+keep\[\t \]y\[\t \]+<MULTIPLE>.*\[\r\n\]+"
|
|
|
|
foreach ovld {void char signed_char unsigned_char short_int \
|
|
|
|
unsigned_short_int int unsigned_int long_int \
|
|
|
|
unsigned_long_int float double} {
|
|
|
|
append bptable [format "\[0-9\]+.\[0-9\]+\[\t \]+y\[\t \]+$hex\[\t \]+in foo::overload1arg\\(%s\\) at.*$srcfile:%d\[\r\n\]+" \
|
|
|
|
$types($ovld) $line($ovld)]
|
|
|
|
}
|
2001-01-28 23:49:43 +00:00
|
|
|
|
2012-04-05 18:50:29 +00:00
|
|
|
gdb_test "info break" $bptable "breakpoint info (after setting on all)"
|
1999-04-16 01:35:26 +00:00
|
|
|
|
2001-01-28 23:49:43 +00:00
|
|
|
# Run through each breakpoint.
|
2012-03-01 20:34:13 +00:00
|
|
|
proc continue_to_bp_overloaded {bpnumber might_fail line argtype argument} {
|
|
|
|
global gdb_prompt hex decimal srcfile
|
|
|
|
|
|
|
|
if {$argument == ""} {
|
|
|
|
set actuals ""
|
|
|
|
} else {
|
|
|
|
set actuals "arg=$argument"
|
|
|
|
if {[regexp {char} $argtype]} {
|
|
|
|
append actuals " \\'\\\\00$argument\\'"
|
|
|
|
}
|
|
|
|
}
|
2001-01-28 23:49:43 +00:00
|
|
|
|
2012-03-01 20:34:13 +00:00
|
|
|
if {[string match $argtype "void"]} {
|
|
|
|
set body "return $decimal;"
|
|
|
|
} else {
|
|
|
|
set body "arg = 0; return $decimal;"
|
|
|
|
}
|
2003-02-04 01:09:03 +00:00
|
|
|
|
2012-03-01 20:34:13 +00:00
|
|
|
gdb_test_multiple "continue" "continue to bp overloaded : $argtype" {
|
|
|
|
-re "Continuing.\r\n\r\nBreakpoint $bpnumber, foo::overload1arg \\(this=${hex}(, )?$actuals\\) at .*$srcfile:$line\r\n$decimal\[\t \]+{ $body }.*$gdb_prompt $" {
|
|
|
|
pass "continue to bp overloaded : $argtype"
|
|
|
|
}
|
2001-01-28 23:49:43 +00:00
|
|
|
|
2012-03-01 20:34:13 +00:00
|
|
|
-re "Continuing.\r\n\r\nBreakpoint $bpnumber, foo::overload1arg \\(this=${hex}, arg=.*\\) at .*$srcfile:$line\r\n$decimal\[\t \]+{ $body }.*$gdb_prompt $" {
|
|
|
|
if $might_kfail {
|
|
|
|
kfail "c++/8130" "continue to bp overloaded : $argtype"
|
|
|
|
} else {
|
|
|
|
fail "continue to bp overloaded : $argtype"
|
|
|
|
}
|
|
|
|
}
|
1999-04-16 01:35:26 +00:00
|
|
|
}
|
2000-02-05 07:30:26 +00:00
|
|
|
}
|
1999-04-16 01:35:26 +00:00
|
|
|
|
2012-03-01 20:34:13 +00:00
|
|
|
# An array which describes which of these methods might be expected
|
|
|
|
# to kfail on GCC 2.95. See C++/8210.
|
|
|
|
array set might_fail {
|
|
|
|
void 0
|
|
|
|
char 1
|
|
|
|
signed_char 1
|
|
|
|
unsigned_char 1
|
|
|
|
short_int 1
|
|
|
|
unsigned_short_int 1
|
|
|
|
int 0
|
|
|
|
unsigned_int 0
|
|
|
|
long_int 0
|
|
|
|
unsigned_long_int 0
|
|
|
|
float 0
|
|
|
|
double 1
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach type $all_types {
|
|
|
|
continue_to_bp_overloaded 14 $might_fail($type) $line($type) \
|
|
|
|
$type $arguments($type)
|
|
|
|
}
|
2001-01-28 23:49:43 +00:00
|
|
|
|
2008-04-03 21:42:33 +00:00
|
|
|
# Test breaking on an overloaded function when multiple-symbols
|
|
|
|
# is set to "cancel"
|
2010-06-02 20:03:16 +00:00
|
|
|
gdb_test_no_output "set multiple-symbols cancel"
|
2008-04-03 21:42:33 +00:00
|
|
|
gdb_test "break foo::foofunc" \
|
|
|
|
"canceled.*"
|
|
|
|
|
|
|
|
# Test breaking on an overloaded function when multiple-symbols
|
|
|
|
# is set to "all"
|
2010-06-02 20:03:16 +00:00
|
|
|
gdb_test_no_output "set multiple-symbols all"
|
2008-04-03 21:42:33 +00:00
|
|
|
gdb_test "break foo::foofunc" \
|
the "ambiguous linespec" series
gdb
2011-12-06 Joel Brobecker <brobecker@acacore.com>
* language.h (struct language_defn): Add new component
la_symbol_name_compare.
* symfile.h (struct quick_symbol_functions): Update the profile
of parameter "name_matcher" for the expand_symtabs_matching
method. Update the documentation accordingly.
* ada-lang.h (ada_name_for_lookup): Add declaration.
* ada-lang.c (ada_name_for_lookup): New function, extracted out
from ada_iterate_over_symbols.
(ada_iterate_over_symbols): Do not encode symbol name anymore.
(ada_expand_partial_symbol_name): Adjust profile.
(ada_language_defn): Add value for la_symbol_name_compare field.
* linespec.c: #include "ada-lang.h".
(iterate_name_matcher): Add language parameter. Replace call
to strcmp_iw by call to language->la_symbol_name_compare.
(decode_variable): Encode COPY if current language is Ada.
* dwarf2read.c (dw2_expand_symtabs_matching): Adjust profile
of name_matcher parameter. Adjust call to name_matcher.
* psymtab.c (expand_symtabs_matching_via_partial): Likewise.
(expand_partial_symbol_names): Update profile of parameter "fun".
* psymtab.h (expand_partial_symbol_names): Update profile of
parameter "fun".
* symtab.c (demangle_for_lookup): Update function documentation.
(search_symbols_name_matches): Add language parameter.
(expand_partial_symbol_name): Likewise.
* c-lang.c (c_language_defn, cplus_language_defn)
(asm_language_defn, minimal_language_defn): Add value for
la_symbol_name_compare field.
* d-lang.c (d_language_defn): Likewise.
* f-lang.c (f_language_defn): Ditto.
* jv-lang.c (java_language_defn): Ditto.
* m2-lang.c (m2_language_defn): Ditto.
* objc-lang.c (objc_language_defn): Ditto.
* opencl-lang.c (opencl_language_defn): Ditto.
* p-lang.c (pascal_language_defn): Ditto.
* language.c (unknown_language_defn, auto_language_defn)
(local_language_defn): Ditto.
2011-12-06 Tom Tromey <tromey@redhat.com>
* linespec.c (iterate_over_all_matching_symtabs): Use
LA_ITERATE_OVER_SYMBOLS.
(lookup_prefix_sym, add_matching_symbols_to_info): Likewise.
(find_function_symbols, decode_variable): Remove Ada special
case.
* language.h (struct language_defn) <la_iterate_over_symbols>: New
field.
(LA_ITERATE_OVER_SYMBOLS): New macro.
* language.c (unknown_language_defn, auto_language_defn)
(local_language_defn): Update.
* c-lang.c (c_language_defn, cplus_language_defn)
(asm_language_defn, minimal_language_defn): Update.
* d-lang.c (d_language_defn): Update.
* f-lang.c (f_language_defn): Update.
* jv-lang.c (java_language_defn): Update.
* m2-lang.c (m2_language_defn): Update.
* objc-lang.c (objc_language_defn): Update.
* opencl-lang.c (opencl_language_defn): Update.
* p-lang.c (pascal_language_defn): Update.
* ada-lang.c (ada_iterate_over_symbols): New function.
(ada_language_defn): Update.
2011-12-06 Tom Tromey <tromey@redhat.com>
Joel Brobecker <brobecker@acacore.com>
PR breakpoints/13105, PR objc/8341, PR objc/8343, PR objc/8366,
PR objc/8535, PR breakpoints/11657, PR breakpoints/11970,
PR breakpoints/12023, PR breakpoints/12334, PR breakpoints/12856,
PR shlibs/8929, PR shlibs/7393:
* python/py-type.c (compare_maybe_null_strings): Rename from
compare_strings.
(check_types_equal): Update.
* utils.c (compare_strings): New function.
* tui/tui-winsource.c (tui_update_breakpoint_info): Update for
location changes.
* tracepoint.c (scope_info): Update.
(trace_find_line_command): Use DECODE_LINE_FUNFIRSTLINE.
* symtab.h (iterate_over_minimal_symbols)
(iterate_over_some_symtabs, iterate_over_symtabs)
(find_pcs_for_symtab_line, iterate_over_symbols)
(demangle_for_lookup): Declare.
(expand_line_sal): Remove.
* symtab.c (iterate_over_some_symtabs, iterate_over_symtabs)
(lookup_symtab_callback): New functions.
(lookup_symtab): Rewrite.
(demangle_for_lookup): New function, extract from
lookup_symbol_in_language.
(lookup_symbol_in_language): Use it.
(iterate_over_symbols): New function.
(find_line_symtab): Update.
(find_pcs_for_symtab_line): New functions.
(find_line_common): Add 'start' argument.
(decode_line_spec): Update. Change argument to 'flags', change
interpretation.
(append_expanded_sal): Remove.
(append_exact_match_to_sals): Remove.
(expand_line_sal): Remove.
* symfile.h (struct quick_symbol_functions) <lookup_symtab>:
Remove.
<map_symtabs_matching_filename>: New field.
* stack.c (func_command): Only look in the current program space.
Use DECODE_LINE_FUNFIRSTLINE.
* source.c (line_info): Set pspace on sal. Check program space in
the loop. Use DECODE_LINE_LIST_MODE.
(select_source_symtab): Use DECODE_LINE_FUNFIRSTLINE.
* solib-target.c: Remove DEF_VEC_I(CORE_ADDR).
* python/python.c (gdbpy_decode_line): Update.
* psymtab.c (partial_map_expand_apply): New function.
(partial_map_symtabs_matching_filename): Rename from
lookup_partial_symbol. Update arguments.
(lookup_symtab_via_partial_symtab): Remove.
(psym_functions): Update.
* objc-lang.h (parse_selector, parse_method): Don't declare.
(find_imps): Update.
* objc-lang.c (parse_selector, parse_method): Now static.
(find_methods): Change arguments. Fill in a vector of symbol
names.
(uniquify_strings): New function.
(find_imps): Change arguments.
* minsyms.c (iterate_over_minimal_symbols): New function.
* linespec.h (enum decode_line_flags): New.
(struct linespec_sals): New.
(struct linespec_result) <canonical>: Remove.
<pre_expanded, addr_string, sals>: New fields.
(destroy_linespec_result, make_cleanup_destroy_linespec_result)
(decode_line_full): Declare.
(decode_line_1): Update.
* linespec.c (struct address_entry, struct linespec_state, struct
collect_info): New types.
(add_sal_to_sals_basic, add_sal_to_sals, hash_address_entry)
(eq_address_entry, maybe_add_address): New functions.
(total_number_of_methods): Remove.
(iterate_name_matcher, iterate_over_all_matching_symtabs): New
functions.
(find_methods): Change arguments. Don't canonicalize input.
Simplify logic.
(add_matching_methods, add_constructors)
(build_canonical_line_spec): Remove.
(filter_results, convert_results_to_lsals): New functions.
(decode_line_2): Change arguments. Rewrite for new data
structures.
(decode_line_internal): Rename from decode_line_1. Change
arguments. Add cleanups. Update for new data structures.
(linespec_state_constructor, linespec_state_destructor)
(decode_line_full, decode_line_1): New functions.
(decode_indirect): Change arguments. Update.
(locate_first_half): Use skip_spaces.
(decode_objc): Change arguments. Update for new data structures.
Simplify logic.
(decode_compound): Change arguments. Add cleanups. Remove
fallback code, replace with error.
(struct decode_compound_collector): New type.
(collect_one_symbol): New function.
(lookup_prefix_sym): Change arguments. Update.
(compare_symbol_name, add_all_symbol_names_from_pspace)
(find_superclass_methods ): New functions.
(find_method): Rewrite.
(struct symtab_collector): New type.
(add_symtabs_to_list, collect_symtabs_from_filename): New
functions.
(symtabs_from_filename): Change API. Rename from
symtab_from_filename.
(collect_function_symbols): New function.
(find_function_symbols): Change API. Rename from
find_function_symbol. Rewrite.
(decode_all_digits): Change arguments. Rewrite.
(decode_dollar): Change arguments. Use decode_variable.
(decode_label): Change arguments. Rewrite.
(collect_symbols): New function.
(minsym_found): Change arguments. Rewrite.
(check_minsym, search_minsyms_for_name)
(add_matching_symbols_to_info): New function.
(decode_variable): Change arguments. Iterate over all symbols.
(symbol_found): Remove.
(symbol_to_sal): New function.
(init_linespec_result, destroy_linespec_result)
(cleanup_linespec_result, make_cleanup_destroy_linespec_result):
New functions.
(decode_digits_list_mode, decode_digits_ordinary): New functions.
* dwarf2read.c (dw2_map_expand_apply): New function.
(dw2_map_symtabs_matching_filename): Rename from
dw2_lookup_symtab. Change arguments.
(dwarf2_gdb_index_functions): Update.
* dwarf2loc.c: Remove DEF_VEC_I(CORE_ADDR).
* defs.h (compare_strings): Declare.
* cli/cli-cmds.c (compare_strings): Move to utils.c.
(edit_command, list_command): Use DECODE_LINE_LIST_MODE. Call
filter_sals.
(compare_symtabs, filter_sals): New functions.
* breakpoint.h (struct bp_location) <line_number, source_file>:
New fields.
(struct breakpoint) <line_number, source_file>: Remove.
<filter>: New field.
* breakpoint.c (print_breakpoint_location, init_raw_breakpoint)
(momentary_breakpoint_from_master, add_location_to_breakpoint):
Update for changes to locations.
(init_breakpoint_sal): Add 'filter' argument. Set 'filter' on
breakpoint.
(create_breakpoint_sal): Add 'filter' argument.
(remove_sal, expand_line_sal_maybe): Remove.
(create_breakpoints_sal): Remove 'sals' argument. Handle
pre-expanded sals and the filter.
(parse_breakpoint_sals): Use decode_line_full.
(check_fast_tracepoint_sals): Use get_sal_arch.
(create_breakpoint): Create a linespec_sals. Update.
(break_range_command): Use decode_line_full. Update.
(until_break_command): Update.
(clear_command): Update match conditions for linespec.c changes.
Use DECODE_LINE_LIST_MODE.
(say_where): Update for changes to locations.
(bp_location_dtor): Free 'source_file'.
(base_breakpoint_dtor): Free 'filter'. Don't free 'source_file'.
(update_static_tracepoint): Update for changes to locations.
(update_breakpoint_locations): Disable ranged breakpoint if too
many locations match. Update.
(addr_string_to_sals): Use decode_line_full. Resolve all sal
PCs.
(breakpoint_re_set_default): Don't call expand_line_sal_maybe.
(decode_line_spec_1): Update. Change argument name to 'flags',
change interpretation.
* block.h (block_containing_function): Declare.
* block.c (block_containing_function): New function.
* skip.c (skip_function_command): Update.
(skip_re_set): Update.
* infcmd.c (jump_command): Use DECODE_LINE_FUNFIRSTLINE.
* mi/mi-main.c (mi_cmd_trace_find): Use DECODE_LINE_FUNFIRSTLINE.
* NEWS: Add entry.
2011-12-06 Tom Tromey <tromey@redhat.com>
* elfread.c (elf_gnu_ifunc_resolver_return_stop): Allow
breakpoint's pspace to be NULL.
* breakpoint.h (struct breakpoint) <pspace>: Update comment.
* breakpoint.c (init_raw_breakpoint): Conditionally set
breakpoint's pspace.
(init_breakpoint_sal): Don't set breakpoint's pspace.
(prepare_re_set_context): Conditionally switch program space.
(addr_string_to_sals): Check executing_startup on location's
program space.
2011-12-06 Tom Tromey <tromey@redhat.com>
* breakpoint.h (enum enable_state) <bp_startup_disabled>: Remove.
* breakpoint.c (should_be_inserted): Explicitly check if program
space is executing startup.
(describe_other_breakpoints): Update.
(disable_breakpoints_before_startup): Change executing_startup
earlier. Remove loop.
(enable_breakpoints_after_startup): Likewise.
(init_breakpoint_sal): Don't use bp_startup_disabled.
(create_breakpoint): Don't use bp_startup_disabled.
(update_global_location_list): Use should_be_inserted.
(bkpt_re_set): Update.
gdb/testsuite
2011-12-06 Joel Brobecker <brobecker@acacore.com>
* gdb.ada/fullname_bp.exp: Add tests for other valid linespecs
involving a fully qualified function name.
2011-12-06 Tom Tromey <tromey@redhat.com>
* gdb.ada/homonym.exp: Add three breakpoint tests.
2011-12-06 Tom Tromey <tromey@redhat.com>
* gdb.base/solib-weak.exp (do_test): Remove kfail.
* gdb.trace/tracecmd.exp: Disable pending breakpoints earlier.
* gdb.objc/objcdecode.exp: Update for output changes.
* gdb.linespec/linespec.exp: New file.
* gdb.linespec/lspec.cc: New file.
* gdb.linespec/lspec.h: New file.
* gdb.linespec/body.h: New file.
* gdb.linespec/base/two/thefile.cc: New file.
* gdb.linespec/base/one/thefile.cc: New file.
* gdb.linespec/Makefile.in: New file.
* gdb.cp/templates.exp (test_template_breakpoints): Update for
output changes.
* gdb.cp/re-set-overloaded.exp: Remove kfail.
* gdb.cp/ovldbreak.exp: Update for output changes. "all" test now
makes one breakpoint.
* gdb.cp/method2.exp (test_break): Update for output changes.
* gdb.cp/mb-templates.exp: Update for output changes.
* gdb.cp/mb-inline.exp: Update for output changes.
* gdb.cp/mb-ctor.exp: Update for output changes.
* gdb.cp/ovsrch.exp: Use fully-qualified names.
* gdb.base/solib-symbol.exp: Run to main later. Breakpoint now
has multiple matches.
* gdb.base/sepdebug.exp: Disable pending breakpoints. Update for
error message change.
* gdb.base/list.exp (test_list_filename_and_number): Update for
error message change.
* gdb.base/break.exp: Disable pending breakpoints. Update for
output changes.
* configure.ac: Add gdb.linespec.
* configure: Rebuild.
* Makefile.in (ALL_SUBDIRS): Add gdb.linespec.
gdb/doc
2011-12-06 Tom Tromey <tromey@redhat.com>
* gdb.texinfo (Set Breaks): Update for new behavior.
2011-12-06 18:54:43 +00:00
|
|
|
"Breakpoint \[0-9\]+ at ${hex}: foo::foofunc. .2 locations..*"
|
2000-02-05 07:30:26 +00:00
|
|
|
|
2001-01-28 23:49:43 +00:00
|
|
|
# That's all, folks.
|
2000-02-05 07:30:26 +00:00
|
|
|
|
2012-03-01 20:34:13 +00:00
|
|
|
unset -nocomplain line types
|
2000-02-05 07:30:26 +00:00
|
|
|
gdb_continue_to_end "finish program"
|