# Copyright 2013-2016 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 . load_lib "ada.exp" standard_ada_testfile foo if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } { return -1 } clean_restart ${testfile} set ws "\[ \t\r\n\]+" # Start the program in order to have some tasks running... set bp_location [gdb_get_line_number "STOP_HERE" ${testdir}/foo.adb] gdb_test "break foo.adb:$bp_location" \ "Breakpoint $decimal.*" \ gdb_run_cmd gdb_test "" "Breakpoint $decimal, foo \\(\\).*" gdb_test "continue" \ "Continuing\\..*Breakpoint $decimal, foo \\(\\).*" # Make sure that "thread" may be used as a variable without being mistaken # for an expression delimiter. gdb_test "print thread" \ "= 1" \ "Print variable 'thread'" gdb_test_no_output "delete 1" gdb_test "watch thread" \ ".*atchpoint \[0-9\]+: thread" \ "Set plain watchpoint on variable 'thread'" # Make sure that 'if' when followed by an expression beginning # with 'i' works. gdb_test "watch thread if i = 2" \ ".*atchpoint \[0-9\]+: thread" \ "Set conditional watchpoint." gdb_test "info break" \ ".*${ws}.*atchpoint${ws}keep${ws}y${ws}thread${ws}.*atchpoint${ws}keep${ws}y${ws}thread${ws}stop only if i = 2" \ "Check that watchpoint is set correctly." # Check for right error when using both 'if' and 'thread' clauses. gdb_test "break foo.adb:$bp_location if thread = 10 thread 999" \ ".*Unknown thread 999\\." \ "Combination of 'if' and 'thread' delimiters."