1# Copyright 1999, 2000, 2001, 2002, 2003 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 2 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, write to the Free Software 15# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 16 17# Please email any bugs, comments, and/or additions to this file to: 18# bug-gdb@prep.ai.mit.edu 19 20# 21# Test essential Machine interface (MI) operations 22# 23# Verify that, using the MI, we can run a simple program and perform basic 24# debugging activities like: insert breakpoints, run the program, 25# step, next, continue until it ends and, last but not least, quit. 26# 27# The goal is not to test gdb functionality, which is done by other tests, 28# but to verify the correct output response to MI operations. 29# 30 31# This test only works when talking to a target that routes its output 32# through GDB. Check that we're either talking to a simulator or a 33# remote target. 34 35load_lib mi-support.exp 36set MIFLAGS "-i=mi" 37 38gdb_exit 39if [mi_gdb_start] { 40 continue 41} 42 43set testfile "mi-console" 44set srcfile ${testfile}.c 45set binfile ${objdir}/${subdir}/${testfile} 46if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } { 47 gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." 48} 49 50mi_delete_breakpoints 51mi_gdb_reinitialize_dir $srcdir/$subdir 52mi_gdb_load ${binfile} 53 54mi_run_to_main 55 56# Next over the hello() call which will produce lots of output 57send_gdb "47-exec-next\n" 58gdb_expect { 59 -re "47\\^running\r\n$mi_gdb_prompt" { 60 pass "Started step over hello" 61 } 62 timeout { 63 fail "Started step over hello (timeout)" 64 } 65} 66 67gdb_expect { 68 -re "@\"H\"\r\n.*@\"e\"\r\n.*@\"l\"\r\n.*@\"l\"\r\n.*@\"o\"\r\n.*@\" \"\r\n.*@\"\\\\\\\\\"\r\n.*@\"\\\\\"\"\r\n.*@\"!\"\r\n.*@\"\\\\r\"\r\n.*@\"\\\\n\"\r\n" { 69 pass "Hello message" 70 } 71 -re "Hello" { 72 73 # Probably a native system where GDB doesn't have direct 74 # control over the inferior console. 75 # For this to work, GDB would need to run the inferior process 76 # under a PTY and then use the even-loops ability to wait on 77 # multiple event sources to channel the output back through the 78 # MI. 79 80 kfail "gdb/623" "Hello message" 81 } 82 timeout { 83 fail "Hello message (timeout)" 84 } 85} 86 87gdb_expect { 88 -re "47\\*stopped.*$mi_gdb_prompt$" { 89 pass "Finished step over hello" 90 } 91 timeout { 92 fail "Finished step over hello (timeout)" 93 } 94} 95 96mi_gdb_exit 97return 0 98