diff options
author | Tom de Vries <tdevries@suse.de> | 2023-11-27 21:15:26 +0100 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2023-11-27 21:15:26 +0100 |
commit | f1b8ee6f2b4381bc46a0ad4c233b6eddc1e135b5 (patch) | |
tree | 58ca510a8f8ee934d9dd893c182b9a2b1143f831 | |
parent | 0da23004a064e7149373b484fa671f2a2105ec9b (diff) | |
download | binutils-f1b8ee6f2b4381bc46a0ad4c233b6eddc1e135b5.zip binutils-f1b8ee6f2b4381bc46a0ad4c233b6eddc1e135b5.tar.gz binutils-f1b8ee6f2b4381bc46a0ad4c233b6eddc1e135b5.tar.bz2 |
[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>
-rwxr-xr-x | gdb/contrib/cc-with-tweaks.sh | 12 | ||||
-rw-r--r-- | gdb/testsuite/boards/cc-with-index-cache.exp | 40 | ||||
-rwxr-xr-x | gdb/testsuite/make-check-all.sh | 1 |
3 files changed, 53 insertions, 0 deletions
diff --git a/gdb/contrib/cc-with-tweaks.sh b/gdb/contrib/cc-with-tweaks.sh index 62d3bcf..abf22ca 100755 --- a/gdb/contrib/cc-with-tweaks.sh +++ b/gdb/contrib/cc-with-tweaks.sh @@ -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 diff --git a/gdb/testsuite/boards/cc-with-index-cache.exp b/gdb/testsuite/boards/cc-with-index-cache.exp new file mode 100644 index 0000000..079c036 --- /dev/null +++ b/gdb/testsuite/boards/cc-with-index-cache.exp @@ -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\"" diff --git a/gdb/testsuite/make-check-all.sh b/gdb/testsuite/make-check-all.sh index 7d8adb5..947e6e3 100755 --- a/gdb/testsuite/make-check-all.sh +++ b/gdb/testsuite/make-check-all.sh @@ -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 |