1# Copyright 2008-2013 Free Software Foundation, Inc. 2 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 5# the Free Software Foundation; either version 3 of the License, or 6# (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 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/>. 15 16# 17# Test asynchronous Machine Interface (MI) responses. 18# 19 20# Because of the way this test is written, using 'start' and not using 21# mi_run_cmd, it ignores whatever target the rest of GDB testsuite is 22# using, and always tries to run natively. So, don't do anything unless 23# we're actually testing native. 24if { !([isnative] && [istarget *-linux*]) } then { 25 return 26} 27 28# The plan is for async mode to become the default but toggle for now. 29set saved_gdbflags $GDBFLAGS 30set GDBFLAGS [concat $GDBFLAGS " -ex \"set target-async on\""] 31 32load_lib mi-support.exp 33 34gdb_exit 35if [mi_gdb_start] { 36 continue 37} 38 39standard_testfile basics.c 40 41if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { 42 untested mi-async.exp 43 return -1 44} 45 46mi_delete_breakpoints 47mi_gdb_reinitialize_dir $srcdir/$subdir 48mi_gdb_load ${binfile} 49 50# mi_gdb_test cannot be used for asynchronous commands because there are 51# two prompts involved and this can lead to a race condition. 52 53proc linux_async_tests {} { 54 global mi_gdb_prompt 55 global hex 56 57 set line_main_head [gdb_get_line_number "main ("] 58 set line_main_body [expr $line_main_head + 2] 59 set line_main_next [expr $line_main_head + 3] 60 61 mi_send_resuming_command_raw "start" "start: send" 62 mi_expect_stop "breakpoint-hit" "main" "" ".*basics.c" "$line_main_body" { "" "disp=\"del\"" } "start: stop" 63 64 mi_send_resuming_command_raw "next" "CLI next: send" 65 mi_expect_stop "end-stepping-range" "main" "" ".*basics.c" "$line_main_next" "" "CLI next: stop" 66 67 mi_gdb_test "-exec-interrupt" \ 68 "" \ 69 "" 70 71 mi_send_resuming_command_raw "start" "restart: send" 72 mi_expect_stop "breakpoint-hit" "main" "" ".*basics.c" "$line_main_body" { "" "disp=\"del\"" } "restart: stop" 73} 74 75 76linux_async_tests 77 78mi_gdb_exit 79 80set GDBFLAGS $saved_gdbflags 81 82return 0 83