mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 09:08:59 +00:00
gdb_is_target_native -> gdb_protocol_is_native
gdb_is_target_native uses "maint print target-stack", which is unnecessary when checking whether gdb_protocol is empty would do. Checking gdb_protocol is more efficient, and can be done before starting GDB and running to main, unlike gdb_is_target_native. This adds a new gdb_protocol_is_native procedure, and uses it in place of gdb_is_target_native. At first, I thought that we'd end up with a few testcases needing to use gdb_is_target_native still, especially multi-target tests that connect to targets different from the default board target, but no, actually all uses of gdb_is_target_native could be converted. gdb_is_target_native 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: Ia706232dbffac70f9d9740bcb89c609dbee5cee3 Approved-By: Tom Tromey <tom@tromey.com>
This commit is contained in:
@@ -470,16 +470,9 @@ proc_with_prefix test_command_line_attach_run {} {
|
||||
global gdb_prompt
|
||||
global binfile
|
||||
|
||||
# The --pid option is used to attach to a process using the native target.
|
||||
# Start GDB and run to main just to see what the execution target is, skip
|
||||
# if it's not the native target.
|
||||
clean_restart $binfile
|
||||
|
||||
if { ![runto_main] } {
|
||||
return
|
||||
}
|
||||
|
||||
if { ![gdb_is_target_native] } {
|
||||
# The --pid option is used to attach to a process using the native
|
||||
# target.
|
||||
if { ![gdb_protocol_is_native] } {
|
||||
unsupported "commandline attach run test"
|
||||
return
|
||||
}
|
||||
|
||||
@@ -109,8 +109,6 @@ proc do_follow_exec_mode_tests { mode cmd infswitch } {
|
||||
return
|
||||
}
|
||||
|
||||
set target_is_native [gdb_is_target_native]
|
||||
|
||||
# Set the follow-exec mode.
|
||||
#
|
||||
gdb_test_no_output "set follow-exec-mode $mode"
|
||||
@@ -150,7 +148,7 @@ proc do_follow_exec_mode_tests { mode cmd infswitch } {
|
||||
# process target, which was automatically pushed when running, was
|
||||
# automatically unpushed from inferior 1 on exec. Use a
|
||||
# different regexp that verifies the Connection field is empty.
|
||||
if { $target_is_native } {
|
||||
if { [gdb_protocol_is_native] } {
|
||||
set expected_re " 1.*<null> +[string_to_regexp $binfile].*\r\n\\* 2.*process.*$testfile2 .*"
|
||||
} else {
|
||||
set expected_re " 1.*null.*$testfile.*\r\n\\* 2.*process.*$testfile2 .*"
|
||||
|
||||
@@ -17,6 +17,11 @@
|
||||
|
||||
standard_testfile
|
||||
|
||||
if [gdb_protocol_is_native] {
|
||||
unsupported "the native target does not support the load command"
|
||||
return
|
||||
}
|
||||
|
||||
# Disable generation of position independent executable (PIE). Otherwise, we
|
||||
# would have to manually specify an offset to load.
|
||||
|
||||
@@ -30,12 +35,6 @@ if ![runto_main] {
|
||||
return -1
|
||||
}
|
||||
|
||||
# The native target does not support the load command.
|
||||
if [gdb_is_target_native] {
|
||||
unsupported "the native target does not support the load command"
|
||||
return
|
||||
}
|
||||
|
||||
# Manually change the value of the_variable.
|
||||
gdb_test "print/x the_variable" " = 0x1234" "check initial value of the_variable"
|
||||
gdb_test_no_output "set the_variable = 0x5555" "manually change the_variable"
|
||||
|
||||
@@ -18,6 +18,14 @@
|
||||
# Test that in all-stop mode with multiple inferiors, GDB stops all
|
||||
# threads upon receiving an exit event from one of the inferiors.
|
||||
|
||||
# This is a test specific for a native target, where we use the
|
||||
# "-exec" argument to "add-inferior" and we explicitly don't do
|
||||
# "maint set target-non-stop on".
|
||||
if {![gdb_protocol_is_native]} {
|
||||
untested "the test is aimed at a native target"
|
||||
return 0
|
||||
}
|
||||
|
||||
standard_testfile
|
||||
|
||||
if {[prepare_for_testing "failed to prepare" $testfile $srcfile]} {
|
||||
@@ -28,14 +36,6 @@ if {![runto_main]} {
|
||||
return -1
|
||||
}
|
||||
|
||||
# This is a test specific for a native target, where we use the
|
||||
# "-exec" argument to "add-inferior" and we explicitly don't do
|
||||
# "maint set target-non-stop on".
|
||||
if {![gdb_is_target_native]} {
|
||||
untested "the test is aimed at a native target"
|
||||
return 0
|
||||
}
|
||||
|
||||
# Add a second inferior that will sleep longer.
|
||||
gdb_test "add-inferior -exec $binfile" "Added inferior 2.*" \
|
||||
"add the second inferior"
|
||||
|
||||
@@ -406,7 +406,7 @@ with_test_prefix "selected_inferior" {
|
||||
gdb_test "py print (gdb.selected_inferior().connection.num)" "1" \
|
||||
"first inferior's connection number, though connection object"
|
||||
# Figure out if inf 1 has a native target.
|
||||
set inf_1_is_native [gdb_is_target_native]
|
||||
set inf_1_is_native [gdb_protocol_is_native]
|
||||
|
||||
set num [add_inferior "-no-connection"]
|
||||
gdb_test "inferior $num" ".*" "switch to inferior $num"
|
||||
|
||||
@@ -38,7 +38,7 @@ proc do_test { } {
|
||||
# leader detection racy") this isn't always thread 1.1.
|
||||
set cur_thr [get_integer_valueof "\$_thread" 0]
|
||||
|
||||
if {[istarget *-*-linux*] && [gdb_is_target_native]} {
|
||||
if {[istarget *-*-linux*] && [gdb_protocol_is_native]} {
|
||||
# Confirm there's only one LWP in the list as well, and that
|
||||
# it is bound to the existing GDB thread.
|
||||
set inf_pid [get_inferior_pid]
|
||||
|
||||
@@ -4754,6 +4754,10 @@ proc gdb_is_target_remote_prompt { prompt_regexp } {
|
||||
# Check whether we're testing with the remote or extended-remote
|
||||
# targets.
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# NOTE: GDB must be running BEFORE this procedure is called!
|
||||
|
||||
proc gdb_is_target_remote { } {
|
||||
@@ -4764,6 +4768,10 @@ proc gdb_is_target_remote { } {
|
||||
|
||||
# Check whether we're testing with the native target.
|
||||
#
|
||||
# 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 the empty string instead.
|
||||
#
|
||||
# NOTE: GDB must be running BEFORE this procedure is called!
|
||||
|
||||
proc gdb_is_target_native { } {
|
||||
@@ -4772,6 +4780,13 @@ proc gdb_is_target_native { } {
|
||||
return [gdb_is_target_1 "native" ".*native \\(Native process\\).*" "$gdb_prompt $"]
|
||||
}
|
||||
|
||||
# Returns true if gdb_protocol is empty, indicating use of the native
|
||||
# target.
|
||||
|
||||
proc gdb_protocol_is_native { } {
|
||||
return [expr {[target_info gdb_protocol] == ""}]
|
||||
}
|
||||
|
||||
# Like istarget, but checks a list of targets.
|
||||
proc is_any_target {args} {
|
||||
foreach targ $args {
|
||||
|
||||
Reference in New Issue
Block a user