Files
binutils-gdb/gdb/testsuite/gdb.base/term.exp
Andrew Burgess 1d506c26d9 Update copyright year range in header of all files managed by GDB
This commit is the result of the following actions:

  - Running gdb/copyright.py to update all of the copyright headers to
    include 2024,

  - Manually updating a few files the copyright.py script told me to
    update, these files had copyright headers embedded within the
    file,

  - Regenerating gdbsupport/Makefile.in to refresh it's copyright
    date,

  - Using grep to find other files that still mentioned 2023.  If
    these files were updated last year from 2022 to 2023 then I've
    updated them this year to 2024.

I'm sure I've probably missed some dates.  Feel free to fix them up as
you spot them.
2024-01-12 15:49:57 +00:00

106 lines
4.0 KiB
Plaintext

# Copyright 1988-2024 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/>.
# Test that GDB saves and restores terminal settings correctly. Also check
# the output of the "info terminal" command.
if { [prepare_for_testing "failed to prepare" term term.c] } {
return -1
}
# Once before running the program.
gdb_test "info terminal" \
"No saved terminal information.*" \
"test info terminal pre-execution"
if {![runto break_here]} {
return 0
}
# Read the inferior's terminal settings, saved in the T global variable.
proc read_term_settings_from_inferior {} {
set termios(c_iflag) [get_hexadecimal_valueof "t.c_iflag" oops]
set termios(c_oflag) [get_hexadecimal_valueof "t.c_oflag" oops]
set termios(c_cflag) [get_hexadecimal_valueof "t.c_cflag" oops]
set termios(c_lflag) [get_hexadecimal_valueof "t.c_lflag" oops]
return [array get termios]
}
# Validate that gdb's notion of the inferior's terminal settings are consistent
# with the values read from the inferior.
proc compare_gdb_and_inferior_settings { t } {
global decimal
array set termios $t
gdb_test "info terminal" \
[multi_line "Inferior's terminal status .currently saved by GDB.:" \
"File descriptor flags = .*" \
"Process group = $decimal" \
"c_iflag = ${termios(c_iflag)}, c_oflag = ${termios(c_oflag)}," \
"c_cflag = ${termios(c_cflag)}, c_lflag = ${termios(c_lflag)}.*" ]
}
if {[target_info gdb_protocol] == ""} {
# Record the initial terminal settings. Verify that GDB's version of the
# inferior's terminal settings is right.
with_test_prefix "initial" {
array set termios1 [read_term_settings_from_inferior]
compare_gdb_and_inferior_settings [array get termios1]
}
# Continue until after the inferior removes ECHO from its terminal settings.
gdb_continue_to_breakpoint "continue until after tcsetattr"
# After the inferior has changed its terminal settings, check that GDB's
# saved version reflects the new settings correctly.
with_test_prefix "post tcsetattr" {
array set termios2 [read_term_settings_from_inferior]
compare_gdb_and_inferior_settings [array get termios2]
# Make sure that the current settings are different than the initial
# settings... otherwise this test is meaningless.
gdb_assert {${termios1(c_lflag)} != ${termios2(c_lflag)}}
}
# Continue again...
gdb_continue_to_breakpoint "continue again"
# ... and verify again, to validate that when resuming, GDB restored the
# inferior's terminal settings correctly.
with_test_prefix "after last resume" {
array set termios3 [read_term_settings_from_inferior]
compare_gdb_and_inferior_settings [array get termios3]
gdb_assert {${termios2(c_iflag)} == ${termios3(c_iflag)}}
gdb_assert {${termios2(c_oflag)} == ${termios3(c_oflag)}}
gdb_assert {${termios2(c_cflag)} == ${termios3(c_cflag)}}
gdb_assert {${termios2(c_lflag)} == ${termios3(c_lflag)}}
}
} else {
# While only native targets save terminal status, we still test
# that the command doesn't misbehave.
gdb_test "info terminal" "No saved terminal information\\." "info terminal at breakpoint"
}
delete_breakpoints
gdb_continue_to_end
# One last time after the program having exited.
gdb_test "info terminal" \
"No saved terminal information.*" \
"test info terminal post-execution"