OLD | NEW |
1 # Copyright 2007-2012 Free Software Foundation, Inc. | 1 # Copyright 2007-2012 Free Software Foundation, Inc. |
2 | 2 |
3 # This program is free software; you can redistribute it and/or modify | 3 # This program is free software; you can redistribute it and/or modify |
4 # it under the terms of the GNU General Public License as published by | 4 # it under the terms of the GNU General Public License as published by |
5 # the Free Software Foundation; either version 3 of the License, or | 5 # the Free Software Foundation; either version 3 of the License, or |
6 # (at your option) any later version. | 6 # (at your option) any later version. |
7 # | 7 # |
8 # This program is distributed in the hope that it will be useful, | 8 # This program is distributed in the hope that it will be useful, |
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
11 # GNU General Public License for more details. | 11 # GNU General Public License for more details. |
12 # | 12 # |
13 # You should have received a copy of the GNU General Public License | 13 # You should have received a copy of the GNU General Public License |
14 # along with this program. If not, see <http://www.gnu.org/licenses/>. | 14 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
15 | 15 |
16 # This file is part of the gdb testsuite | 16 # This file is part of the gdb testsuite |
17 | 17 |
18 # This tests setting a break in an ambiguous c++ method with | 18 # This tests setting a break in an ambiguous c++ method with |
19 # current_language set to c. | 19 # current_language set to c. |
20 | 20 |
21 if { [skip_cplus_tests] } { continue } | 21 if { [skip_cplus_tests] } { continue } |
22 | 22 |
23 set testfile "method2" | 23 standard_testfile .cc |
24 set srcfile ${testfile}.cc | |
25 set binfile ${objdir}/${subdir}/${testfile} | |
26 | 24 |
27 if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb
ug c++}] != "" } { | 25 if {[prepare_for_testing $testfile.exp $testfile $srcfile {debug c++}]} { |
28 untested method2.exp | 26 untested method2.exp |
29 return -1 | 27 return -1 |
30 } | 28 } |
31 | 29 |
32 if [get_compiler_info $binfile "c++"] { | 30 if {![runto_main]} { |
33 return -1 | |
34 } | |
35 | |
36 gdb_exit | |
37 gdb_start | |
38 gdb_reinitialize_dir $srcdir/$subdir | |
39 gdb_load ${binfile} | |
40 | |
41 if ![runto_main] then { | |
42 perror "couldn't run to breakpoint" | 31 perror "couldn't run to breakpoint" |
43 continue | 32 continue |
44 } | 33 } |
45 | 34 |
46 proc test_break { lang } { | 35 proc test_break { lang } { |
47 global gdb_prompt | 36 global gdb_prompt |
48 | 37 |
49 gdb_test "set lang $lang" \ | 38 gdb_test "set lang $lang" \ |
50 "" \ | 39 "" \ |
51 "setting language $lang" | 40 "setting language $lang" |
52 | 41 |
| 42 # Menu items should be alphabetical |
| 43 set ovlds [lsort {"" "int" "A*"}] |
| 44 set items {"cancel" "all"} |
| 45 foreach ovld $ovlds { |
| 46 lappend items "A::method($ovld)" |
| 47 } |
| 48 set menu_items {} |
| 49 set idx 0 |
| 50 foreach item $items { |
| 51 lappend menu_items ".$idx. .*[string_to_regexp $item]" |
| 52 incr idx |
| 53 } |
| 54 set expect [join $menu_items {.*[\r\n]*}] |
53 gdb_test_multiple "break A::method" "breaking in method ($lang)" { | 55 gdb_test_multiple "break A::method" "breaking in method ($lang)" { |
54 » -re ".0. cancel.*\[\r\n\]*.1. all.*\[\r\n\]*.2. .*:A::method\\(A\\*\\)\[
\r\n\]*.3. .*:A::method\\(int\\)\[\r\n\]*.4. .*:A::method\\(\\)\[\r\n\]*> $" { | 56 -re $expect { |
55 gdb_test "0" \ | 57 gdb_test "0" \ |
56 "canceled" \ | 58 "canceled" \ |
57 "breaking in method ($lang)" | 59 "breaking in method ($lang)" |
58 } | 60 } |
59 } | 61 } |
60 } | 62 } |
61 | 63 |
62 # We want in this test to double-check the contents of the multiple-choice | 64 # We want in this test to double-check the contents of the multiple-choice |
63 # menu that's printed when a breakpoint location is ambiguous. So we need | 65 # menu that's printed when a breakpoint location is ambiguous. So we need |
64 # to set multiple-symbols to "ask" first. | 66 # to set multiple-symbols to "ask" first. |
65 gdb_test_no_output "set multiple-symbols ask" | 67 gdb_test_no_output "set multiple-symbols ask" |
66 | 68 |
67 test_break "c" | 69 test_break "c" |
68 test_break "c++" | 70 test_break "c++" |
69 | 71 |
70 gdb_continue_to_end "continue to end" | 72 gdb_continue_to_end "continue to end" |
OLD | NEW |