[gdb/testsuite] Add boards/cc-with-index-cache.exp
We have a target board cc-with-gdb-index that uses the gdb-add-index script to add a .gdb_index index to an exec. There is however an alternative way of adding a .gdb_index: the index-cache. Add a new target board cc-with-index-cache. This is not superfluous for two reasons: - there is functionality that gdb-add-index doesn't support, but the index-cache does: the index-cache can add an index to an exec with a .gnu_debugaltlink (note that when using the cc-with-gdb-index board this case is quietly ignored), and - using the index-cache is excercised in only a few test-cases, and having this target board extends the test coverage to the entire test suite. This is for instance relevant because the index-cache is written by a worker thread in the background, so we can check more thoroughly for data races (see PR symtab/30837). Tested on x86_64-linux. Shell script changes checked with shellcheck. Approved-By: Tom Tromey <tom@tromey.com>
This commit is contained in:
parent
0da23004a0
commit
f1b8ee6f2b
3 changed files with 53 additions and 0 deletions
|
@ -43,6 +43,7 @@
|
|||
# -z compress using dwz
|
||||
# -m compress using dwz -m
|
||||
# -i make an index (.gdb_index)
|
||||
# -c make an index (currently .gdb_index) in a cache dir
|
||||
# -n make a dwarf5 index (.debug_names)
|
||||
# -p create .dwp files (Fission), you need to also use gcc option -gsplit-dwarf
|
||||
# -l creates separate debuginfo files linked to using .gnu_debuglink
|
||||
|
@ -85,6 +86,7 @@ output_file=a.out
|
|||
|
||||
want_index=false
|
||||
index_options=""
|
||||
want_index_cache=false
|
||||
want_dwz=false
|
||||
want_multi=false
|
||||
want_dwp=false
|
||||
|
@ -97,6 +99,7 @@ while [ $# -gt 0 ]; do
|
|||
-z) want_dwz=true ;;
|
||||
-i) want_index=true ;;
|
||||
-n) want_index=true; index_options=-dwarf-5;;
|
||||
-c) want_index_cache=true ;;
|
||||
-m) want_multi=true ;;
|
||||
-p) want_dwp=true ;;
|
||||
-l) want_gnu_debuglink=true ;;
|
||||
|
@ -209,6 +212,15 @@ if [ "$want_index" = true ]; then
|
|||
[ $rc != 0 ] && exit $rc
|
||||
fi
|
||||
|
||||
if [ "$want_index_cache" = true ]; then
|
||||
$GDB -q -batch \
|
||||
-ex "set index-cache directory $INDEX_CACHE_DIR" \
|
||||
-ex "set index-cache enabled on" \
|
||||
-ex "file $output_file"
|
||||
rc=$?
|
||||
[ $rc != 0 ] && exit $rc
|
||||
fi
|
||||
|
||||
if [ "$want_dwz" = true ] || [ "$want_multi" = true ]; then
|
||||
# Require dwz version with PR dwz/24468 fixed.
|
||||
dwz_version_major_required=0
|
||||
|
|
40
gdb/testsuite/boards/cc-with-index-cache.exp
Normal file
40
gdb/testsuite/boards/cc-with-index-cache.exp
Normal file
|
@ -0,0 +1,40 @@
|
|||
# Copyright 2023 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/>.
|
||||
|
||||
# This file is a dejagnu "board file" and is used to run the testsuite
|
||||
# with contrib/cc-with-tweaks.sh -c.
|
||||
#
|
||||
# Example usage:
|
||||
# bash$ cd $objdir
|
||||
# bash$ make check-gdb \
|
||||
# RUNTESTFLAGS='--target_board=cc-with-index-cache'
|
||||
#
|
||||
|
||||
# Choose location of index-cache directory.
|
||||
setenv INDEX_CACHE_DIR [pwd]/cc-with-index-cache
|
||||
|
||||
# Start with empty index-cache directory.
|
||||
file delete -force $env(INDEX_CACHE_DIR)
|
||||
file mkdir $env(INDEX_CACHE_DIR)
|
||||
|
||||
# Make sure index-cache entries are generated for each executable.
|
||||
set CC_WITH_TWEAKS_FLAGS "-c"
|
||||
load_board_description "cc-with-tweaks"
|
||||
|
||||
# Make sure gdb knowns how to find the index-cache.
|
||||
append GDBFLAGS " -iex \"set index-cache directory $env(INDEX_CACHE_DIR)\""
|
||||
|
||||
# Make sure gdb uses the index-cache.
|
||||
append GDBFLAGS " -iex \"set index-cache enabled on\""
|
|
@ -66,6 +66,7 @@ host_target_boards=(
|
|||
# Boards that run everything on local target and local host.
|
||||
target_boards=(
|
||||
cc-with-gdb-index
|
||||
cc-with-index-cache
|
||||
cc-with-debug-names
|
||||
cc-with-dwz
|
||||
cc-with-dwz-m
|
||||
|
|
Loading…
Add table
Reference in a new issue