public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] [gdb/testsuite] Add boards/cc-with-index-cache.exp
@ 2023-09-08 14:44 Tom de Vries
  2023-11-27 20:10 ` Tom Tromey
  0 siblings, 1 reply; 2+ messages in thread
From: Tom de Vries @ 2023-09-08 14:44 UTC (permalink / raw)
  To: gdb-patches

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.
---
 gdb/contrib/cc-with-tweaks.sh                | 12 ++++++
 gdb/testsuite/boards/cc-with-index-cache.exp | 40 ++++++++++++++++++++
 gdb/testsuite/make-check-all.sh              |  1 +
 3 files changed, 53 insertions(+)
 create mode 100644 gdb/testsuite/boards/cc-with-index-cache.exp

diff --git a/gdb/contrib/cc-with-tweaks.sh b/gdb/contrib/cc-with-tweaks.sh
index 62d3bcf9707..abf22ca8519 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 00000000000..079c0365de2
--- /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 7d8adb58e87..947e6e32eaa 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

base-commit: 9c5bc1bd1399c11427deec1f8de6c537ab249087
-- 
2.35.3


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] [gdb/testsuite] Add boards/cc-with-index-cache.exp
  2023-09-08 14:44 [PATCH] [gdb/testsuite] Add boards/cc-with-index-cache.exp Tom de Vries
@ 2023-11-27 20:10 ` Tom Tromey
  0 siblings, 0 replies; 2+ messages in thread
From: Tom Tromey @ 2023-11-27 20:10 UTC (permalink / raw)
  To: Tom de Vries via Gdb-patches; +Cc: Tom de Vries

>>>>> "Tom" == Tom de Vries via Gdb-patches <gdb-patches@sourceware.org> writes:

Tom> We have a target board cc-with-gdb-index that uses the gdb-add-index script to
Tom> add a .gdb_index index to an exec.

Tom> There is however an alternative way of adding a .gdb_index: the index-cache.

Tom> Add a new target board cc-with-index-cache.

I didn't see any replies to this.  IMO this seems like a good thing to have.

Approved-By: Tom Tromey <tom@tromey.com>

Tom

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-11-27 20:10 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-08 14:44 [PATCH] [gdb/testsuite] Add boards/cc-with-index-cache.exp Tom de Vries
2023-11-27 20:10 ` Tom Tromey

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).