mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-12 12:16:04 +08:00
4a94e36819
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.
117 lines
3.2 KiB
Plaintext
117 lines
3.2 KiB
Plaintext
# Copyright 1999-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 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 {
|
|
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
|