1# Copyright 2012-2023 Free Software Foundation, Inc. 2 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation; either version 3 of the License, or 6# (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16load_lib dwarf.exp 17 18# We run objcopy locally to split out the .dwo file. 19if [is_remote host] { 20 return 0 21} 22 23# This test can only be run on targets which support DWARF-2 and use gas. 24if ![dwarf2_support] { 25 return 0 26} 27 28# Some targets have leading underscores on assembly symbols. 29set additional_flags [gdb_target_symbol_prefix_flags_asm] 30 31standard_testfile .S 32 33set obj [standard_output_file "${testfile}.o"] 34set dwo [standard_output_file "${testfile}.dwo"] 35 36set options [list nodebug] 37if { $additional_flags != "" } { 38 lappend options $additional_flags 39} 40 41set dwo_options $options 42lappend dwo_options split-dwo 43lappend dwo_options additional_flags=-DDWO=\"$dwo\" 44 45if [build_executable_and_dwo_files "$testfile.exp" "${binfile}" $options \ 46 [list $srcfile $dwo_options $obj]] { 47 return -1 48} 49 50clean_restart 51gdb_load_no_complaints $binfile 52 53gdb_test "break -q main" "Breakpoint.*at.*" 54 55gdb_test "ptype baz" "type = class foo {.*" 56 57# If we get this far gdb didn't crash, nor did an error occur. 58pass $testfile 59 60gdb_unload 61# If we get this far gdb didn't crash, nor did an error occur. 62pass "$testfile - unload" 63 64# Test-case for PR24620: Delete the .dwo file and verify that 65# save gdb-index doesn't crash. 66remote_file target delete $dwo 67clean_restart $binfile 68set output_dir [standard_output_file ""] 69set cmd "save gdb-index" 70gdb_test_multiple "$cmd $output_dir" $cmd { 71 -re -wrap "Cannot use an index to create the index.*" { 72 unsupported $gdb_test_name 73 } 74 -re "^$cmd \[^\r\n\]*\r\n$gdb_prompt $" { 75 pass $gdb_test_name 76 } 77} 78