From: "Aktemur, Tankut Baris" <tankut.baris.aktemur@intel.com>
To: Andrew Burgess <aburgess@redhat.com>,
"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Cc: Tom Tromey <tom@tromey.com>
Subject: RE: [RFC PATCH] gdb, rsp: clarify a 0-length memory access
Date: Tue, 9 Apr 2024 06:39:54 +0000 [thread overview]
Message-ID: <DM4PR11MB73030E6C370A59D3F45D8E81C4072@DM4PR11MB7303.namprd11.prod.outlook.com> (raw)
In-Reply-To: <87il0w2bwm.fsf@redhat.com>
On Friday, April 5, 2024 3:10 PM, Andrew Burgess wrote:
> "Aktemur, Tankut Baris" <tankut.baris.aktemur@intel.com> writes:
>
> > On Thursday, March 28, 2024 3:13 PM, Andrew Burgess wrote:
> >> Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> writes:
> >>
> >> > Currently GDB uses a 0-length write access to probe for the 'X' packet
> >> > support. However, it is not clear from the document what a 0-length
> >> > read or write attempt should do. Clarify the document that it is
> >> > an error. Also update gdbserver's implementation to return an error.
> >>
> >> We're usually pretty conservative about changing existing remote
> >> protocol behaviour.
> >>
> >> If I understand the current behaviour correctly, we treat the zero
> >> length access as always succeeding, but you propose to change this to
> >> always fail.
> >>
> >> What's the motivation for this change? Does the existing behaviour
> >> cause some problem?
> >>
> >> Usually, when the docs are ambiguous we update the docs to reflect GDB's
> >> current behaviour, unless the current behaviour is clearly wrong.
> >>
> >> Thanks,
> >> Andrew
> >
> > Hi Andrew,
> >
> > The background of the submission is the thread linked below, where Tom expressed
> > his tendency to think that a 0-length access should be an error:
> >
> > https://sourceware.org/pipermail/gdb-patches/2024-March/207411.html
>
> OK. But here's my real worry. Right now gdbserver always succeeds for
> a zero length read/write, and it's possible that there exists other
> remote targets that have copied this behaviour.
>
> If we change the behaviour for this case, and an updated GDB, that
> expects zero length will result in failure, connects to an old gdbserver
> (or some other remote target), what happens?
>
> Even if *this* patch doesn't introduce a dependency on the new
> behaviour, future patches might, so the question I think is still a
> valid one to ask.
>
> Maybe we can show that older GDBs would _never_ send a zero length
> request? In that case maybe this is OK.
I'm not sure how we could show that feasibly. Currently in
`check_binary_download`, GDB sends a 0-length memory write ('X')
packet to see if the packet is supported. Receiving a success or a failure
does not matter, they both denote support. We can check the git history of
the `check_binary_download` function; it was most likely always like that.
But maybe there was a time an older GDB sent a 0-length access packet
somewhere else and explicitly expected success or failure, and that code was
removed later on, I don't know. It seems very difficult to me to prove that
no such check existed in the past.
I can update the document to match gdbserver's current behavior of sending
success. One glitch there is the 'm' packet, which replies with an empty
response if the length is 0; so, distinguishing success from unsupported
is not possible.
(gdb) maintenance packet m01234,0
sending: m01234,0
received: ""
(gdb) maintenance packet foo
sending: foo
received: ""
(gdb)
But maybe 'm' is always supposed to be supported?
> The solid solution would be to add a qSupported packet to control the
> behaviour of a zero length access. The default would continue the
> current "success" strategy, while if the remote supports the new packet
> the behaviour can switch to a "failure" strategy.
>
> Thanks,
> Andrew
Intel Deutschland GmbH
Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de <http://www.intel.de>
Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928
prev parent reply other threads:[~2024-04-09 6:40 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-21 13:30 Tankut Baris Aktemur
2024-03-21 16:48 ` Eli Zaretskii
2024-03-28 9:56 ` Aktemur, Tankut Baris
2024-03-28 14:13 ` Andrew Burgess
2024-03-28 15:31 ` Aktemur, Tankut Baris
2024-04-05 13:10 ` Andrew Burgess
2024-04-09 6:39 ` Aktemur, Tankut Baris [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=DM4PR11MB73030E6C370A59D3F45D8E81C4072@DM4PR11MB7303.namprd11.prod.outlook.com \
--to=tankut.baris.aktemur@intel.com \
--cc=aburgess@redhat.com \
--cc=gdb-patches@sourceware.org \
--cc=tom@tromey.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