From: Pedro Alves <pedro@palves.net>
To: gdb-patches@sourceware.org
Subject: [PATCH 09/12] gdb_target_is_native -> gdb_protocol_is_native
Date: Fri, 19 Apr 2024 16:13:39 +0100 [thread overview]
Message-ID: <20240419151342.1592474-10-pedro@palves.net> (raw)
In-Reply-To: <20240419151342.1592474-1-pedro@palves.net>
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
---
gdb/testsuite/gdb.base/attach.exp | 13 +++----------
gdb/testsuite/gdb.base/foll-exec-mode.exp | 4 +---
gdb/testsuite/gdb.base/load-command.exp | 11 +++++------
gdb/testsuite/gdb.multi/stop-all-on-exit.exp | 16 ++++++++--------
gdb/testsuite/gdb.python/py-inferior.exp | 2 +-
gdb/testsuite/gdb.threads/threads-after-exec.exp | 2 +-
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 84b2d27f3eb..637f287f59e 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 ff92c551bba..65054b530b3 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 ce6f9bcb730..2d3656e711a 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 f014037106d..1ac5388c0a4 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 e74fbfd050d..ee30390e29f 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 4dc71dd76fd..32aec6b39db 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 ddee928d510..c072a4502b4 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -4698,6 +4698,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 { } {
@@ -4708,6 +4712,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 { } {
@@ -4716,6 +4724,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 {
--
2.43.2
next prev parent reply other threads:[~2024-04-19 15:14 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-19 15:13 [PATCH 00/12] Fix attach/run failure handling - gdbserver & Windows, document "E.MESSAGE" RSP errors, more Pedro Alves
2024-04-19 15:13 ` [PATCH 01/12] Document conventions for describing packet syntax Pedro Alves
2024-04-19 15:25 ` Eli Zaretskii
2024-04-19 15:42 ` Eli Zaretskii
2024-04-22 19:10 ` Pedro Alves
2024-04-22 19:01 ` Pedro Alves
2024-04-22 19:44 ` Eli Zaretskii
2024-04-19 15:13 ` [PATCH 02/12] Centralize documentation of error and empty RSP responses Pedro Alves
2024-04-19 15:36 ` Eli Zaretskii
2024-04-19 15:42 ` Eli Zaretskii
2024-04-22 19:00 ` Pedro Alves
2024-04-22 19:42 ` Eli Zaretskii
2024-04-19 15:13 ` [PATCH 03/12] Document "E.MESSAGE" RSP errors Pedro Alves
2024-04-19 15:37 ` Eli Zaretskii
2024-04-22 8:50 ` Andrew Burgess
2024-04-22 19:04 ` Pedro Alves
2024-04-26 19:02 ` Pedro Alves
2024-04-26 19:18 ` Eli Zaretskii
2024-04-29 13:42 ` Andrew Burgess
2024-04-19 15:13 ` [PATCH 04/12] Windows: Fix run/attach hang after bad run/attach Pedro Alves
2024-04-19 18:35 ` Tom Tromey
2024-04-19 15:13 ` [PATCH 05/12] Fix "run" failure handling with GDBserver Pedro Alves
2024-04-19 18:41 ` Tom Tromey
2024-04-19 15:13 ` [PATCH 06/12] Improve vRun error reporting Pedro Alves
2024-04-19 18:43 ` Tom Tromey
2024-04-22 11:32 ` Alexandra Petlanova Hajkova
2024-04-19 15:13 ` [PATCH 07/12] Fix "attach" failure handling with GDBserver Pedro Alves
2024-04-19 18:47 ` Tom Tromey
2024-04-19 15:13 ` [PATCH 08/12] gdbserver: Fix vAttach response when attaching is not supported Pedro Alves
2024-04-19 18:48 ` Tom Tromey
2024-04-19 15:13 ` Pedro Alves [this message]
2024-04-19 18:50 ` [PATCH 09/12] gdb_target_is_native -> gdb_protocol_is_native Tom Tromey
2024-05-09 8:47 ` Bernd Edlinger
2024-05-09 9:47 ` Pedro Alves
2024-05-09 11:54 ` Bernd Edlinger
2024-05-09 12:05 ` Pedro Alves
2024-05-09 13:19 ` Bernd Edlinger
2024-05-09 13:31 ` Pedro Alves
2024-05-09 15:01 ` Bernd Edlinger
2024-05-09 15:49 ` Pedro Alves
2024-05-09 18:44 ` Bernd Edlinger
2024-05-10 10:52 ` [pushed] gdb sim testing, set gdb_protocol to "sim" Pedro Alves
2024-04-22 8:25 ` [PATCH 09/12] gdb_target_is_native -> gdb_protocol_is_native Aktemur, Tankut Baris
2024-04-23 12:33 ` Pedro Alves
2024-04-19 15:13 ` [PATCH 10/12] gdb_target_is_remote -> gdb_protocol_is_remote Pedro Alves
2024-04-19 18:56 ` Tom Tromey
2024-04-23 12:30 ` Pedro Alves
2024-04-22 8:30 ` Aktemur, Tankut Baris
2024-04-23 12:47 ` Pedro Alves
2024-04-24 13:48 ` Aktemur, Tankut Baris
2024-04-19 15:13 ` [PATCH 11/12] Eliminate gdb_is_target_remote / gdb_is_target_native & friends Pedro Alves
2024-04-19 18:57 ` Tom Tromey
2024-04-19 15:13 ` [PATCH 12/12] Fix gdb.base/attach.exp --pid test skipping on native-extended-gdbserver Pedro Alves
2024-04-19 18:59 ` Tom Tromey
2024-04-26 20:25 ` [PATCH 00/12] Fix attach/run failure handling - gdbserver & Windows, document "E.MESSAGE" RSP errors, more Pedro Alves
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240419151342.1592474-10-pedro@palves.net \
--to=pedro@palves.net \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).