Files
binutils-gdb/gdb/testsuite/gdb.base/solib-corrupted.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

89 lines
2.8 KiB
Plaintext

# Copyright 2010-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/>.
require allow_shlib_tests
# gdbserver prints the warning message but expect is parsing only the GDB
# output, not the gdbserver output.
require {!is_remote target}
set testfile "solib-corrupted"
set srcfile start.c
if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile}] } {
return -1
}
# With probes interface GDB no longer scans the inferior library list so its
# corruption cannot be tested. Disable the probes interface.
gdb_test "maint ignore-probes rtld"
if ![runto_main] {
return
}
set probes { init_start init_complete map_start reloc_complete unmap_start
unmap_complete }
set test "info probes"
gdb_test_multiple $test $test {
-re "^stap\[ \t\]+rtld\[ \t\]+(?:rtld_)?(\[a-z_\]+)\[ \t\]" {
set idx [lsearch -exact $probes $expect_out(1,string)]
if { $idx >= 0 } {
set probes [lreplace $probes $idx $idx]
}
exp_continue
}
-re "^\[^\r\n\]*\r\n" {
exp_continue
}
-re "^$gdb_prompt $" {
}
}
gdb_assert {[llength $probes] == 6} "no probes found"
gdb_test "info sharedlibrary" "From * To .*" "normal list"
set no_glibc_debuginfo_re1 "No symbol \"_r_debug\" in current context\\."
set no_glibc_debuginfo_re2 \
[concat \
"Attempt to extract a component of a value that is not a structure" \
" pointer\\."]
set no_glibc_debuginfo_re3 \
"'_r_debug' has unknown type; cast it to its declared type"
set no_glibc_debuginfo_re \
"($no_glibc_debuginfo_re1|$no_glibc_debuginfo_re2|$no_glibc_debuginfo_re3)"
# GDB checks there for matching L_PREV.
set test "make solibs looping"
gdb_test_multiple "p/x _r_debug->r_map->l_next = _r_debug->r_map" $test {
-re "$no_glibc_debuginfo_re\r\n$gdb_prompt $" {
# glibc debug info is not available and it is too difficult to find and
# parse it from this testcase without the gdb supporting functions.
unsupported "$gdb_test_name (glibc debuginfo required)"
return
}
-re " = 0x\[0-9a-f\]+\r\n$gdb_prompt $" {
pass $test
}
}
# Use -early to prevent the default handling of the warning in gdb_test_multiple
# from triggering.
gdb_test_multiple "info sharedlibrary" "corrupted list" {
-early -re -wrap "warning: Corrupted shared library list: .*" {
pass $gdb_test_name
}
}