diff options
author | Tom de Vries <tdevries@suse.de> | 2024-09-24 10:32:41 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2024-09-24 10:32:41 +0200 |
commit | 21fc5abfb1f15f66f1a4a805a6b74ebfaa9b583d (patch) | |
tree | 30eef83a95c29ab5d1a069d00b0ea797e9137262 | |
parent | 00105aa1c4d9933fe3cfe9bc1be0daefe9f8ca36 (diff) | |
download | gdb-21fc5abfb1f15f66f1a4a805a6b74ebfaa9b583d.zip gdb-21fc5abfb1f15f66f1a4a805a6b74ebfaa9b583d.tar.gz gdb-21fc5abfb1f15f66f1a4a805a6b74ebfaa9b583d.tar.bz2 |
[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.
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/dwz-unused-pu.exp | 75 |
1 files changed, 75 insertions, 0 deletions
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 0000000..1dd91ee --- /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 <http://www.gnu.org/licenses/>. + +# 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" |