summaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.base
diff options
context:
space:
mode:
authorChristina Schimpe <christina.schimpe@intel.com>2021-11-18 16:13:16 +0000
committerChristina Schimpe <christina.schimpe@intel.com>2023-01-30 12:45:31 +0100
commitff52c0736a637fec4938f4b957bc8847c709b13c (patch)
tree51f0d7e28e085c92694e534fe5b7ed8f127c321e /gdb/testsuite/gdb.base
parent594a01c217143dce2f1f3181bcca4047b4a44107 (diff)
downloadbinutils-gdb-ff52c0736a637fec4938f4b957bc8847c709b13c.tar.gz
gdb: Make global feature array a per-remote target array
This patch applies the appropriate FIXME notes described in commit 5b6d1e4 "Multi-target support". "You'll notice that remote.c includes some FIXME notes. These refer to the fact that the global arrays that hold data for the remote packets supported are still globals. For example, if we connect to two different servers/stubs, then each might support different remote protocol features. They might even be different architectures, like e.g., one ARM baremetal stub, and a x86 gdbserver, to debug a host/controller scenario as a single program. That isn't going to work correctly today, because of said globals. I'm leaving fixing that for another pass, since it does not appear to be trivial, and I'd rather land the base work first. It's already useful to be able to debug multiple instances of the same server (e.g., a distributed cluster, where you have full control over the servers installed), so I think as is it's already reasonable incremental progress." Using this patch it is possible to configure per-remote targets' feature packets. Given the following setup for two gdbservers: ~~~~ gdbserver --multi :1234 gdbserver --disable-packet=vCont --multi :2345 ~~~~ Before this patch configuring of range-stepping was not possible for one of two connected remote targets with different support for the vCont packet. As one of the targets supports vCont, it should be possible to configure "set range-stepping". However, the output of GDB looks like: (gdb) target extended-remote :1234 Remote debugging using :1234 (gdb) add-inferior -no-connection [New inferior 2] Added inferior 2 (gdb) inferior 2 [Switching to inferior 2 [<null>] (<noexec>)] (gdb) target extended-remote :2345 Remote debugging using :2345 (gdb) set range-stepping on warning: Range stepping is not supported by the current target (gdb) inferior 1 [Switching to inferior 1 [<null>] (<noexec>)] (gdb) set range-stepping on warning: Range stepping is not supported by the current target ~~~~ Two warnings are shown. The warning for inferior 1 should not appear as it is connected to a target supporting the vCont package. ~~~~ (gdb) target extended-remote :1234 Remote debugging using :1234 (gdb) add-inferior -no-connection [New inferior 2] Added inferior 2 (gdb) inferior 2 [Switching to inferior 2 [<null>] (<noexec>)] (gdb) target extended-remote :2345 Remote debugging using :2345 (gdb) set range-stepping on warning: Range stepping is not supported by the current target (gdb) inferior 1 [Switching to inferior 1 [<null>] (<noexec>)] (gdb) set range-stepping on (gdb) ~~~~ Now only one warning is shown for inferior 2, which is connected to a target not supporting vCont. The per-remote target feature array is realized by a new class remote_features, which stores the per-remote target array and provides functions to determine supported features of the target. A remote_target object now has a new member of that class. Each time a new remote_target object is initialized, a new per-remote target array is constructed based on the global remote_protocol_packets array. The global array is initialized in the function _initialize_remote and can be configured using the command line. Before this patch the command line configuration affected current targets and future remote targets (due to the global feature array used by all remote targets). This behavior is different and the configuration applies as follows: - If a target is connected, the command line configuration affects the current connection. All other existing remote targets are not affected. - If not connected, the command line configuration affects future connections. The show command displays the current remote target's configuration. If no remote target is selected the default configuration for future connections is shown. If we have for instance the following setup with inferior 2 being selected: ~~~~ (gdb) info inferiors Num Description Connection Executable 1 <null> 1 (extended-remote :1234) * 2 <null> 2 (extended-remote :2345) ~~~~ Before this patch, if we run 'set remote multiprocess-feature-packet', the following configuration was set: The feature array of all remote targets (in this setup the two connected targets) and all future remote connections are affected. After this patch, it will be configured as follows: The feature array of target with port :2345 which is currently selected will be configured. All other existing remote targets are not affected. The show command 'show remote multiprocess-feature-packet' will display the configuration of target with port :2345. Due to this configuration change, it is required to adapt the test "gdb/testsuite/gdb.multi/multi-target-info-inferiors.exp" to configure the multiprocess-feature-packet before the connections are created. To inform the gdb user about the new behaviour of the 'show remote PACKET-NAME' commands and the new configuration impact for remote targets using the 'set remote PACKET-NAME' commands the commands' outputs are adapted. Due to this change it is required to adapt each test using the set/show remote 'PACKET-NAME' commands.
Diffstat (limited to 'gdb/testsuite/gdb.base')
-rw-r--r--gdb/testsuite/gdb.base/cond-eval-mode.exp9
-rw-r--r--gdb/testsuite/gdb.base/dprintf.exp5
-rw-r--r--gdb/testsuite/gdb.base/find-unmapped.exp5
-rw-r--r--gdb/testsuite/gdb.base/hbreak-in-shr-unsupported.exp4
-rw-r--r--gdb/testsuite/gdb.base/remote.exp2
5 files changed, 19 insertions, 6 deletions
diff --git a/gdb/testsuite/gdb.base/cond-eval-mode.exp b/gdb/testsuite/gdb.base/cond-eval-mode.exp
index 16fb067bde8..49f9fc77460 100644
--- a/gdb/testsuite/gdb.base/cond-eval-mode.exp
+++ b/gdb/testsuite/gdb.base/cond-eval-mode.exp
@@ -59,13 +59,18 @@ gdb_test_multiple $test_target $test_target {
# evaluation. Now make sure we can force-disable the
# ConditionalBreakpoints RSP feature.
if [gdb_is_target_remote] {
- gdb_test_no_output "set remote conditional-breakpoints-packet off"
+ gdb_test \
+ "set remote conditional-breakpoints-packet off" \
+ "Support for the 'ConditionalBreakpoints' packet on the current remote target is set to \"off\"."
gdb_test $test_target "$warning" \
"set breakpoint condition-evaluation target, with support disabled"
# Confirm we can re-enable it.
- gdb_test_no_output "set remote conditional-breakpoints-packet on"
+ gdb_test \
+ "set remote conditional-breakpoints-packet on" \
+ "Support for the 'ConditionalBreakpoints' packet on the current remote target is set to \"on\"."
+
gdb_test_no_output $test_target "restore $test_target"
}
diff --git a/gdb/testsuite/gdb.base/dprintf.exp b/gdb/testsuite/gdb.base/dprintf.exp
index 99cb5056971..2d838e7f7b9 100644
--- a/gdb/testsuite/gdb.base/dprintf.exp
+++ b/gdb/testsuite/gdb.base/dprintf.exp
@@ -214,7 +214,10 @@ gdb_test "set dprintf-style foobar" "Undefined item: \"foobar\"." \
# as expected. dprintf relies on support for target-side breakpoint
# commands --- use it as proxy.
if [gdb_is_target_remote] {
- gdb_test_no_output "set remote breakpoint-commands-packet off"
+ gdb_test \
+ "set remote breakpoint-commands-packet off" \
+ "Support for the 'BreakpointCommands' packet on the current remote target is set to \"off\"."
+
gdb_test "set dprintf-style agent" \
"warning: Target cannot run dprintf commands.*" \
"set dprintf-style agent, with feature disabled"
diff --git a/gdb/testsuite/gdb.base/find-unmapped.exp b/gdb/testsuite/gdb.base/find-unmapped.exp
index 1cf115242c8..dd747d58496 100644
--- a/gdb/testsuite/gdb.base/find-unmapped.exp
+++ b/gdb/testsuite/gdb.base/find-unmapped.exp
@@ -78,7 +78,10 @@ if {[target_info gdb_protocol] == "remote"
|| [target_info gdb_protocol] == "extended-remote"} {
test_not_found 0
with_test_prefix "search-memory-packet off" {
- gdb_test_no_output "set remote search-memory-packet off"
+ gdb_test \
+ "set remote search-memory-packet off" \
+ "Support for the 'qSearch:memory' packet on the current remote target is set to \"off\"."
+
test_not_found 0
}
} else {
diff --git a/gdb/testsuite/gdb.base/hbreak-in-shr-unsupported.exp b/gdb/testsuite/gdb.base/hbreak-in-shr-unsupported.exp
index cf4083b7e43..e0c29fb54d2 100644
--- a/gdb/testsuite/gdb.base/hbreak-in-shr-unsupported.exp
+++ b/gdb/testsuite/gdb.base/hbreak-in-shr-unsupported.exp
@@ -52,7 +52,9 @@ gdb_test_no_output "set breakpoint always-inserted on"
# Force-disable Z1 packets, in case the target actually supports
# these.
if {$is_target_remote} {
- gdb_test_no_output "set remote Z-packet off"
+ gdb_test \
+ "set remote Z-packet off" \
+ "Use of Z packets on the current remote target is set to \"off\"."
}
# Probe for hw breakpoints support. With Z packets disabled, this
diff --git a/gdb/testsuite/gdb.base/remote.exp b/gdb/testsuite/gdb.base/remote.exp
index a1c9973b802..b9b05deb2b5 100644
--- a/gdb/testsuite/gdb.base/remote.exp
+++ b/gdb/testsuite/gdb.base/remote.exp
@@ -198,7 +198,7 @@ gdb_test_no_output "set remote hardware-breakpoint-limit 2147483647"
# Check the X/P/p alias commands display the correct packet names.
foreach pkt {X P p} {
- gdb_test "show remote ${pkt}-packet" "Support for the `${pkt}' packet is.*"
+ gdb_test "show remote ${pkt}-packet" "Support for the '${pkt}' packet on the current remote target is .*"
}
gdb_exit