Some recent tests added to gdb.base/shell.exp have been failing on
Windows host due to assumptions that the shell is a POSIX variant. On
Windows, GDB uses CMD.EXE via the system() call to run shell commands
instead.
There seems to be no obvious CMD.EXE equivalent for "kill -2 $$" to
signal the shell process, so this patch skips those tests on Windows
host. The second problem addressed here is that CMD.EXE only
recognizes double quotes, not single quotes; that change can be made
unconditionally since POSIX shells recognize double quotes as well.
2020-07-16 Sandra Loosemore <sandra@codesourcery.com>
gdb/testsuite/
* gdb.base/shell.exp: Skip pipe tests dependent on sh on Windows host.
Use double quotes instead of single quotes.
+2020-07-16 Sandra Loosemore <sandra@codesourcery.com>
+
+ * gdb.base/shell.exp: Skip pipe tests dependent on sh on Windows host.
+ Use double quotes instead of single quotes.
+
2020-07-16 Caroline Tice <cmtice@google.com>
* gdb.dwarf2/dw5-rnglist-test.cc: New file.
2020-07-16 Caroline Tice <cmtice@google.com>
* gdb.dwarf2/dw5-rnglist-test.cc: New file.
gdb_test "p \$_shell_exitcode" " = 1" "shell fail exitcode"
gdb_test "p \$_shell_exitsignal" " = void" "shell fail exitsignal"
gdb_test "p \$_shell_exitcode" " = 1" "shell fail exitcode"
gdb_test "p \$_shell_exitsignal" " = void" "shell fail exitsignal"
-gdb_test_no_output "! kill -2 $$"
-gdb_test "p \$_shell_exitcode" " = void" "shell interrupt exitcode"
-gdb_test "p \$_shell_exitsignal" " = 2" "shell interrupt exitsignal"
+# This test will not work when the shell is CMD.EXE.
+if { ! [ishost *-*-mingw*] } {
+ gdb_test_no_output "! kill -2 $$"
+ gdb_test "p \$_shell_exitcode" " = void" "shell interrupt exitcode"
+ gdb_test "p \$_shell_exitsignal" " = 2" "shell interrupt exitsignal"
+}
# Define the user command "foo", used to test "pipe" command.
gdb_test_multiple "define foo" "define foo" {
# Define the user command "foo", used to test "pipe" command.
gdb_test_multiple "define foo" "define foo" {
gdb_test "echo coucou\\n" "coucou" "echo coucou"
gdb_test "||wc -l" "1" "repeat previous command"
gdb_test "echo coucou\\n" "coucou" "echo coucou"
gdb_test "||wc -l" "1" "repeat previous command"
-gdb_test "| -d ! echo this contains a | character\\n ! sed -e 's/|/PIPE/'" \
+gdb_test "| -d ! echo this contains a | character\\n ! sed -e \"s/|/PIPE/\"" \
"this contains a PIPE character" "alternate 1char delim"
"this contains a PIPE character" "alternate 1char delim"
-gdb_test "|-d ! echo this contains a | character\\n!sed -e 's/|/PIPE/'" \
+gdb_test "|-d ! echo this contains a | character\\n!sed -e \"s/|/PIPE/\"" \
"this contains a PIPE character" "alternate 1char delim, no space"
"this contains a PIPE character" "alternate 1char delim, no space"
-gdb_test "| -d !!! echo this contains a | character\\n !!! sed -e 's/|/PIPE/'" \
+gdb_test "| -d !!! echo this contains a | character\\n !!! sed -e \"s/|/PIPE/\"" \
"this contains a PIPE character" "alternate 3char delim"
"this contains a PIPE character" "alternate 3char delim"
-gdb_test "|-d !!! echo this contains a | character\\n!!!sed -e 's/|/PIPE/'" \
+gdb_test "|-d !!! echo this contains a | character\\n!!!sed -e \"s/|/PIPE/\"" \
"this contains a PIPE character" "alternate 3char delim, no space"
# Convenience variables with pipe command.
"this contains a PIPE character" "alternate 3char delim, no space"
# Convenience variables with pipe command.
gdb_test "p \$_shell_exitcode" " = 1" "pipe fail exitcode"
gdb_test "p \$_shell_exitsignal" " = void" "pipe fail exitsignal"
gdb_test "p \$_shell_exitcode" " = 1" "pipe fail exitcode"
gdb_test "p \$_shell_exitsignal" " = void" "pipe fail exitsignal"
-gdb_test "|p 123| kill -2 $$" ""
-gdb_test "p \$_shell_exitcode" " = void" "pipe interrupt exitcode"
-gdb_test "p \$_shell_exitsignal" " = 2" "pipe interrupt exitsignal"
+# This test will not work when the shell is CMD.EXE.
+if { ! [ishost *-*-mingw*] } {
+ gdb_test "|p 123| kill -2 $$" ""
+ gdb_test "p \$_shell_exitcode" " = void" "pipe interrupt exitcode"
+ gdb_test "p \$_shell_exitsignal" " = 2" "pipe interrupt exitsignal"
+}
# Error handling verifications.
gdb_test "|" "Missing COMMAND" "all missing"
# Error handling verifications.
gdb_test "|" "Missing COMMAND" "all missing"