From ae018d1aa1378fcd4f6ed213994ac7742155ae38 Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Fri, 15 Sep 2006 20:06:42 +0000 Subject: [PATCH] * gdb.base/args.c (main): Add breakpoint marker. * gdb.base/args.exp: Use args_test for tests. Add new tests which really test empty arguments. (args_load): Delete. (args_test): New. --- gdb/testsuite/ChangeLog | 8 ++++ gdb/testsuite/gdb.base/args.c | 2 +- gdb/testsuite/gdb.base/args.exp | 77 +++++++++++++++++++-------------- 3 files changed, 54 insertions(+), 33 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 28402c04b2..8b201de2c4 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2006-09-15 Daniel Jacobowitz + + * gdb.base/args.c (main): Add breakpoint marker. + * gdb.base/args.exp: Use args_test for tests. Add new tests which + really test empty arguments. + (args_load): Delete. + (args_test): New. + 2006-09-13 Nick Roberts * gdb.mi/mi-file.exp (test_file_list_exec_source_files): Just diff --git a/gdb/testsuite/gdb.base/args.c b/gdb/testsuite/gdb.base/args.c index d564120a60..637544a905 100644 --- a/gdb/testsuite/gdb.base/args.c +++ b/gdb/testsuite/gdb.base/args.c @@ -8,5 +8,5 @@ main (int argc, char **argv) while (i < argc) printf ("%s\n", argv[i++]); - return 0; + return 0; /* set breakpoint here */ } diff --git a/gdb/testsuite/gdb.base/args.exp b/gdb/testsuite/gdb.base/args.exp index fa3c6c2ace..75b55094f0 100644 --- a/gdb/testsuite/gdb.base/args.exp +++ b/gdb/testsuite/gdb.base/args.exp @@ -31,15 +31,6 @@ if [target_info exists noargs] { return; } -# No loading needs to be done when the target is `exec'. Some targets -# require that the program be loaded, however. -proc args_load {} { - global binfile - if [target_info exists is_simulator] { - gdb_load ${binfile} - } -} - set testfile "args" set srcfile ${testfile}.c set binfile ${objdir}/${subdir}/${testfile} @@ -49,42 +40,64 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb 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" -gdb_exit -gdb_start -gdb_reinitialize_dir $srcdir/$subdir -args_load -gdb_test "run" \ - "Starting program.*args(\\.exe)? 1 3.*3\r\n.*args\r\n1\r\n3.*Program exited normally." \ - "correct args printed" +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" -gdb_exit -gdb_start -gdb_reinitialize_dir $srcdir/$subdir -args_load -gdb_test "run" \ - "Starting program.*args(\\.exe)? 1 \\\\'\\\\' 3.*4\r\n.*args\r\n1\r\n''\r\n3.*Program exited normally." \ - "correct args printed, one empty" +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" -gdb_exit -gdb_start -gdb_reinitialize_dir $srcdir/$subdir -args_load -gdb_test "run" \ - "Starting program.*args(\\.exe)? 1 \\\\'\\\\' \\\\'\\\\' 3.*5\r\n.*args\r\n1\r\n''\r\n''\r\n3.*Program exited normally." \ - "correct args printed, two empty" +args_test "two empty" {{1} {''} {''} {3}} set GDBFLAGS $old_gdbflags -