e22f8b7c8c
Switch the license of all .f and .f90 files to GPLv3. Switch the license of all .s and .S files to GPLv3.
102 lines
2.8 KiB
Text
102 lines
2.8 KiB
Text
# Copyright 2003, 2007 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/>.
|
|
|
|
# Please email any bugs, comments, and/or additions to this file to:
|
|
# bug-gdb@prep.ai.mit.edu
|
|
|
|
# This is a test for the gdb invocation option --args.
|
|
|
|
if $tracelevel then {
|
|
strace $tracelevel
|
|
}
|
|
|
|
|
|
global GDBFLAGS
|
|
|
|
# Skip test if target does not support argument passing.
|
|
if [target_info exists noargs] {
|
|
return;
|
|
}
|
|
|
|
set testfile "args"
|
|
set srcfile ${testfile}.c
|
|
set binfile ${objdir}/${subdir}/${testfile}
|
|
|
|
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug nowarnings}] != "" } {
|
|
untested args.exp
|
|
return -1
|
|
}
|
|
|
|
proc args_test { name arglist } {
|
|
global srcdir
|
|
global subdir
|
|
global binfile
|
|
global hex
|
|
global decimal
|
|
|
|
gdb_exit
|
|
gdb_start
|
|
gdb_reinitialize_dir $srcdir/$subdir
|
|
|
|
# No loading needs to be done when the target is `exec'. Some targets
|
|
# require that the program be loaded, however, and it doesn't hurt
|
|
# for `exec'.
|
|
gdb_load $binfile
|
|
|
|
runto_main
|
|
gdb_breakpoint [gdb_get_line_number "set breakpoint here"]
|
|
gdb_continue_to_breakpoint "breakpoint for $name"
|
|
|
|
set expected_len [expr 1 + [llength $arglist]]
|
|
gdb_test "print argc" "\\\$$decimal = $expected_len" "argc for $name"
|
|
|
|
set i 1
|
|
foreach arg $arglist {
|
|
gdb_test "print argv\[$i\]" "\\\$$decimal = $hex \"$arg\"" \
|
|
"argv\[$i\] for $name"
|
|
set i [expr $i + 1]
|
|
}
|
|
}
|
|
|
|
#
|
|
# Test that the --args are processed correctly.
|
|
#
|
|
set old_gdbflags $GDBFLAGS
|
|
set GDBFLAGS "--args $binfile 1 3"
|
|
args_test basic {{1} {3}}
|
|
|
|
#
|
|
# Test that the --args are processed correctly even if one of them is empty.
|
|
# The syntax needed is a little peculiar; DejaGNU treats the arguments as a
|
|
# list and expands them itself, since no shell redirection is involved.
|
|
#
|
|
set GDBFLAGS "--args $binfile 1 {} 3"
|
|
args_test "one empty" {{1} {} {3}}
|
|
|
|
#
|
|
# try with 2 empty args
|
|
#
|
|
set GDBFLAGS "--args $binfile 1 {} {} 3"
|
|
args_test "two empty" {{1} {} {} 3}
|
|
|
|
# Try with arguments containing literal single quotes.
|
|
|
|
set GDBFLAGS "--args $binfile 1 '' 3"
|
|
args_test "one empty" {{1} {''} {3}}
|
|
|
|
set GDBFLAGS "--args $binfile 1 '' '' 3"
|
|
args_test "two empty" {{1} {''} {''} {3}}
|
|
|
|
set GDBFLAGS $old_gdbflags
|