public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Pedro Alves <pedro@palves.net>
To: Tom Tromey <tromey@adacore.com>, Eli Zaretskii <eliz@gnu.org>
Cc: gdb-patches@sourceware.org
Subject: [PATCH v2] Update the 'g' packet documentation
Date: Fri, 27 Jan 2023 15:25:33 +0000	[thread overview]
Message-ID: <b818417c-ef59-a683-e639-ae9383096164@palves.net> (raw)
In-Reply-To: <87lem645yr.fsf@tromey.com>

On 2023-01-13 6:58 p.m., Tom Tromey wrote:
>>> -When reading registers from a trace frame (@pxref{Analyze Collected
>>> -Data,,Using the Collected Data}), the stub may also return a string of
>>> +When reading registers, the stub may also return a string of
>>> literal @samp{x}'s in place of the register data digits, to indicate
>>> that the corresponding register has not been collected, thus its value
>>> is unavailable.  For example, for an architecture with 4 registers of
>>>
> 
> Pedro> Here, the new text still uses "collected", but lost the reference to trace frames.
> Pedro> It seems to me that that will result in people not knowing what "collected"
> Pedro> means in this context.
> 
> Yeah, I wanted to get rid of the trace frame note, because it's
> confusing -- 'x' can be sent any time, not just a trace frame.

Yeah, but then people won't know what "collected" here means.  Also, in the normal
case you shouldn't really end up with unavailable registers -- if some register
really doesn't exist, then the target description should ideally not describe it.

How about this version of the patch?  It combines your original patch with
my suggestions, and also extends it further to describe the normal live target
scenario and include a remark about just not including the register in the tdesc.
(Note: I did not add an xref for the target description section at the end because
there's already one in the preceding paragraph.)

From 0d6c9a0b451933042e2b0d28c6a13bac0d044433 Mon Sep 17 00:00:00 2001
From: Tom Tromey <tom@tromey.com>
Date: Wed, 11 Jan 2023 11:37:25 -0700
Subject: [PATCH] Update the 'g' packet documentation

The 'g' packet documentation references a macro that no longer exists,
and it also claims that the 'x' response for an unavailable register
is limited to trace frames.  This patch updates the documentation to
reflect what I think is currently correct.

Co-Authored-By: Pedro Alves <pedro@palves.net>
Change-Id: I863baa3b9293059cfd4aa3d534602cbcb693ba87
---
 gdb/doc/gdb.texinfo | 30 ++++++++++++++++++++----------
 1 file changed, 20 insertions(+), 10 deletions(-)

diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index b5fad2cb16e..2bc4b5b4aa8 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -41352,17 +41352,27 @@ Reply:
 Each byte of register data is described by two hex digits.  The bytes
 with the register are transmitted in target byte order.  The size of
 each register and their position within the @samp{g} packet are
-determined by the @value{GDBN} internal gdbarch functions
-@code{DEPRECATED_REGISTER_RAW_SIZE} and @code{gdbarch_register_name}.
-
-When reading registers from a trace frame (@pxref{Analyze Collected
-Data,,Using the Collected Data}), the stub may also return a string of
-literal @samp{x}'s in place of the register data digits, to indicate
-that the corresponding register has not been collected, thus its value
-is unavailable.  For example, for an architecture with 4 registers of
+determined by the target description (@pxref{Target Descriptions}); in
+the absence of a target description, this is done using code internal
+to @value{GDBN}; typically this is some customary register layout for
+the architecture in question.
+
+When reading registers, the stub may also return a string of literal
+@samp{x}'s in place of the register data digits, to indicate that the
+corresponding register's value is unavailable.  For example, when
+reading registers from a trace frame (@pxref{Analyze Collected
+Data,,Using the Collected Data}), this means that the register has not
+been collected in the trace frame.  When reading registers from a live
+program, this indicates that the stub has no means to access the
+register contents, even though the corresponding register is known to
+exist.  Note that if a register truly does not exist on the target,
+then it is better to not include it in the target description in the
+first place.
+
+For example, for an architecture with 4 registers of
 4 bytes each, the following reply indicates to @value{GDBN} that
-registers 0 and 2 have not been collected, while registers 1 and 3
-have been collected, and both have zero value:
+registers 0 and 2 are unavailable, while registers 1 and 3
+are available, and both have zero value:
 
 @smallexample
 -> @code{g}

base-commit: 1c66b8a03989b963534689ec0a9cce57e419afd5
-- 
2.36.0


  reply	other threads:[~2023-01-27 15:25 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-11 18:37 [PATCH] " Tom Tromey
2023-01-11 19:56 ` Eli Zaretskii
2023-01-13 12:09 ` Pedro Alves
2023-01-13 18:58   ` Tom Tromey
2023-01-27 15:25     ` Pedro Alves [this message]
2023-01-27 16:15       ` [PATCH v2] " Eli Zaretskii
2023-01-30 21:15       ` Tom Tromey
2023-02-16 17:10         ` Pedro Alves
2023-02-16 18:16           ` Tom Tromey

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=b818417c-ef59-a683-e639-ae9383096164@palves.net \
    --to=pedro@palves.net \
    --cc=eliz@gnu.org \
    --cc=gdb-patches@sourceware.org \
    --cc=tromey@adacore.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).