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>
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
}
}
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.
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"
}
}
-require is_aarch64_target
-require allow_aarch64_sve_tests
-require allow_aarch64_sme_tests
-
test_sme_registers_available $id_start $id_end
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.
#
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]
}
}
-require is_aarch64_target
-require allow_aarch64_sve_tests
-require allow_aarch64_sme_tests
-
test_sme_registers_sigframe $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"
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}]} {
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"
# 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\"."
# 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\"."
return -1
}
-set is_target_remote [gdb_is_target_remote]
-
# Get main breakpoint out of the way.
delete_breakpoints
# 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\"."
}
-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
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
# 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
}
runto_main
-set target_remote [gdb_is_target_remote]
if [supports_process_record] {
# Activate process record/replay.
# 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
}
# 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 ""
# 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} {
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
# 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 {
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}]} {
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"
#
# 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!
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 {