]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gdb_is_target_remote -> gdb_protocol_is_remote
authorPedro Alves <pedro@palves.net>
Wed, 17 Apr 2024 19:43:53 +0000 (20:43 +0100)
committerPedro Alves <pedro@palves.net>
Fri, 26 Apr 2024 20:22:48 +0000 (21:22 +0100)
This is similar to the previous patch, but for gdb_protocol_is_remote.

gdb_is_target_remote and its MI cousin mi_is_target_remote, use "maint
print target-stack", which is unnecessary when checking whether
gdb_protocol is "remote" or "extended-remote" would do.  Checking
gdb_protocol is more efficient, and can be done before starting GDB
and running to main, unlike gdb_is_target_remote/mi_is_target_remote.

This adds a new gdb_protocol_is_remote procedure, and uses it in place
of gdb_is_target_remote/mi_is_target_remote throughout.

There are no uses of gdb_is_target_remote/mi_is_target_remote left
after this.  Those will be eliminated in a following patch.

In some spots, we no longer need to defer the check until after
starting GDB, so the patch adjusts accordingly.

Change-Id: I90267c132f942f63426f46dbca0b77dbfdf9d2ef
Approved-By: Tom Tromey <tom@tromey.com>
18 files changed:
gdb/testsuite/gdb.arch/aarch64-sme-core.exp.tcl
gdb/testsuite/gdb.arch/aarch64-sme-regs-available.exp.tcl
gdb/testsuite/gdb.arch/aarch64-sme-regs-sigframe.exp.tcl
gdb/testsuite/gdb.arch/aarch64-sme-regs-unavailable.exp.tcl
gdb/testsuite/gdb.arch/aarch64-sme-sanity.exp
gdb/testsuite/gdb.base/cond-eval-mode.exp
gdb/testsuite/gdb.base/dprintf.exp
gdb/testsuite/gdb.base/hbreak-in-shr-unsupported.exp
gdb/testsuite/gdb.mi/mi-nonstop.exp
gdb/testsuite/gdb.python/py-evsignal.exp
gdb/testsuite/gdb.reverse/finish-reverse-next.exp
gdb/testsuite/gdb.threads/break-while-running.exp
gdb/testsuite/gdb.threads/main-thread-exit-during-detach.exp
gdb/testsuite/gdb.threads/process-dies-while-handling-bp.exp
gdb/testsuite/gdb.trace/change-loc.exp
gdb/testsuite/gdb.trace/ftrace.exp
gdb/testsuite/gdb.trace/qtro.exp
gdb/testsuite/lib/gdb.exp

index b4868d389b165918a6905a28fbc3705ad0c82aac..b9b83b93772d621f1f48b43f40af196bad4f7b1b 100644 (file)
@@ -158,20 +158,20 @@ proc test_sme_core_file { id_start id_end } {
                continue
            }
 
-           if ![runto_main] {
-               untested "could not run to main"
-               return -1
-           }
-
            # Check if we are talking to a remote target.  If so, bail out,
            # as right now remote targets can't communicate vector length (vl
            # or svl) changes to gdb via the RSP.  When this restriction is
            # lifted, we can remove this guard.
-           if {[gdb_is_target_remote]} {
+           if {[gdb_protocol_is_remote]} {
                unsupported "aarch64 sve/sme tests not supported for remote targets"
                return -1
            }
 
+           if ![runto_main] {
+               untested "could not run to main"
+               return -1
+           }
+
            generate_sme_core_files ${executable} ${binfile} $id $state $vl $svl
        }
     }
index 450cb87021eb7d762ba8940339d4d175a0b7f521..642b7b62d690792f3b97221d4e3ead4c7b283ba6 100644 (file)
 
 load_lib aarch64-scalable.exp
 
+require is_aarch64_target
+require allow_aarch64_sve_tests
+require allow_aarch64_sme_tests
+
+# Remote targets can't communicate vector length (vl or svl) changes
+# to GDB via the RSP.
+require !gdb_protocol_is_remote
+
 #
 # Cycle through all ZA registers and pseudo-registers and validate that their
 # contents are available for vector length SVL.
@@ -160,14 +168,6 @@ proc test_sme_registers_available { id_start id_end } {
        return -1
     }
 
