
This commit brings all the changes made by running gdb/copyright.py as per GDB's Start of New Year Procedure. For the avoidance of doubt, all changes in this commits were performed by the script.
106 lines
4.1 KiB
Text
106 lines
4.1 KiB
Text
# Copyright 2021-2022 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 commands in a GDB script file run via GDB's -x flag work
|
|
# as expected. Specifically, the script creates a dprintf breakpoint
|
|
# as well as a normal breakpoint that has "continue" in its command
|
|
# list, and then does "run". Correct output from GDB is checked as
|
|
# part of this test.
|
|
|
|
# Bail out if the target can't use the 'run' command.
|
|
if ![target_can_use_run_cmd] {
|
|
return 0
|
|
}
|
|
|
|
standard_testfile
|
|
|
|
if {[build_executable "failed to prepare" $testfile $srcfile debug]} {
|
|
return -1
|
|
}
|
|
|
|
# This is the name of the GDB script to load.
|
|
set x_file ${srcdir}/${subdir}/$testfile.gdb
|
|
|
|
# Create context in which the global, GDBFLAGS, will be restored at
|
|
# the end of the block. All commands run within the block are
|
|
# actually run in the outer context. (This is why 'res' is available
|
|
# outside of the save_vars block.)
|
|
save_vars { GDBFLAGS } {
|
|
# Set flags with which to start GDB.
|
|
append GDBFLAGS " -ex \"set height unlimited\""
|
|
append GDBFLAGS " -x \"$x_file\""
|
|
append GDBFLAGS " --args \"$binfile\""
|
|
|
|
# Start GDB with above flags.
|
|
set res [gdb_spawn]
|
|
}
|
|
|
|
set test "load and run script with -x"
|
|
if { $res != 0} {
|
|
fail $test
|
|
return -1
|
|
}
|
|
|
|
# The script loaded via -x contains a run command; while running, GDB
|
|
# is expected to print three messages from dprintf breakpoints along
|
|
# with three interspersed messages from an ordinary breakpoint (which
|
|
# was set up with a continue command). Set up pattern D to match
|
|
# output from hitting the dprintf breakpoint and B for the ordinary
|
|
# breakpoint. Then set PAT to contain the entire pattern of expected
|
|
# output from the interspersed dprintf and ordinary breakpoints along
|
|
# with some (additional) expected output from the dprintf breakpoints,
|
|
# i.e. 0, 1, and 2.
|
|
set d "dprintf in increment.., vi="
|
|
set b "Breakpoint ., inc_vi"
|
|
set pat "${d}0.*?$b.*?${d}1.*?$b.*?${d}2.*?$b.*?"
|
|
|
|
proc do_test {cmd test} {
|
|
gdb_test_multiple $cmd $test {
|
|
-re "$::pat$::inferior_exited_re normally.*$::gdb_prompt $" {
|
|
pass $test
|
|
}
|
|
-re "Don't know how to run.*$::gdb_prompt $" {
|
|
# Even though we bailed out at the beginning of this test case
|
|
# for targets which can't use the "run" command, there are
|
|
# still targets, e.g. native-extended-gdbserver, which can
|
|
# run, but will still print the "Don't know how to run"
|
|
# message. In the case of native-extended-gdbserver, it would
|
|
# first need to connect to the target in order to run. For
|
|
# that particular target, the very first test which attempts
|
|
# to use the "run" command from a command line script is
|
|
# the one that is unsupported. The other two tests will
|
|
# pass because, after reaching the (gdb) prompt, a gdbserver
|
|
# is spawned and then connected to. (The command line which
|
|
# spawns GDB for this target has a "-iex set
|
|
# auto-connect-native-target off" which prevents it from
|
|
# attempting to "run" using the native target.)
|
|
unsupported $test
|
|
}
|
|
}
|
|
}
|
|
|
|
# Check output from running script with -x
|
|
do_test "" $test
|
|
|
|
# Restart GDB and 'source' the script; this will (still) run the program
|
|
# due to the 'run' command in the script.
|
|
clean_restart $binfile
|
|
do_test "source $x_file" "load and run script using source command"
|
|
|
|
# This should leave us at the gdb prompt; Run program again using
|
|
# already established breakpoints, i.e. those loaded from the
|
|
# script. Prior to fixing PR 28308, this was the only test that
|
|
# would pass.
|
|
do_test "run" "run again"
|