| # Copyright 1988-2015 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 <http://www.gnu.org/licenses/>. |
| |
| # This file was written by Rob Savoye. (rob@cygnus.com) |
| |
| # Can't do this test without stdio support. |
| if [gdb_skip_stdio_test "a2run.exp"] { |
| return |
| } |
| |
| # |
| # test running programs |
| # |
| |
| standard_testfile run.c |
| |
| if { [prepare_for_testing ${testfile}.exp $testfile $srcfile] } { |
| return -1 |
| } |
| |
| # Run with no arguments. |
| gdb_run_cmd |
| |
| set test "run \"$testfile\" with no args" |
| |
| gdb_test_multiple "" $test { |
| -re ".*usage: factorial <number>.*$inferior_exited_re with code 01.\r\n$gdb_prompt $" { |
| pass $test |
| pass "no spurious messages at program exit" |
| } |
| -re ".*usage: factorial <number>.*$inferior_exited_re with code 01.*$gdb_prompt $" { |
| pass $test |
| fail "no spurious messages at program exit" |
| } |
| -re ".*usage: factorial <number>.* EXIT code 1.*$inferior_exited_re normally.\r\n$gdb_prompt $" { |
| pass "$test (exit wrapper)" |
| pass "no spurious messages at program exit" |
| } |
| -re ".*usage: factorial <number>.* EXIT code 1.*$inferior_exited_re normally.*$gdb_prompt $" { |
| pass "$test (exit wrapper)" |
| fail "no spurious messages at program exit" |
| } |
| } |
| |
| # The remaining tests don't work for targets can't take arguments... |
| |
| if [target_info exists noargs] then { |
| verbose "Skipping rest of a2-run.exp because of noargs." |
| return |
| } |
| |
| # Now run with some arguments |
| setup_xfail "arm-*-coff" |
| gdb_run_cmd 5 |
| gdb_test "" "120.*" "run \"$testfile\" with arg" |
| |
| # Run again with same arguments. |
| gdb_run_cmd |
| |
| setup_xfail "arm-*-coff" |
| gdb_test "" "120.*" "run \"$testfile\" again with same args" |
| |
| # Use "set args" command to specify no arguments as default and run again. |
| gdb_test_no_output "set args" |
| |
| gdb_run_cmd |
| |
| gdb_test "" "usage: factorial <number>.*" "run after setting args to nil" |
| |
| # Use "set args" command to specify an argument and run again. |
| gdb_test_no_output "set args 6" |
| |
| gdb_run_cmd |
| |
| setup_xfail "arm-*-coff" |
| gdb_test "" "720.*" "run \"$testfile\" again after setting args" |
| |
| # GOAL: Test that shell is being used with "run". For remote debugging |
| # targets, there is no guarantee that a "shell" (whatever that is) is used. |
| if ![is_remote target] then { |
| gdb_test "run `echo 8`" \ |
| "Starting program.*40320.*" \ |
| "run \"$testfile\" with shell" |
| } |