From: Pedro Alves <palves@redhat.com>
To: Yao Qi <yao@codesourcery.com>, "Breazeal, Don" <donb@codesourcery.com>
Cc: "Breazeal, Don" <Don_Breazeal@mentor.com>,
"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: Re: [PATCH] Skipping tests that use remote protocol
Date: Thu, 18 Dec 2014 12:16:00 -0000 [thread overview]
Message-ID: <5492C5A8.2020600@redhat.com> (raw)
In-Reply-To: <87mw6pt98q.fsf@codesourcery.com>
I see now we're discussing the same things here:
https://sourceware.org/ml/gdb-patches/2014-12/msg00507.html
On 12/15/2014 11:58 AM, Yao Qi wrote:
>> [target_info exists use_gdb_stub] alone would work for the attach
>> tests,
>
> I am afraid not. attach tests should be skipped on remote host testing
> (build != host, host == target) too, because test program is spawned on
> build, and the corresponding pid (on build) is used for gdb (on host) to
> attach.
As I mentioned in the other email, in that scenario, build != target too,
so an is_remote target check already causes it to be skipped.
In the (build != host, build == target) scenario, the program
is spawned on the target, and although gdb runs on a different
machine from where the target programs run, the PID that is
passed to gdb is a target pid (e.g., debugging with extended-remote).
So in that scenario, the test should be able to run. But if we
checked "is_remote host", it wouldn't.
>> which we want to skip for remote but run for extended-remote. This
>> (use_gdb_stub) seems to be equivalent to my new proc
>> [gdb_using_remote_protocol], meaning "using gdbserver/stub" and protocol
>> == "remote".
It means "use stub-like mechanisms". IOW, "when gdb connects,
the program is already running, because the debug agent is really
a piece of code (stub) that runs inside the target program". GDB used
to support a bunch more remote protocols that we've been dropping
over the years. And then GDBserver/"target remote" debugging behaves
mostly like a real stub, so nowadays use_gdb_stub is it's mostly
equivalent to "remote", though the former is more generic.
>> The name use_gdb_stub is misleading, since it is only set
>> for the remote protocol and not the extended protocol. Things go wrong
>> in lib/gdb.exp if you set use_gdb_stub and run extended-mode tests.
See above. The extended protocol does not behave like a stub.
>>
>> If we put aside the fact that we can control the results of is_remote by
>> setting the variable isremote in the board file, then [isnative] and
>> [is_remote] don't provide the information we really need. In the
>> example above they are checking whether build!=target and build!=host,
>> respectively. That doesn't cover all the cases, e.g. if build != target
>> and build != host, we don't know for sure whether target == host.
True, but what are the cases where that matters?
>> We can set isremote in the board files, as in native-gdbserver.exp, to
>> control what is_remote returns. But checking if we are using gdbserver
>> or a stub is not the purpose of is_remote, and trying to use it in
>> general for that could have negative side-effects (e.g. to gcc tests).
Agreed.
>>
>> My conclusion from all of this is that we should never use isnative or
>> is_remote to decide whether to skip tests for remote targets. The two
>> new proc's are testing the specific conditions that affect the remote
>> tests. We could use [target_info exists use_gdb_stub] in place of
>> [gdb_using_remote_protocol], but the name may be misleading.
>>
>> What do you think? In any case I'd like this discussion to result in a
>> standard approach for skipping remote tests for each of the relevant cases.
See https://sourceware.org/ml/gdb-patches/2014-12/msg00507.html.
Thanks,
Pedro Alves
prev parent reply other threads:[~2014-12-18 12:16 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-12 0:41 Don Breazeal
2014-12-12 3:12 ` Yao Qi
2014-12-12 19:00 ` Breazeal, Don
2014-12-15 11:59 ` Yao Qi
2014-12-15 18:03 ` Breazeal, Don
2014-12-18 12:16 ` Pedro Alves [this message]
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=5492C5A8.2020600@redhat.com \
--to=palves@redhat.com \
--cc=Don_Breazeal@mentor.com \
--cc=donb@codesourcery.com \
--cc=gdb-patches@sourceware.org \
--cc=yao@codesourcery.com \
/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