From fef7f251fecfb5747dae456d2f9b08772f3a3768 Mon Sep 17 00:00:00 2001 From: Andrew Burgess Date: Wed, 27 Sep 2023 18:22:52 +0100 Subject: [PATCH] gdb/testsuite: cleanup in gdb.base/args.exp The last few commits resolved the KFAILs in gdb.base/args.exp. With those out of the way we can clean up this test script a little. In this commit I have: - Stopped passing 'nowarnings' flag when building the source file. I see no reason why this source should issue a warning, - Moved setup of GDBFLAGS into args_test proc, callers that passed a newline needed a small tweak, and also the matching code needs updating for newline handling, but I think this is nicer, the argument lists are now given just once, - Updated comment on args_test, - Updated other comments. There should be no change in what is tested after this commit. Approved-By: Tom Tromey --- gdb/testsuite/gdb.base/args.exp | 88 ++++++++++++++------------------- 1 file changed, 36 insertions(+), 52 deletions(-) diff --git a/gdb/testsuite/gdb.base/args.exp b/gdb/testsuite/gdb.base/args.exp index 0e2dc8b1399..cb50a4872b5 100644 --- a/gdb/testsuite/gdb.base/args.exp +++ b/gdb/testsuite/gdb.base/args.exp @@ -24,76 +24,60 @@ require !use_gdb_stub standard_testfile -if {[build_executable $testfile.exp $testfile \ - $srcfile {debug nowarnings}] == -1} { +if {[build_executable $testfile.exp $testfile $srcfile] == -1} { untested "failed to compile" return -1 } # NAME is the name to use for the tests and ARGLIST is the list of -# expected arguments. +# arguments that are passed to GDB when it is started. proc args_test { name arglist } { - global srcdir - global subdir - global testfile - global hex - global decimal - - clean_restart $testfile - - 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] + save_vars { ::GDBFLAGS } { + set ::GDBFLAGS "$::GDBFLAGS --args $::binfile $arglist" + + clean_restart $::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 { + if { $arg eq "\n" } { + set arg {\\n} + } + gdb_test "print argv\[$i\]" "\\\$$::decimal = $::hex \"$arg\"" \ + "argv\[$i\] for $name" + set i [expr $i + 1] + } } } -# # Test that the --args are processed correctly. -# -save_vars { GDBFLAGS } { - set old_gdbflags $GDBFLAGS +args_test basic {{1} {3}} - set GDBFLAGS "$old_gdbflags --args $binfile 1 3" - args_test basic {{1} {3}} +# Test that the --args are processed correctly even if one of them is +# empty. - # - # 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 "$old_gdbflags --args $binfile 1 {} 3" - args_test "one empty" {{1} {} {3}} +args_test "one empty" {{1} {} {3}} - # - # try with 2 empty args - # - set GDBFLAGS "$old_gdbflags --args $binfile 1 {} {} 3" - args_test "two empty" {{1} {} {} 3} +# Try with 2 empty args. - # Try with arguments containing literal single quotes. +args_test "two empty" {{1} {} {} 3} - set GDBFLAGS "$old_gdbflags --args $binfile 1 '' 3" - args_test "one empty with single quotes" {{1} {''} {3}} +# Try with arguments containing literal single quotes. - set GDBFLAGS "$old_gdbflags --args $binfile 1 '' '' 3" - args_test "two empty with single quotes" {{1} {''} {''} {3}} +args_test "one empty with single quotes" {{1} {''} {3}} - # try with arguments containing literal newlines. +args_test "two empty with single quotes" {{1} {''} {''} {3}} - set GDBFLAGS "$old_gdbflags --args $binfile 1 {\n} 3" - args_test "one newline" {{1} {\\n} {3}} +# Try with arguments containing literal newlines. - set GDBFLAGS "$old_gdbflags --args $binfile 1 {\n} {\n} 3" - args_test "two newlines" {{1} {\\n} {\\n} {3}} -} +args_test "one newline" {{1} "\n" {3}} + +args_test "two newlines" {{1} "\n" "\n" {3}} -- 2.30.2