diff options
author | Pedro Alves <pedro@palves.net> | 2024-04-17 19:59:01 +0100 |
---|---|---|
committer | Pedro Alves <pedro@palves.net> | 2024-04-26 21:22:48 +0100 |
commit | c7a2ee649115c78a7722fddccb5e27dbd1478a5c (patch) | |
tree | 761ca5a7b8e052a824cedb9f5fb099c75f82c688 | |
parent | ef27d39dd2c2e7b6af70884895e6d751872ae305 (diff) | |
download | gdb-c7a2ee649115c78a7722fddccb5e27dbd1478a5c.zip gdb-c7a2ee649115c78a7722fddccb5e27dbd1478a5c.tar.gz gdb-c7a2ee649115c78a7722fddccb5e27dbd1478a5c.tar.bz2 |
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>
-rw-r--r-- | gdb/testsuite/gdb.base/attach.exp | 13 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/foll-exec-mode.exp | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/load-command.exp | 11 | ||||
-rw-r--r-- | gdb/testsuite/gdb.multi/stop-all-on-exit.exp | 16 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/py-inferior.exp | 2 | ||||
-rw-r--r-- | gdb/testsuite/gdb.threads/threads-after-exec.exp | 2 | ||||
-rw-r--r-- | gdb/testsuite/lib/gdb.exp | 15 |
7 files changed, 34 insertions, 29 deletions
diff --git a/gdb/testsuite/gdb.base/attach.exp b/gdb/testsuite/gdb.base/attach.exp index 84b2d27..637f287 100644 --- a/gdb/testsuite/gdb.base/attach.exp +++ b/gdb/testsuite/gdb.base/attach.exp @@ -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 } diff --git a/gdb/testsuite/gdb.base/foll-exec-mode.exp b/gdb/testsuite/gdb.base/foll-exec-mode.exp index ff92c55..65054b5 100644 --- a/gdb/testsuite/gdb.base/foll-exec-mode.exp +++ b/gdb/testsuite/gdb.base/foll-exec-mode.exp @@ -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 .*" diff --git a/gdb/testsuite/gdb.base/load-command.exp b/gdb/testsuite/gdb.base/load-command.exp index ce6f9bc..2d3656e 100644 --- a/gdb/testsuite/gdb.base/load-command.exp +++ b/gdb/testsuite/gdb.base/load-command.exp @@ -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" diff --git a/gdb/testsuite/gdb.multi/stop-all-on-exit.exp b/gdb/testsuite/gdb.multi/stop-all-on-exit.exp index f014037..1ac5388c 100644 --- a/gdb/testsuite/gdb.multi/stop-all-on-exit.exp +++ b/gdb/testsuite/gdb.multi/stop-all-on-exit.exp @@ -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" diff --git a/gdb/testsuite/gdb.python/py-inferior.exp b/gdb/testsuite/gdb.python/py-inferior.exp index e74fbfd..ee30390 100644 --- a/gdb/testsuite/gdb.python/py-inferior.exp +++ b/gdb/testsuite/gdb.python/py-inferior.exp @@ -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" diff --git a/gdb/testsuite/gdb.threads/threads-after-exec.exp b/gdb/testsuite/gdb.threads/threads-after-exec.exp index 4dc71dd..32aec6b 100644 --- a/gdb/testsuite/gdb.threads/threads-after-exec.exp +++ b/gdb/testsuite/gdb.threads/threads-after-exec.exp @@ -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] diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 1e26937..069fec5 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -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 { |