mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-27 17:40:49 +00:00
gdb_is_target_remote -> gdb_protocol_is_remote
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>
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,14 @@
|
||||
|
||||
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
|
||||
|
||||
@@ -17,6 +17,14 @@
|
||||
|
||||
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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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\"."
|
||||
|
||||
@@ -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\"."
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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 ""
|
||||
|
||||
@@ -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} {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -20,6 +20,10 @@
|
||||
|
||||
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"
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user