aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Burgess <aburgess@redhat.com>2023-10-26 12:05:06 +0100
committerAndrew Burgess <aburgess@redhat.com>2023-11-28 10:36:43 +0000
commite5f1ee1832ff9e970833fa5773f46c3e0b93bc04 (patch)
treea078f8d3a2e89f5caca34b28060bdc6492c1cf88
parentbcf90a927e797ae2a909580cbe39be21c2350880 (diff)
downloadgdb-e5f1ee1832ff9e970833fa5773f46c3e0b93bc04.zip
gdb-e5f1ee1832ff9e970833fa5773f46c3e0b93bc04.tar.gz
gdb-e5f1ee1832ff9e970833fa5773f46c3e0b93bc04.tar.bz2
gdb/testsuite: add a new check-all-boards target
The make-check-all.sh script (gdb/testsuite/make-check-all.sh) is great, it makes it super easy to run some test(s) using all the available board files. This commit aims to make this script even easier to access by adding a check-all-boards target to the GDB Makefile. This new target checks for (and requires) a number of environment variables, so the target should be used like this: make check-all-boards GDB_TARGET_USERNAME=remote-target \ GDB_HOST_USERNAME=remote-host \ TESTS="gdb.base/break.exp" Where GDB_TARGET_USERNAME and GDB_HOST_USERNAME are the user names that should be passed to the make-check-all.sh --target-user and --host-user command line options respectively. My personal intention is to set these variables in my environment, so all I'll need to do is: make check-all-boards TESTS="gdb.base/break.exp" The make rule always passes --keep-results to the make-check-all.sh script, as I find that the most useful. It's super frustrating to run the tests and realise you forgot that option and the results have been discarded.
-rw-r--r--gdb/Makefile.in8
-rw-r--r--gdb/testsuite/Makefile.in19
-rw-r--r--gdb/testsuite/README42
3 files changed, 69 insertions, 0 deletions
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index a50628e..3510577 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -1971,6 +1971,14 @@ check-parallel: force
$(MAKE) $(TARGET_FLAGS_TO_PASS) check-parallel; \
else true; fi
+check-all-boards: force
+ @if [ -f testsuite/Makefile ]; then \
+ rootme=`pwd`; export rootme; \
+ rootsrc=`cd $(srcdir); pwd`; export rootsrc; \
+ cd testsuite; \
+ $(MAKE) $(TARGET_FLAGS_TO_PASS) check-all-boards; \
+ else true; fi
+
# The idea is to parallelize testing of multilibs, for example:
# make -j3 check//sh-hms-sim/{-m1,-m2,-m3,-m3e,-m4}/{,-nofpu}
# will run 3 concurrent sessions of check, eventually testing all 10
diff --git a/gdb/testsuite/Makefile.in b/gdb/testsuite/Makefile.in
index 3fc9a90..3488e6a 100644
--- a/gdb/testsuite/Makefile.in
+++ b/gdb/testsuite/Makefile.in
@@ -368,6 +368,25 @@ check-perf: all $(abs_builddir)/site.exp
@if test ! -d gdb.perf; then mkdir gdb.perf; fi
$(DO_RUNTEST) --directory=gdb.perf --outdir gdb.perf GDB_PERFTEST_MODE=$(GDB_PERFTEST_MODE) $(RUNTESTFLAGS) $(TIMESTAMP)
+
+check-all-boards: all $(abs_builddir)/site.exp
+ @if [ -z "$(GDB_TARGET_USERNAME)" ]; then \
+ echo "Must define GDB_TARGET_USERNAME"; \
+ false; \
+ fi
+ @if [ -z "$(GDB_HOST_USERNAME)" ]; then \
+ echo "Must define GDB_HOST_USERNAME"; \
+ false; \
+ fi
+ @if [ -z "$(TESTS)" ]; then \
+ echo "Must define TESTS"; \
+ false; \
+ fi
+ ${abs_srcdir}/make-check-all.sh --keep-results \
+ --host-user "$(GDB_HOST_USERNAME)" \
+ --target-user "$(GDB_TARGET_USERNAME)" \
+ "$(TESTS)"
+
force:;
clean mostlyclean:
diff --git a/gdb/testsuite/README b/gdb/testsuite/README
index 330a385..843d826 100644
--- a/gdb/testsuite/README
+++ b/gdb/testsuite/README
@@ -328,6 +328,48 @@ For example, to turn on gdbserver debugging, you can do:
make check GDBSERVER_DEBUG="debug,replay"
+GDB_TARGET_USERNAME
+GDB_HOST_USERNAME
+
+These settings are only used with the check-all-boards target, and
+should be the usernames of two separate users on the local machine,
+both of which the current user can ssh to without a password.
+
+These users will be used by board files that simulate remote targets
+by switching to a different user on the same machine. These users
+will have random files copied into their $HOME directories, so it is a
+good idea to setup new users just for this purpose.
+
+Testing All Simple Boards
+*************************
+
+There are a number of boards that ship with GDB that simulate common
+debug scenarios. For example by sshing to a different user on the
+local machine and running gdbserver as this alternative user we aim to
+simulate a true remote debug experience.
+
+There is a script binutils-gdb/gdb/testssuite/make-check-all.sh which
+can be used to run a defined set of tests using all of the available
+simple board files. Support for using this script is also included in
+GDB's makefile, and can be used as:
+
+ make check-all-boards GDB_TARGET_USERNAME=remote-target \
+ GDB_HOST_USERNAME=remote-host \
+ TESTS="gdb.base/break.exp"
+
+The 'remote-target' and 'remote-host' can be replaced with any user
+names on the local machine, the only requirements are that the current
+user must be able to ssh to these users without a password, and these
+users must be happy to have arbitrary files copied into their $HOME
+directory. Ideally, these users would be setup just for GDB testing.
+
+The check-all-boards target requires that TESTS be defined, though it
+is fine to include multiple tests.
+
+The results are preserved, and can be found in the directory
+gdb/testsuite/check-all/. The results are split by the board file
+used.
+
Architecture-specific Parameters
******************************