forked from Imagelibrary/binutils-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.
117 lines
3.0 KiB
Plaintext
117 lines
3.0 KiB
Plaintext
# Copyright 2014-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/>. */
|
|
|
|
# Verify that GDB waits for the "attach" command to finish before
|
|
# processing the following command.
|
|
#
|
|
# GDB used to have a race where on async targets, in the small window
|
|
# between the attach request and the initial stop for the attach, GDB
|
|
# was still processing user input.
|
|
#
|
|
# The issue was originally detected with:
|
|
#
|
|
# echo -e "attach PID\nset xxx=1" | gdb
|
|
#
|
|
# In that scenario, stdin is not a tty, which disables readline.
|
|
# Explicitly turning off editing exercises the same code path, and is
|
|
# simpler to do, so we test with both editing on and off.
|
|
|
|
# The test uses the "attach" command.
|
|
require !use_gdb_stub
|
|
|
|
standard_testfile
|
|
|
|
if {[build_executable "failed to build" $testfile $srcfile debug]} {
|
|
return -1
|
|
}
|
|
|
|
# Start the program running, and return its PID, ready for attaching.
|
|
|
|
proc start_program {binfile} {
|
|
global gdb_prompt
|
|
global decimal
|
|
|
|
clean_restart $binfile
|
|
|
|
if {![runto setup_done]} {
|
|
return 0
|
|
}
|
|
|
|
# Get the PID of the test process.
|
|
set testpid ""
|
|
set test "get inferior process ID"
|
|
gdb_test_multiple "p mypid" $test {
|
|
-re " = ($decimal)\r\n$gdb_prompt $" {
|
|
set testpid $expect_out(1,string)
|
|
pass $test
|
|
}
|
|
}
|
|
|
|
gdb_test "detach" "Detaching from program: .*"
|
|
|
|
if {$testpid == ""} {
|
|
return
|
|
}
|
|
|
|
return $testpid
|
|
}
|
|
|
|
# Do test proper. EDITING indicates whether "set editing" is on or
|
|
# off.
|
|
|
|
proc test { editing } {
|
|
global gdb_prompt
|
|
global binfile
|
|
global decimal
|
|
|
|
with_test_prefix "editing $editing" {
|
|
|
|
set testpid [start_program $binfile]
|
|
if {$testpid == ""} {
|
|
return
|
|
}
|
|
|
|
# Enable/disable readline.
|
|
gdb_test_no_output "set editing $editing"
|
|
|
|
# Send both commands at once.
|
|
send_gdb "attach $testpid\nprint should_exit = 1\n"
|
|
|
|
# Use gdb_expect directly instead of gdb_test_multiple to
|
|
# avoid races with the double prompt.
|
|
set test "attach and print"
|
|
gdb_expect {
|
|
-re "Attaching to program.*process $testpid\r\n.*$gdb_prompt.*$decimal = 1\r\n$gdb_prompt $" {
|
|
pass "$test"
|
|
}
|
|
timeout {
|
|
fail "$test (timeout)"
|
|
}
|
|
}
|
|
|
|
# As we've used attach, on quit, we'll detach from the
|
|
# program. Explicitly kill it in case we failed above.
|
|
gdb_test "kill" \
|
|
"" \
|
|
"after attach, exit" \
|
|
"Kill the program being debugged.*y or n. $" \
|
|
"y"
|
|
}
|
|
}
|
|
|
|
foreach editing {"on" "off"} {
|
|
test $editing
|
|
}
|