-    # Check if we are talking to a remote target.  If so, bail out, as right now
-    # remote targets can't communicate vector length (vl or svl) changes to gdb
-    # via the RSP.  When this restriction is lifted, we can remove this guard.
-    if {[gdb_is_target_remote]} {
-       unsupported "aarch64 sve/sme tests not supported for remote targets"
-       return -1
-    }
-
     gdb_test_no_output "set print repeats 1"
 
     set prctl_breakpoint "stop 1"
@@ -255,8 +255,4 @@ proc test_sme_registers_available { id_start id_end } {
     }
 }
 
-require is_aarch64_target
-require allow_aarch64_sve_tests
-require allow_aarch64_sme_tests
-
 test_sme_registers_available $id_start $id_end
index d79bd3969c912df13e068f2ff55b0a356af6fcb9..c1c526995d6d4884f803267652f5f042d223eb99 100644 (file)
 
 load_lib aarch64-scalable.exp
 
+require is_aarch64_target
+require allow_aarch64_sve_tests
+require allow_aarch64_sme_tests
+
+# Remote targets can't communicate vector length (vl or svl) changes
+# to GDB via the RSP.
+require !gdb_protocol_is_remote
+
 #
 # Validate the state of registers in the signal frame for various states.
 #
@@ -39,14 +47,6 @@ proc test_sme_registers_sigframe { id_start id_end } {
        return -1
     }
 
-    # Check if we are talking to a remote target.  If so, bail out, as right now
-    # remote targets can't communicate vector length (vl or svl) changes to gdb
-    # via the RSP.  When this restriction is lifted, we can remove this guard.
-    if {[gdb_is_target_remote]} {
-       unsupported "aarch64 sve/sme tests not supported for remote targets"
-       return -1
-    }
-
     set sigill_breakpoint "stop before SIGILL"
     set handler_breakpoint "handler"
     gdb_breakpoint [gdb_get_line_number $sigill_breakpoint]
@@ -183,8 +183,4 @@ proc test_sme_registers_sigframe { id_start id_end } {
     }
 }
 
-require is_aarch64_target
-require allow_aarch64_sve_tests
-require allow_aarch64_sme_tests
-
 test_sme_registers_sigframe $id_start $id_end
index 51488527ca8a07cfbb38d92879ff8be0b7168adc..77ff66c49c456d7896112e6ad9acdd24b083ef91 100644 (file)
@@ -120,19 +120,19 @@ proc test_sme_registers_unavailable { id_start id_end } {
     }
     set binfile [standard_output_file ${executable}]
 
-    if ![runto_main] {
-       untested "could not run to main"
-       return -1
-    }
-
     # Check if we are talking to a remote target.  If so, bail out, as right now
     # remote targets can't communicate vector length (vl or svl) changes to gdb
     # via the RSP.  When this restriction is lifted, we can remove this guard.
