binutils-gdb/gdb/testsuite/gdb.base/annota-input-while-running.exp
Joel Brobecker 61baf725ec update copyright year range in GDB files
This applies the second part of GDB's End of Year Procedure, which
updates the copyright year range in all of GDB's files.

gdb/ChangeLog:

        Update copyright year range in all GDB files.
2017-01-01 10:52:34 +04:00

117 lines
3.3 KiB
Text

# Copyright 1999-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/>.
# Test that annotations support doesn't leave GDB's terminal settings
# into effect when we run a foreground command.
standard_testfile
if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug] == -1} {
return -1
}
# Because runto_main doesn't know how to handle the prompt with annotations,
# run to main before we set the annotation level.
if ![runto_main] then {
fail "can't run to main"
return 1
}
# NOTE: this prompt is OK only when the annotation level is > 1
# NOTE: When this prompt is in use the gdb_test procedure cannot be
# used because it assumes that the last char after the gdb_prompt is a
# white space. This is not true with this annotated prompt. So we
# must use the gdb_annota_test replacement below, or
# gdb_test_multiple.
set old_gdb_prompt $gdb_prompt
set gdb_prompt "\r\n\032\032pre-prompt\r\n$gdb_prompt \r\n\032\032prompt\r\n"
# Like gdb_test, but cope with the annotation prompt.
proc gdb_annota_test {command pattern message} {
global gdb_prompt
gdb_test_multiple $command $message {
-re "$pattern$gdb_prompt$" {
pass "$message"
}
-re "$gdb_prompt$" {
fail "$message"
}
}
}
# Set the annotation level to 2.
gdb_annota_test "set annotate 2" ".*" "annotation set at level 2"
set test "delete breakpoints"
gdb_test_multiple "delete" $test {
-re "Delete all breakpoints. .y or n." {
send_gdb "y\n"
exp_continue
}
-re "$gdb_prompt$" {
pass $test
}
}
# Set the target running, and then type something. GDB used to have a
# bug where it'd be accepting input even though the target was
# supposedly resumed in the foreground. This ultimately resulted in
# readline aborting.
set linenum [gdb_get_line_number "set break here"]
gdb_annota_test "break $linenum" \
"Breakpoint .*$srcfile, line .*" \
"break after sleep"
# Continue, and wait a bit to make sure the inferior really starts
# running. Wait less than much the program sleeps, which is 5
# seconds, though.
set saw_continuing 0
set test "continue"
gdb_test_multiple $test $test {
-timeout 2
-re "Continuing\\." {
set saw_continuing 1
exp_continue
}
timeout {
gdb_assert $saw_continuing $test
}
}
# Type something.
send_gdb "print 1\n"
# Poor buggy GDB would crash before the breakpoint was hit.
set test "breakpoint hit"
gdb_test_multiple "" $test {
-re "stopped\r\n$gdb_prompt" {
pass $test
}
}
set test "print command result"
gdb_test_multiple "" $test {
-re "\r\n1\r\n\r\n\032\032value-history-end\r\n$gdb_prompt" {
pass $test
}
}
# Restore the original prompt for the rest of the testsuite.
set gdb_prompt $old_gdb_prompt