| 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 |