# Copyright 2022-2025 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/>.

# Check that loading a file with a broken .gnu_debugaltlink doesn't crash gdb.

load_lib dwarf.exp

# This test can only be run on targets which support DWARF-2 and use gas.
require dwarf2_support

# No remote host testing either.
require {!is_remote host}

standard_testfile main.c no-gnu-debuglink.S

set asm_file [standard_output_file $srcfile2]

Dwarf::assemble $asm_file {
    gnu_debugaltlink "file-not-here" "0000000000000000000000000000000000000000"
}

if { [build_executable $testfile.exp $testfile [list $srcfile $asm_file]] } {
    return -1
}

clean_restart
gdb_test_no_output "maint set dwarf synchronous on"

set msg "\r\nwarning: could not find supplementary DWARF file \[^\r\n\]*"
gdb_test "file $binfile" "$msg" "file command"

set question "Load new symbol table from .*\? .y or n. "
gdb_test "file $binfile" "" "file command, again" $question "y"
