[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:
Tom de Vries 2023-11-27 21:15:26 +01:00
parent 0da23004a0
commit f1b8ee6f2b
3 changed files with 53 additions and 0 deletions

View file

@ -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

View 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\""

View file

@ -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