mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-09 04:21:49 +08:00
1d506c26d9
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.
233 lines
6.1 KiB
Plaintext
233 lines
6.1 KiB
Plaintext
# Copyright 2008-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/>.
|
|
|
|
# This file is part of the GDB testsuite. It tests 'finish' with
|
|
# reverse debugging.
|
|
|
|
require supports_reverse
|
|
|
|
standard_testfile
|
|
|
|
if { [prepare_for_testing "failed to prepare" "$testfile" $srcfile] } {
|
|
return -1
|
|
}
|
|
|
|
runto_main
|
|
|
|
if [supports_process_record] {
|
|
# Activate process record/replay
|
|
gdb_test_no_output "record" "turn on process record"
|
|
}
|
|
|
|
# Test finish from void func
|
|
|
|
set breakloc [gdb_get_line_number "VOID FUNC" "$srcfile"]
|
|
gdb_test "break void_func" \
|
|
"Breakpoint $decimal at .*$srcfile, line $breakloc\." \
|
|
"set breakpoint on void_func"
|
|
gdb_continue_to_breakpoint "void_func" ".*$srcfile:$breakloc.*"
|
|
|
|
set test_msg "finish from void_func"
|
|
gdb_test_multiple "finish" "$test_msg" {
|
|
-re " call to void_func .*$gdb_prompt $" {
|
|
send_gdb "step\n"
|
|
exp_continue
|
|
}
|
|
-re " void_checkpoint .*$gdb_prompt $" {
|
|
pass "$test_msg"
|
|
}
|
|
}
|
|
|
|
# Test finish from char func
|
|
|
|
set breakloc [gdb_get_line_number "CHAR FUNC" "$srcfile"]
|
|
gdb_test "break char_func" \
|
|
"Breakpoint $decimal at .*$srcfile, line $breakloc\." \
|
|
"set breakpoint on char_func"
|
|
gdb_continue_to_breakpoint "char_func" ".*$srcfile:$breakloc.*"
|
|
|
|
set test_msg "finish from char_func"
|
|
gdb_test_multiple "finish" "$test_msg" {
|
|
-re " void_checkpoint .*$gdb_prompt $" {
|
|
send_gdb "step\n"
|
|
exp_continue
|
|
}
|
|
-re " char_checkpoint .*$gdb_prompt $" {
|
|
pass "$test_msg"
|
|
}
|
|
}
|
|
|
|
# Test finish from short func
|
|
|
|
set breakloc [gdb_get_line_number "SHORT FUNC" "$srcfile"]
|
|
gdb_test "break short_func" \
|
|
"Breakpoint $decimal at .* line $breakloc\." \
|
|
"set breakpoint on short_func"
|
|
gdb_continue_to_breakpoint "short_func" ".*$srcfile:$breakloc.*"
|
|
|
|
set test_msg "finish from short_func"
|
|
gdb_test_multiple "finish" "$test_msg" {
|
|
-re " char_checkpoint .*$gdb_prompt $" {
|
|
send_gdb "step\n"
|
|
exp_continue
|
|
}
|
|
-re " short_checkpoint .*$gdb_prompt $" {
|
|
pass "$test_msg"
|
|
}
|
|
}
|
|
|
|
# Test finish from int func
|
|
|
|
set breakloc [gdb_get_line_number "INT FUNC" "$srcfile"]
|
|
gdb_test "break int_func" \
|
|
"Breakpoint $decimal at .* line $breakloc\." \
|
|
"set breakpoint on int_func"
|
|
gdb_continue_to_breakpoint "int_func" ".*$srcfile:$breakloc.*"
|
|
|
|
set test_msg "finish from int_func"
|
|
gdb_test_multiple "finish" "$test_msg" {
|
|
-re " short_checkpoint .*$gdb_prompt $" {
|
|
send_gdb "step\n"
|
|
exp_continue
|
|
}
|
|
-re " int_checkpoint .*$gdb_prompt $" {
|
|
pass "$test_msg"
|
|
}
|
|
}
|
|
|
|
# Test finish from long func
|
|
|
|
set breakloc [gdb_get_line_number "LONG FUNC" "$srcfile"]
|
|
gdb_test "break long_func" \
|
|
"Breakpoint $decimal at .* line $breakloc\." \
|
|
"set breakpoint on long_func"
|
|
gdb_continue_to_breakpoint "long_func" ".*$srcfile:$breakloc.*"
|
|
|
|
set test_msg "finish from long_func"
|
|
gdb_test_multiple "finish" "$test_msg" {
|
|
-re " int_checkpoint .*$gdb_prompt $" {
|
|
send_gdb "step\n"
|
|
exp_continue
|
|
}
|
|
-re " long_checkpoint .*$gdb_prompt $" {
|
|
pass "$test_msg"
|
|
}
|
|
}
|
|
|
|
# Test finish from long long func
|
|
|
|
set breakloc [gdb_get_line_number "LONG LONG FUNC" "$srcfile"]
|
|
gdb_test "break long_long_func" \
|
|
"Breakpoint $decimal at .* line $breakloc\." \
|
|
"set breakpoint on long_long_func"
|
|
gdb_continue_to_breakpoint "long_long_func" ".*$srcfile:$breakloc.*"
|
|
|
|
set test_msg "finish from long_long_func"
|
|
gdb_test_multiple "finish" "$test_msg" {
|
|
-re " long_checkpoint .*$gdb_prompt $" {
|
|
send_gdb "step\n"
|
|
exp_continue
|
|
}
|
|
-re " long_long_checkpoint .*$gdb_prompt $" {
|
|
pass "$test_msg"
|
|
}
|
|
}
|
|
|
|
|
|
###
|
|
###
|
|
###
|
|
|
|
# Now switch to reverse
|
|
gdb_test_no_output "set exec-dir reverse" "set reverse execution"
|
|
|
|
# Test reverse finish from long long func
|
|
|
|
set breakloc [gdb_get_line_number "LONG LONG FUNC" "$srcfile"]
|
|
gdb_continue_to_breakpoint "long_long_func backward" \
|
|
".*$srcfile:$breakloc.*"
|
|
|
|
set test_msg "reverse finish from long_long_func"
|
|
gdb_test_multiple "finish" "$test_msg" {
|
|
-re ".* long_checkpoint.*$gdb_prompt $" {
|
|
pass "$test_msg"
|
|
}
|
|
}
|
|
|
|
# Test reverse finish from long func
|
|
|
|
set breakloc [gdb_get_line_number "LONG FUNC" "$srcfile"]
|
|
gdb_continue_to_breakpoint "long_func backward" \
|
|
".*$srcfile:$breakloc.*"
|
|
|
|
set test_msg "reverse finish from long_func"
|
|
gdb_test_multiple "finish" "$test_msg" {
|
|
-re ".* int_checkpoint.*$gdb_prompt $" {
|
|
pass "$test_msg"
|
|
}
|
|
}
|
|
|
|
# Test reverse finish from int func
|
|
|
|
set breakloc [gdb_get_line_number "INT FUNC" "$srcfile"]
|
|
gdb_continue_to_breakpoint "int_func backward" \
|
|
".*$srcfile:$breakloc.*"
|
|
|
|
set test_msg "reverse finish from int_func"
|
|
gdb_test_multiple "finish" "$test_msg" {
|
|
-re ".* short_checkpoint.*$gdb_prompt $" {
|
|
pass "$test_msg"
|
|
}
|
|
}
|
|
|
|
# Test reverse finish from short func
|
|
|
|
set breakloc [gdb_get_line_number "SHORT FUNC" "$srcfile"]
|
|
gdb_continue_to_breakpoint "short_func backward" \
|
|
".*$srcfile:$breakloc.*"
|
|
|
|
set test_msg "reverse finish from short_func"
|
|
gdb_test_multiple "finish" "$test_msg" {
|
|
-re ".* char_checkpoint.*$gdb_prompt $" {
|
|
pass "$test_msg"
|
|
}
|
|
}
|
|
|
|
# Test reverse finish from char func
|
|
|
|
set breakloc [gdb_get_line_number "CHAR FUNC" "$srcfile"]
|
|
gdb_continue_to_breakpoint "char_func backward" \
|
|
".*$srcfile:$breakloc.*"
|
|
|
|
set test_msg "reverse finish from char_func"
|
|
gdb_test_multiple "finish" "$test_msg" {
|
|
-re ".* void_checkpoint.*$gdb_prompt $" {
|
|
pass "$test_msg"
|
|
}
|
|
}
|
|
|
|
# Test reverse finish from void func
|
|
|
|
set breakloc [gdb_get_line_number "VOID FUNC" "$srcfile"]
|
|
gdb_continue_to_breakpoint "void_func backward" \
|
|
".*$srcfile:$breakloc.*"
|
|
|
|
set test_msg "reverse finish from void_func"
|
|
gdb_test_multiple "finish" "$test_msg" {
|
|
-re ".* call to void_func.*$gdb_prompt $" {
|
|
pass "$test_msg"
|
|
}
|
|
}
|