From: Tom de Vries Date: Tue, 24 Sep 2024 08:32:41 +0000 (+0200) Subject: [gdb/testsuite] Add gdb.dwarf2/dwz-unused-pu.exp X-Git-Tag: gdb-16-branchpoint~840 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=21fc5abfb1f15f66f1a4a805a6b74ebfaa9b583d;p=thirdparty%2Fbinutils-gdb.git [gdb/testsuite] Add gdb.dwarf2/dwz-unused-pu.exp Add a new test-case gdb.dwarf2/dwz-unused-pu.exp that checks that a symbol from an unused PU is not accessible. Passes with the relevant target boards: - unix (using the cooked index), - readnow (using no index at all), - cc-with-gdb-index (using .gdb_index), and - cc-with-debug-names (using .debug_names). Tested on x86_64-linux. --- diff --git a/gdb/testsuite/gdb.dwarf2/dwz-unused-pu.exp b/gdb/testsuite/gdb.dwarf2/dwz-unused-pu.exp new file mode 100644 index 00000000000..1dd91ee4116 --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/dwz-unused-pu.exp @@ -0,0 +1,75 @@ +# Copyright 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 . + +# Check that a symbol from an unused PU is not accessible. + +load_lib dwarf.exp + +# This test can only be run on targets which support DWARF-2 and use gas. +require dwarf2_support + +standard_testfile main.c -dw.S + +# Create the DWARF. +set asm_file [standard_output_file $srcfile2] +Dwarf::assemble $asm_file { + declare_labels partial_label int_label int_label2 + + cu {} { + compile_unit {{language @DW_LANG_C}} { + subprogram { + {MACRO_AT_func { main }} + } + } + } + + cu {} { + partial_unit {} { + int_label: base_type { + {name int} + {byte_size 4 sdata} + {encoding @DW_ATE_signed} + } + + constant { + {name the_int} + {type :$int_label} + {const_value 99 data1} + } + } + } +} + +if { [prepare_for_testing "failed to prepare" $testfile \ + [list $asm_file $srcfile] {nodebug}] } { + return -1 +} + +set cmd "p the_int" +set re \ + [string_to_regexp \ + {No symbol "the_int" in current context.}] + +# Check that the unreferenced PU is not expanded. +gdb_test $cmd $re + +# This should expand all CUs and referenced PUs, but not an unreferenced PU. +gdb_test_no_output "maint expand-symtabs" + +# Flush the symbol cache to do a new symbol lookup. +gdb_test_no_output "maint flush symbol-cache" + +# Check that the unreferenced PU is not expanded after "maint expand-symtabs". +gdb_test $cmd $re "$cmd, again"