* gdb.python/py-objfile.exp: Fix typo that snuck in from my last
commit.
+2015-07-29 Patrick Palka <patrick@parcs.ath.cx>
+
+ * gdb.base/batch-preserve-term-settings.exp (send_quit_command):
+ New proc.
+ (test_terminal_settings_preserved_after_sigterm): New test.
+
2015-07-29 Patrick Palka <patrick@parcs.ath.cx>
* gdb.base/batch-preserve-term-settings.exp
exit_shell
}
+# Send the quit command to GDB and make sure it exits.
+
+proc send_quit_command { test_name } {
+ global shell_prompt_re
+
+ set test $test_name
+ send_gdb "quit\n"
+ gdb_expect {
+ -re "(y or n)" {
+ send_gdb "y\n"
+ exp_continue
+ }
+ -re ".*$shell_prompt_re$" {
+ pass $test
+ return
+ }
+ timeout {
+ fail "$test (timeout)"
+ return 0
+ }
+ eof {
+ fail "$test (eof)"
+ return 0
+ }
+ }
+}
+
# Check that quitting from the CLI via the "quit" command does not leave the
# terminal in the wrong state. The GDB commands CMDS are executed before
# quitting.
exit_shell
}
+# Check that sending SIGTERM kills GDB and does not leave the terminal in the
+# wrong state.
+
+proc test_terminal_settings_preserved_after_sigterm { } {
+ global file_arg
+ global GDB INTERNAL_GDBFLAGS GDBFLAGS
+ global gdb_prompt
+ global shell_prompt_re
+
+ if ![spawn_shell] {
+ return
+ }
+
+ set saved_gdbflags $GDBFLAGS
+
+ set stty_supported [run_stty "stty before" stty_before]
+
+ set test "start gdb"
+ send_gdb "$GDB $INTERNAL_GDBFLAGS $GDBFLAGS [host_info gdb_opts]\n"
+ gdb_expect {
+ -re "$gdb_prompt $" {
+ pass $test
+ }
+ timeout {
+ fail "$test (timeout)"
+ }
+ eof {
+ fail "$test (eof)"
+ }
+ }
+
+ # Retrieve the pid of gdb with the gdb command "shell echo $PPID"
+ set gdb_pid -1
+ set test "run shell echo \$PPID"
+ send_gdb "shell echo \$PPID\n"
+ gdb_expect {
+ -re ".*\r\n(\\d+)\r\n$gdb_prompt $" {
+ set gdb_pid $expect_out(1,string)
+ pass $test
+ }
+ -re ".*\r\n\r\n$gdb_prompt $" {
+ fail "$test (no \$PPID)"
+ }
+ timeout {
+ fail "$test (timeout)"
+ }
+ eof {
+ fail "$test (eof)"
+ }
+ }
+
+ set test "kill gdb with SIGTERM"
+ if { $gdb_pid == -1 } {
+ fail "$test (no pid)"
+ send_quit_command "quit gdb"
+ } else {
+ remote_exec host "kill -TERM $gdb_pid"
+ set gdb_killed 0
+ gdb_expect {
+ -re ".*$shell_prompt_re$" {
+ pass $test
+ set gdb_killed 1
+ }
+ default {
+ fail "$test (did not quit)"
+ }
+ }
+
+ if !$gdb_killed {
+ send_quit_command "quit gdb"
+ }
+ }
+
+ set test "terminal settings preserved"
+ if $stty_supported {
+ run_stty "stty after" stty_after
+
+ gdb_assert [string equal $stty_before $stty_after] $test
+ } else {
+ unsupported "$test (no stty)"
+ }
+
+ exit_shell
+}
+
with_test_prefix "batch run" {
test_terminal_settings_preserved
}
with_test_prefix "cli exit after run cmd" {
test_terminal_settings_preserved_after_cli_exit { "run" }
}
+
+with_test_prefix "cli exit after SIGTERM" {
+ test_terminal_settings_preserved_after_sigterm
+}