aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xgdb/contrib/cc-with-tweaks.sh12
-rw-r--r--gdb/testsuite/boards/cc-with-index-cache.exp40
-rwxr-xr-xgdb/testsuite/make-check-all.sh1
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