xref: /openbsd-src/gnu/usr.bin/binutils/gdb/testsuite/gdb.base/args.exp (revision b725ae7711052a2233e31a66fefb8a752c388d7a)
1# Copyright 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# This is a test for the gdb invocation option --args.
21
22if $tracelevel then {
23    strace $tracelevel
24}
25
26
27global GDBFLAGS
28
29# Skip test if target does not support argument passing.
30if [target_info exists noargs] {
31    return;
32}
33
34# No loading needs to be done when the target is `exec'.  Some targets
35# require that the program be loaded, however.
36proc args_load {} {
37    global binfile
38    if [target_info exists is_simulator] {
39	gdb_load ${binfile}
40    }
41}
42
43set testfile "args"
44set srcfile ${testfile}.c
45set binfile ${objdir}/${subdir}/${testfile}
46
47if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-w}] != "" } {
48    gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
49}
50
51#
52# Test that the --args are processed correctly.
53#
54set old_gdbflags $GDBFLAGS
55set GDBFLAGS "--args $binfile 1 3"
56gdb_exit
57gdb_start
58gdb_reinitialize_dir $srcdir/$subdir
59args_load
60gdb_test "run" \
61	"Starting program.*args(\\.exe)? 1 3.*3\r\n.*args\r\n1\r\n3.*Program exited normally." \
62	"correct args printed"
63
64#
65# Test that the --args are processed correctly even if one of them is empty.
66#
67set GDBFLAGS "--args $binfile 1 '' 3"
68gdb_exit
69gdb_start
70gdb_reinitialize_dir $srcdir/$subdir
71args_load
72gdb_test "run" \
73	"Starting program.*args(\\.exe)? 1 \\\\'\\\\' 3.*4\r\n.*args\r\n1\r\n''\r\n3.*Program exited normally." \
74	"correct args printed, one empty"
75
76#
77# try with 2 empty args
78#
79set GDBFLAGS "--args $binfile 1 '' '' 3"
80gdb_exit
81gdb_start
82gdb_reinitialize_dir $srcdir/$subdir
83args_load
84gdb_test "run" \
85	"Starting program.*args(\\.exe)? 1 \\\\'\\\\' \\\\'\\\\' 3.*5\r\n.*args\r\n1\r\n''\r\n''\r\n3.*Program exited normally." \
86	"correct args printed, two empty"
87
88set GDBFLAGS $old_gdbflags
89
90