binutils-gdb/gdb/testsuite/gdb.debuginfod/crc_mismatch.exp
Andrew Burgess 1d506c26d9 Update copyright year range in header of all files managed by 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.
2024-01-12 15:49:57 +00:00

135 lines
5.3 KiB
Text

# Copyright 2022-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 test compiles two executables: crc_mismatch and crc_mismatch-2
# and then strips them of debuginfo creating separate debug files. The test
# then replaces crc_mismatch-2.debug with crc_mismatch.debug to trigger
# "CRC mismatch" warning. A local debuginfod server is setup to supply
# the correct debug file, now when GDB looks up the debug info no warning
# is given.
standard_testfile .c -2.c
load_lib debuginfod-support.exp
require allow_debuginfod_tests
if {[build_executable "build executable" $testfile $srcfile debug] == -1} {
untested "failed to compile"
return -1
}
# The procedure gdb_gnu_strip_debug will produce an executable called
# ${binfile}, which is just like the executable ($binfile) but without
# the debuginfo. Instead $binfile has a .gnu_debuglink section which
# contains the name of a debuginfo only file.
if {[gdb_gnu_strip_debug $binfile]} {
# Check that you have a recent version of strip and objcopy installed.
unsupported "cannot produce separate debug info files"
return -1
}
set debugfile [standard_output_file ${testfile}.debug]
set debugdir [standard_output_file "debug"]
remote_exec build "mkdir $debugdir"
remote_exec build "mkdir -p [file dirname $debugfile]"
remote_exec build "mv -f [standard_output_file ${testfile}.debug] $debugfile"
# Test CRC mismatch is reported.
if {[build_executable crc_mismatch.exp crc_mismatch-2 crc_mismatch-2.c debug] != -1
&& ![gdb_gnu_strip_debug [standard_output_file crc_mismatch-2]]} {
# Copy the correct debug file for crc_mismatch-2 to the debugdir
# which is going to be used by local debuginfod.
remote_exec build "cp [standard_output_file crc_mismatch-2.debug] ${debugdir}"
# Move the unmatching debug file for crc_mismatch-2 instead of its real one
# to trigger the "CRC mismatch" warning.
remote_exec build "mv ${debugfile} [standard_output_file crc_mismatch-2.debug]"
clean_restart
set escapedobjdirsubdir [string_to_regexp [standard_output_file {}]]
gdb_test "file [standard_output_file crc_mismatch-2]" \
[multi_line \
"Reading symbols from ${escapedobjdirsubdir}/crc_mismatch-2\\.\\.\\." \
"warning: the debug information found in \"${escapedobjdirsubdir}/crc_mismatch-2\\.debug\" does not match \"${escapedobjdirsubdir}/crc_mismatch-2\" \\(CRC mismatch\\)\\." \
"\\(No debugging symbols found in .*\\)"] \
"CRC mismatch is reported"
# Do the same thing again, but this time check that the styling is
# correct.
with_test_prefix "check styling" {
with_ansi_styling_terminal {
clean_restart
set debug_file_re [style "${escapedobjdirsubdir}/crc_mismatch-2\\.debug" file]
set exe_file_re [style "${escapedobjdirsubdir}/crc_mismatch-2" file]
gdb_test "file [standard_output_file crc_mismatch-2]" \
[multi_line \
"Reading symbols from ${exe_file_re}\\.\\.\\." \
"warning: the debug information found in \"${debug_file_re}\" does not match \"${exe_file_re}\" \\(CRC mismatch\\)\\." \
"\\(No debugging symbols found in \[^\r\n\]+\\)"] \
"CRC mismatch is reported"
}
}
# Restart GDB with styling disabled.
clean_restart
}
# Create CACHE and DB directories ready for debuginfod to use.
prepare_for_debuginfod cache db
# Start debuginfod server, test the correct debuginfo was fetched
# from the server so there're not warnings anymore.
proc_with_prefix local_debuginfod { } {
global binfile db debugdir cache
set escapedobjdirsubdir [string_to_regexp [standard_output_file {}]]
set url [start_debuginfod $db $debugdir]
if {$url eq ""} {
unresolved "failed to start debuginfod server"
return
}
# Point the client to the server.
setenv DEBUGINFOD_URLS $url
# GDB should now find the symbol and source files.
clean_restart
# Enable debuginfod and fetch the debuginfo.
gdb_test_no_output "set debuginfod enabled on"
gdb_test "file $binfile" ".*Reading symbols from.*debuginfo.*" \
"file [file tail $binfile] cmd on"
# CRC mismatch should not be reported now because the correct debuginfo
# should be fetched from debuginfod.
gdb_test "file [standard_output_file crc_mismatch-2]" \
[multi_line \
"Reading symbols from ${escapedobjdirsubdir}/crc_mismatch-2\\.\\.\\." \
"Downloading.*separate debug info for ${escapedobjdirsubdir}/crc_mismatch-2\\.\\.\\." \
"Reading symbols from ${cache}/\[^\r\n\]+\\.\\.\\.(?:\r\nExpanding full symbols from \[^\r\n\]+)*"] \
"debuginfod running, info downloaded, no CRC mismatch"
}
with_debuginfod_env $cache {
local_debuginfod
}
stop_debuginfod
# Spare debug files may confuse testsuite runs in the future.
remote_exec build "rm -f $debugfile"