mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-12-19 01:19:41 +08:00
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.
85 lines
3.1 KiB
Plaintext
85 lines
3.1 KiB
Plaintext
# Copyright 2016-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/>.
|
|
|
|
# The purpose of this testcase is to verify that, when using a breakpoint
|
|
# location of the form "*<EXPR>" (Eg: "*main"), GDB is able to start
|
|
# the program and stop at the correct location. With programs built
|
|
# as PIE, this means that GDB needs to re-evaluate the location once
|
|
# the program as started, since PIE ensures that the address of all
|
|
# symbols have changed after load.
|
|
#
|
|
# PIE is not always supported by the target system, so instead of
|
|
# creating a testcase building executables with PIE, this testcase
|
|
# takes a slightly different approach. It builds a first program,
|
|
# breaks on *main, and then runs to that breakpoint. It then builds
|
|
# a second program, different from the first one, and loads that
|
|
# executable within the same GDB session. Similarly to the PIE case,
|
|
# the address of main should be different, and therefore GDB should
|
|
# recalculate it. We verify that by checking that running to that
|
|
# breakpoint still works, and that we land at the first instruction
|
|
# of that function in both cases.
|
|
|
|
set testfile1 "break-fun-addr1"
|
|
set srcfile1 ${testfile1}.c
|
|
set binfile1 [standard_output_file ${testfile1}]
|
|
|
|
if { [gdb_compile "${srcdir}/${subdir}/${srcfile1}" "${binfile1}" executable {debug}] != "" } {
|
|
untested "failed to compile first testcase"
|
|
return -1
|
|
}
|
|
|
|
# Start the debugger with the first executable, put a breakpoint
|
|
# on the first instruction of function "main" ("*main"), then
|
|
# run to that breakpoint.
|
|
|
|
clean_restart ${binfile1}
|
|
|
|
with_test_prefix "${testfile1}" {
|
|
|
|
gdb_test "break *main" \
|
|
"Breakpoint.*at.* file .*$srcfile1, line .*" \
|
|
|
|
gdb_run_cmd
|
|
gdb_test "" \
|
|
"Breakpoint.* main \\(\\) at .*$srcfile1:.*" \
|
|
"run to breakpoint at *main"
|
|
|
|
# Verify also that we stopped at the start of the function...
|
|
gdb_test "p \$pc == main" " = 1"
|
|
}
|
|
|
|
set testfile2 "break-fun-addr2"
|
|
set srcfile2 ${testfile2}.c
|
|
set binfile2 [standard_output_file ${testfile2}]
|
|
|
|
if { [gdb_compile "${srcdir}/${subdir}/${srcfile2}" "${binfile2}" executable {debug}] != "" } {
|
|
untested "failed to compile second testcase"
|
|
return -1
|
|
}
|
|
|
|
# Now, keeping the same GDB process (so as to keep the same breakpoint),
|
|
# start a new debugging session with a different executable.
|
|
gdb_load ${binfile2}
|
|
|
|
with_test_prefix "${testfile2}" {
|
|
|
|
gdb_run_cmd
|
|
gdb_test "" \
|
|
"Breakpoint.* main \\(\\) at .*$srcfile2:.*" \
|
|
"run to breakpoint at *main"
|
|
|
|
gdb_test "p \$pc == main" " = 1"
|
|
}
|