forked from Imagelibrary/binutils-gdb
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.
110 lines
3.3 KiB
Plaintext
110 lines
3.3 KiB
Plaintext
# Copyright 2005-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/>.
|
|
|
|
load_lib "ada.exp"
|
|
|
|
if { [skip_ada_tests] } { return -1 }
|
|
|
|
# This testcase verifies the behavior of the `start' command, which
|
|
# does not work when we use the gdb stub...
|
|
if [use_gdb_stub] {
|
|
untested "skipping tests due to use_gdb_stub"
|
|
return
|
|
}
|
|
|
|
standard_ada_testfile first
|
|
|
|
# Build the first test program (note that cygwin needs the $EXEEXT).
|
|
if {[gdb_compile_ada "${srcfile}" "${binfile}$EXEEXT" executable {debug}] != ""} {
|
|
return -1
|
|
}
|
|
|
|
# Build the second test program
|
|
set srcfile2 ${srcdir}/${subdir}/${testdir}/second.adb
|
|
set binfile2 [standard_output_file second$EXEEXT]
|
|
|
|
if {[gdb_compile_ada "${srcfile2}" "${binfile2}" executable {debug}] != ""} {
|
|
return -1
|
|
}
|
|
|
|
# Start with a fresh gdb.
|
|
|
|
set common_binfile [standard_output_file common$EXEEXT]
|
|
|
|
gdb_start
|
|
gdb_reinitialize_dir $srcdir/$subdir
|
|
|
|
# Load the first executable.
|
|
|
|
gdb_test "shell mv ${binfile} ${common_binfile}" ".*" ""
|
|
gdb_load ${common_binfile}
|
|
|
|
# Start the program, we should land in the program main procedure
|
|
if { [gdb_start_cmd] < 0 } {
|
|
untested start
|
|
return -1
|
|
}
|
|
|
|
gdb_test "" \
|
|
"first \\(\\) at .*first.adb.*" \
|
|
"start first"
|
|
|
|
# Restore first executable to its original name, and move
|
|
# second executable into its place. Ensure that the new
|
|
# executable is at least a second newer than the old.
|
|
|
|
gdb_test "shell mv ${common_binfile} ${binfile}" ".*" ""
|
|
gdb_test "shell mv ${binfile2} ${common_binfile}" ".*" ""
|
|
gdb_test "shell sleep 1" ".*" ""
|
|
gdb_test "shell touch ${common_binfile}" ".*" ""
|
|
|
|
# Start the program a second time, GDB should land in procedure Second
|
|
# this time.
|
|
|
|
if { [gdb_start_cmd] < 0 } {
|
|
fail "start second"
|
|
} else {
|
|
gdb_test "" \
|
|
"second \\(\\) at .*second.adb.*" \
|
|
"start second"
|
|
}
|
|
|
|
# Try again, this time with just changing the file time of first.
|
|
|
|
clean_restart "${binfile}$EXEEXT"
|
|
|
|
# Ensure we don't accidently use the main symbol cache.
|
|
gdb_test_no_output "mt set symbol-cache-size 0"
|
|
|
|
# Put something in the symbol lookup cache that will get looked up when
|
|
# starting after having re-read symbols. PR 17855.
|
|
gdb_breakpoint break_me
|
|
|
|
gdb_test "shell touch ${binfile}$EXEEXT" ".*" ""
|
|
gdb_test "shell sleep 1" ".*" ""
|
|
|
|
if { [gdb_start_cmd] < 0 } {
|
|
# PR 17855: At this point gdb may have crashed or gotten an internal
|
|
# error, but we still need to detect this. Just issue any simple command
|
|
# to verify gdb is still running. This will establish in gdb.log whether
|
|
# gdb is still running.
|
|
gdb_test_no_output "set \$check_gdb_running = 0" "check gdb running"
|
|
fail "start just first"
|
|
} else {
|
|
gdb_test "" \
|
|
"first \\(\\) at .*first.adb.*" \
|
|
"start just first"
|
|
}
|