diff options
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/startup-with-shell.c | 29 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/startup-with-shell.exp | 89 |
3 files changed, 123 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index d52d9c1..6df961f 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2017-06-07 Sergio Durigan Junior <sergiodj@redhat.com> + * gdb.base/startup-with-shell.c: New file. + * gdb.base/startup-with-shell.exp: Likewise. + +2017-06-07 Sergio Durigan Junior <sergiodj@redhat.com> + * gdb.server/non-existing-program.exp: Update regex in order to reflect the fact that gdbserver is now using fork_inferior (with a shell) to startup the inferior. diff --git a/gdb/testsuite/gdb.base/startup-with-shell.c b/gdb/testsuite/gdb.base/startup-with-shell.c new file mode 100644 index 0000000..6278447 --- /dev/null +++ b/gdb/testsuite/gdb.base/startup-with-shell.c @@ -0,0 +1,29 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2017 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/>. */ + +#include <stdio.h> + +int +main (int argc, char *argv[]) +{ + int i; + + for (i = 0; argv[i] != NULL; ++i) + printf ("ARG %d = %s\n", i, argv[i]); + + return 0; +} diff --git a/gdb/testsuite/gdb.base/startup-with-shell.exp b/gdb/testsuite/gdb.base/startup-with-shell.exp new file mode 100644 index 0000000..af06c88 --- /dev/null +++ b/gdb/testsuite/gdb.base/startup-with-shell.exp @@ -0,0 +1,89 @@ +# This testcase is part of GDB, the GNU debugger. + +# Copyright 2017 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 test doesn't make sense on native-gdbserver. +if { [use_gdb_stub] } { + untested "not supported" + return +} + +# There's no easy way to set environment variables on remote targets +# (via dejagnu) yet. +if { [is_remote target] } { + untested "remote board" + return +} + +standard_testfile + +if { [prepare_for_testing "failed to prepare" $testfile $srcfile debug] } { + return -1 +} + +set unique_file [standard_output_file "unique-file.unique-extension"] +set unique_file_dir [standard_output_file ""] + +run_on_host "touch $unique_file" "touch" "$unique_file" + +# Initial setup for simple test (wildcard expansion, variable substitution). + +proc initial_setup_simple { startup_with_shell run_args } { + global hex decimal binfile unique_file + + clean_restart $binfile + + gdb_test_no_output "set startup-with-shell $startup_with_shell" + + gdb_test_no_output "set args $run_args" + + set test "inferior started" + if { [runto_main] } { + pass $test + } else { + fail $test + } +} + +## Run the actual tests + +with_test_prefix "startup_with_shell = on; run_args = *.unique-extension" { + initial_setup_simple "on" "$unique_file_dir/*.unique-extension" + gdb_test "print argv\[1\]" "\\\$$decimal = $hex \"$unique_file\"" \ + "first argument expanded" +} + +with_test_prefix "startup_with_shell = off; run_args = *.unique-extension" { + initial_setup_simple "off" "$unique_file_dir/*.unique-extension" + gdb_test "print argv\[1\]" "\\\$$decimal = $hex \"$unique_file_dir/\\\*\.unique-extension\"" \ + "first argument not expanded" +} + +with_test_prefix "startup_with_shell = on; run_args = \$TEST" { + set env(TEST) "1234" + initial_setup_simple "on" "\$TEST" + gdb_test "print argv\[1\]" "\\\$$decimal = $hex \"1234\"" \ + "testing first argument" + unset env(TEST) +} + +with_test_prefix "startup_with_shell = off; run_args = \$TEST" { + set env(TEST) "1234" + initial_setup_simple "off" "\$TEST" + gdb_test "print argv\[1\]" "\\\$$decimal = $hex \"\\\$TEST\"" \ + "testing first argument" + unset env(TEST) +} |