1# Copyright 1988, 1990, 1991, 1992, 1994, 1995, 1996, 1997, 1999, 2000 2# Free Software Foundation, Inc. 3 4# This program is free software; you can redistribute it and/or modify 5# it under the terms of the GNU General Public License as published by 6# the Free Software Foundation; either version 2 of the License, or 7# (at your option) any later version. 8# 9# This program is distributed in the hope that it will be useful, 10# but WITHOUT ANY WARRANTY; without even the implied warranty of 11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12# GNU General Public License for more details. 13# 14# You should have received a copy of the GNU General Public License 15# along with this program; if not, write to the Free Software 16# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 18# Please email any bugs, comments, and/or additions to this file to: 19# bug-gdb@prep.ai.mit.edu 20 21# This file was written by Rob Savoye. (rob@cygnus.com) 22 23# These tests don't work for targets can't take arguments... 24 25if [target_info exists noargs] then { 26 verbose "Skipping a2-run.exp because of noargs." 27 return 28} 29 30# Can't do this test without stdio support. 31if [gdb_skip_stdio_test "a2run.exp"] { 32 return 33} 34 35if $tracelevel then { 36 strace $tracelevel 37} 38 39# 40# test running programs 41# 42set prms_id 0 43set bug_id 0 44 45set testfile "run" 46set srcfile ${testfile}.c 47set binfile ${objdir}/${subdir}/${testfile} 48if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { 49 gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." 50} 51 52gdb_exit 53gdb_start 54gdb_reinitialize_dir $srcdir/$subdir 55gdb_load ${binfile} 56 57# Run with no arguments. 58# On VxWorks this justs make sure the program was run. 59gdb_run_cmd 60 61if [istarget "*-*-vxworks*"] then { 62 set timeout 120 63 verbose "Timeout is now $timeout seconds" 2 64 gdb_expect { 65 "Program exited normally" { 66 unresolved "run \"$testfile\" with no args" 67 } 68 -re "usage: factorial <number>" { 69 pass "run \"$testfile\" with no args" 70 } 71 timeout { 72 fail "(timeout) run \"$testfile\" with no args" 73 } 74 } 75 set timeout 10 76 verbose "Timeout is now $timeout seconds" 2 77 gdb_expect -re "$gdb_prompt $" {} 78} else { 79 gdb_expect { 80 -re ".*usage: factorial <number>.*Program exited with code 01.*$gdb_prompt $" { 81 pass "run \"$testfile\" with no args" 82 } 83 -re ".*usage: factorial <number>.* EXIT code 1.*Program exited normally.*$gdb_prompt $" { 84 pass "run \"$testfile\" with no args (exit wrapper)" 85 } 86 -re ".*$gdb_prompt $" { 87 fail "run \"$testfile\" with no args" 88 verbose "expect_out is $expect_out(buffer)" 2 89 } 90 timeout { 91 fail "(timeout) run \"$testfile\" no args" 92 } 93 } 94} 95# Now run with some arguments 96if [istarget "*-*-vxworks*"] then { 97 send_gdb "run vxmain \"5\"\n" 98 gdb_expect -re "run vxmain \"5\"\r\n" {} 99 set timeout 120 100 verbose "Timeout is now $timeout seconds" 2 101 gdb_expect { 102 "Program exited normally" { 103 unresolved "run \"$testfile\" with arg" 104 } 105 "120" { 106 pass "run \"$testfile\" with arg" 107 } 108 timeout { 109 fail "(timeout) run \"$testfile\" with arg" 110 } 111 } 112 set timeout 10 113 verbose "Timeout is now $timeout seconds" 2 114 gdb_expect -re "$gdb_prompt $" {} 115} else { 116 setup_xfail "mips-idt-*" "arm-*-coff strongarm-*-coff" 117 gdb_run_cmd 5 118 gdb_expect { 119 -re ".*120.*$gdb_prompt $"\ 120 { pass "run \"$testfile\" with arg" } 121 -re ".*$gdb_prompt $" { fail "run \"$testfile\" with arg" } 122 timeout { fail "(timeout) run \"$testfile\" with arg" } 123 } 124} 125 126# Run again with same arguments. 127setup_xfail "mips-idt-*" 128gdb_run_cmd 129 130if [istarget "*-*-vxworks*"] then { 131 set timeout 120 132 verbose "Timeout is now $timeout seconds" 2 133 gdb_expect { 134 "Program exited normally" { 135 unresolved "run \"$testfile\" again with same args" 136 } 137 "120" { pass "run \"$testfile\" again with same args" } 138 timeout { fail "(timeout) run \"$testfile\" again with same args" } 139 } 140 set timeout 10 141 verbose "Timeout is now $timeout seconds" 2 142 gdb_expect -re "$gdb_prompt $" {} 143} else { 144 setup_xfail "arm-*-coff strongarm-*-coff" 145 gdb_expect { 146 -re ".*120.*$gdb_prompt $"\ 147 { pass "run \"$testfile\" again with same args" } 148 -re ".*$gdb_prompt $" { fail "run \"$testfile\" again with same args" } 149 timeout { fail "(timeout) run \"$testfile\" again with same args" } 150 } 151} 152 153# Use "set args" command to specify no arguments as default and run again. 154if [istarget "*-*-vxworks*"] then { 155 send_gdb "set args main\n" 156} else { 157 send_gdb "set args\n" 158} 159gdb_expect -re "$gdb_prompt $" 160 161gdb_run_cmd 162 163if [istarget "*-*-vxworks*"] then { 164 set timeout 120 165 verbose "Timeout is now $timeout seconds" 2 166 gdb_expect { 167 "Program exited normally" { 168 unresolved "run after setting args to nil" 169 } 170 "usage: factorial <number>" { 171 pass "run after setting args to nil" 172 } 173 timeout { 174 fail "(timeout) run after setting args to nil" 175 } 176 } 177 set timeout 10 178 verbose "Timeout is now $timeout seconds" 2 179 gdb_expect -re "$gdb_prompt $" {} 180} else { 181 gdb_expect { 182 -re ".*usage: factorial <number>.*$gdb_prompt $" { 183 pass "run after setting args to nil" 184 } 185 -re ".*$gdb_prompt $" { 186 fail "run after setting args to nil" 187 } 188 timeout { 189 fail "(timeout) run after setting args to nil" 190 } 191 } 192} 193 194# Use "set args" command to specify an argument and run again. 195setup_xfail "mips-idt-*" 196if [istarget "*-*-vxworks*"] then { 197 send_gdb "set args vxmain \"6\"\n" 198} else { 199 send_gdb "set args 6\n" 200} 201gdb_expect -re "$gdb_prompt $" 202gdb_run_cmd 203 204if [istarget "*-*-vxworks*"] then { 205 set timeout 120 206 verbose "Timeout is now $timeout seconds" 2 207 gdb_expect { 208 "Program exited normally" { 209 unresolved "run \"$testfile\" again after setting args" 210 } 211 "720" { 212 pass "run \"$testfile\" again after setting args" 213 } 214 timeout { 215 fail "(timeout) run \"$testfile\" again after setting args" 216 } 217 } 218 set timeout 10 219 verbose "Timeout is now $timeout seconds" 2 220 gdb_expect -re "$gdb_prompt $" {} 221} else { 222 setup_xfail "arm-*-coff strongarm-*-coff" 223 gdb_expect { 224 -re ".*720.*$gdb_prompt $" { 225 pass "run \"$testfile\" again after setting args" 226 } 227 -re ".*$gdb_prompt $" { 228 fail "run \"$testfile\" again after setting args" 229 } 230 timeout { 231 fail "(timeout) run \"$testfile\" again after setting args" 232 } 233 } 234} 235 236# GOAL: Test that shell is being used with "run". For remote debugging 237# targets, there is no guarantee that a "shell" (whatever that is) is used. 238if ![is_remote target] then { 239 send_gdb "run `echo 8`\n" 240 gdb_expect { 241 -re "Starting program.*40320.*$gdb_prompt $" { 242 pass "run \"$testfile\" with shell" 243 } 244 -re ".*$gdb_prompt $" { 245 fail "run \"$testfile\" with shell" 246 } 247 timeout { 248 fail "(timeout) run \"$testfile\" with shell" 249 } 250 } 251} 252 253# Reset the default arguments for VxWorks 254if [istarget "*-*-vxworks*"] then { 255 send_gdb "set args main\n" 256 gdb_expect -re ".*$gdb_prompt $" {} 257} 258