-    if {[gdb_is_target_remote]} {
+    if {[gdb_protocol_is_remote]} {
        unsupported "aarch64 sve/sme tests not supported for remote targets"
        return -1
     }
 
+    if ![runto_main] {
+       untested "could not run to main"
+       return -1
+    }
+
     gdb_test_no_output "set print repeats 1"
 
     set prctl_breakpoint "stop 1"
index 51b3d225cdd6e6748c20ff28e09b096b92680fad..913d0be5a315532b71f51e891ec0cad202f15688 100644 (file)
@@ -40,6 +40,10 @@ require is_aarch64_target
 require allow_aarch64_sve_tests
 require allow_aarch64_sme_tests
 
+# Remote targets can't communicate vector length (vl or svl) changes
+# to GDB via the RSP.
+require !gdb_protocol_is_remote
+
 set compile_flags {"debug" "macros" "additional_flags=-march=armv8.5-a+sve"}
 standard_testfile
 if {[prepare_for_testing "failed to prepare" ${testfile} ${srcfile} ${compile_flags}]} {
@@ -50,14 +54,6 @@ if {![runto_main]} {
     return -1
 }
 
-# Check if we are talking to a remote target.  If so, bail out, as right now
-# remote targets can't communicate vector length (vl or svl) changes to gdb
-# via the RSP.  When this restriction is lifted, we can remove this guard.
-if {[gdb_is_target_remote]} {
-    unsupported "aarch64 sve/sme tests not supported for remote targets"
-    return -1
-}
-
 # Adjust the repeat count for the test.
 gdb_test_no_output "set print repeats 1" "adjust repeat count"
 
index cd1b78bf2abbf0789913709da6bf7b839719ab3d..0e98b8307ca4caa91f54a720defe22a716c29a33 100644 (file)
@@ -58,7 +58,7 @@ gdb_test_multiple $test_target $test_target {
 # We now know that the target supports target-side conditional
 # evaluation.  Now make sure we can force-disable the
 # ConditionalBreakpoints RSP feature.
-if [gdb_is_target_remote] {
+if [gdb_protocol_is_remote] {
     gdb_test \
        "set remote conditional-breakpoints-packet off" \
        "Support for the 'ConditionalBreakpoints' packet on the current remote target is set to \"off\"."
index 8b284a8d93d79a98df249f176ca56796903de9b3..649126f141bb5648f560948aba8770e3a5a5fb94 100644 (file)
@@ -217,7 +217,7 @@ gdb_test "set dprintf-style foobar" "Undefined item: \"foobar\"." \
 # Test that force-disabling the BreakpointCommands RSP feature works
 # as expected.  dprintf relies on support for target-side breakpoint
 # commands --- use it as proxy.
-if [gdb_is_target_remote] {
+if [gdb_protocol_is_remote] {
     gdb_test \
        "set remote breakpoint-commands-packet off" \
        "Support for the 'BreakpointCommands' packet on the current remote target is set to \"off\"."
index 8b078a69d100259e27558b3ffa74a5196a132ec9..e90f352b272fecb63040fbee8be1ca7677214cb5 100644 (file)
@@ -41,8 +41,6 @@ if {![runto_main]} {
     return -1
 }
 
-set is_target_remote [gdb_is_target_remote]
-
 # Get main breakpoint out of the way.
 delete_breakpoints
 
@@ -51,7 +49,7 @@ gdb_test_no_output "set breakpoint always-inserted on"
 
 # Force-disable Z1 packets, in case the target actually supports
 # these.
-if {$is_target_remote} {
+if {[gdb_protocol_is_remote]} {
     gdb_test \
        "set remote Z-packet off" \
        "Use of Z packets on the current remote target is set to \"off\"."
@@ -79,7 +77,7 @@ gdb_test_multiple "hbreak -q main" $test {
     }
     -re "Hardware assisted breakpoint.*at.* file .*$srcfile, line.*$gdb_prompt $" {
        set supports_hbreak 1
-       if {$is_target_remote} {
+       if {[gdb_protocol_is_remote]} {
            # Z-packets have been force-disabled, so this shouldn't
            # happen.
            fail $test
index 922f5ea0a765c5dd92e9d1dcae146cac98aefee9..609fbec0e9f931762b41de24c7b30c29882d12fe 100644 (file)
@@ -126,7 +126,7 @@ mi_gdb_test "-thread-select 2" "\\^done.*" "select first worker thread"
 mi_gdb_test "-gdb-set --thread 3 variable exit_first_thread=1" ".*\\^done" "ask the second thread to exit"
 
 set test "wait for thread exit"
-if { [mi_is_target_remote] } {
+if { [gdb_protocol_is_remote] } {
     # The remote protocol doesn't have support for thread exit
     # notifications.
     unsupported $test
index aa87cb42fbda20c2d52e42ea25262820f9954da3..83b351f8f390356ca47b072fcc6644b958a85da2 100644 (file)
@@ -13,8 +13,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-if {[target_info gdb_protocol] == "remote"
-    || [target_info gdb_protocol] == "extended-remote"} {
+if {[gdb_protocol_is_remote]} {
     # RuntimeError: Could not find event thread
     kfail "python/12966" "Signal Thread 3"
     return -1
index 4ca670e270f4f45078f3eddb9278edd904912e32..73a4124fab4aedae26850283f0ab582f9d803ee4 100644 (file)
@@ -52,7 +52,6 @@ if { [prepare_for_testing "failed to prepare" $testfile $srcfile] } {
 }
 
 runto_main
-set target_remote [gdb_is_target_remote]
 
 if [supports_process_record] {
     # Activate process record/replay.
index aa56af9ac62df0c352d795a2d654968aa9603b86..4bec753c23588541db71f665eb9a3920ba924d94 100644 (file)
@@ -53,7 +53,7 @@ proc test { update_thread_list always_inserted non_stop } {
     # RSP, we can't issue commands until the target replies to vCont.
     # Not an issue with the non-stop RSP variant, which has a
     # non-blocking vCont.
-    if {$non_stop=="off" && [gdb_is_target_remote]} {
+    if {$non_stop=="off" && [gdb_protocol_is_remote]} {
        return -1
     }
 
index 15780adc1183425a21534e1b7addd215740c485b..2a9320a691477f74a573865016d14cc53304e6c5 100644 (file)
@@ -120,7 +120,7 @@ proc run_test { spawn_inferior } {
     # In both cases the stop arrives while GDB is processing the
     # detach, however, for remote targets GDB doesn't report the stop,
     # while for local targets GDB does report the stop.
-    if {![gdb_is_target_remote]} {
+    if {![gdb_protocol_is_remote]} {
        set stop_re "\\\[Thread.*exited\\\]\r\n"
     } else {
        set stop_re ""
index a4c50d1c1f178ca4f7ae599e2c5289e91e1dbb5d..e1bc6feea46c36a9eecc0a1546fc07669eb9f6cd 100644 (file)
@@ -52,7 +52,7 @@ proc do_test { non_stop cond_bp_target } {
     # Whether it's known that the test fails.
     set should_kfail 0
 
-    if {![gdb_is_target_remote]} {
+    if {![gdb_protocol_is_remote]} {
        set should_kfail 1
     } else {
        if {!$cond_bp_target} {
index cc9f77f2514822ee932e0c5865fba78f3ae979c1..fb55153bfcbec936a5e10f8d1ac52eab4fd8be98 100644 (file)
@@ -288,16 +288,16 @@ proc tracepoint_install_in_trace_disabled { trace_type } {
        global pcreg
        global gdb_prompt
 
+       # This test only makes sense with remote targets.
+       if ![gdb_protocol_is_remote] {
+           return
+       }
+
        clean_restart ${testfile}
        if ![runto_main] {
            return -1
        }
 
-       # This test only makes sense with the remote target.
-       if ![gdb_is_target_remote] {
-           return
-       }
-
        gdb_test_no_output "delete break 1"
 
        # Set a tracepoint we'll never meet.  Just to avoid the
index 7f74a5a45cba4a33a39faff964a4161e34ad8a01..9b100ced8f53ab9c1faa96a9ae6ca5da9c2600d3 100644 (file)
@@ -189,7 +189,7 @@ proc test_fast_tracepoints {} {
     # fast tracepoints RSP feature, and confirm fast tracepoints
     # can no longer be downloaded.
     set test "fast tracepoint could not be downloaded with the feature disabled"
-    if [gdb_is_target_remote] {
+    if [gdb_protocol_is_remote] {
         gdb_test "set remote fast-tracepoints-packet off"
 
         gdb_test_multiple "tstart" $test {
index 3693f249e2611599a7195ea9f31861e25879605c..60f73d7e5efb64c0d561101f81f2d6f9ca162080 100644 (file)
 
 load_lib trace-support.exp
 
+# Check whether we're testing with the remote or extended-remote
+# targets.
+require gdb_protocol_is_remote
+
 standard_testfile
 
 if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug nopie}]} {
@@ -30,12 +34,7 @@ if ![runto_main] {
     return -1
 }
 
-# Check whether we're testing with the remote or extended-remote
-# targets, and whether the target supports tracepoints.
-
-if ![gdb_is_target_remote] {
-    return -1
-}
+# Check whether the target supports tracepoints.
 
 if ![gdb_target_supports_trace] {
     unsupported "current target does not support trace"
index 069fec5f3a865c61ee9efc342fa1b96a4cb43737..35f452c452de6def699fb4bca31aeac841ee9eab 100644 (file)
@@ -4756,7 +4756,8 @@ proc gdb_is_target_remote_prompt { prompt_regexp } {
 #
 # This is meant to be used on testcases that connect to targets
 # different from the default board protocol.  For most tests, you can
-# check whether gdb_protocol is "remote" or "extended-remote" instead.
+# check whether gdb_protocol is "remote" or "extended-remote" instead
+# (or call gdb_protocol_is_remote for either).
 #
 # NOTE: GDB must be running BEFORE this procedure is called!
 
@@ -4787,6 +4788,14 @@ proc gdb_protocol_is_native { } {
     return [expr {[target_info gdb_protocol] == ""}]
 }
 
+# Returns true if gdb_protocol is either "remote" or
+# "extended-remote".
+
+proc gdb_protocol_is_remote { } {
+    return [expr {[target_info gdb_protocol] == "remote"
+                 || [target_info gdb_protocol] == "extended-remote"}]
+}
+
 # Like istarget, but checks a list of targets.
 proc is_any_target {args} {
     foreach targ $args {