From: Pedro Alves <pedro@codesourcery.com>
To: gdb@sourceware.org
Cc: Raphael Zulliger <zulliger@indel.ch>
Subject: Re: Remote protocol: undocumented return value for 'p'
Date: Fri, 17 Dec 2010 16:46:00 -0000 [thread overview]
Message-ID: <201012171646.00183.pedro@codesourcery.com> (raw)
In-Reply-To: <4D0B8B6F.8010107@indel.ch>
On Friday 17 December 2010 16:10:23, Raphael Zulliger wrote:
> Hi
>
> During the development of a GDB stub, I encountered a "hidden feature":
> the 'p n' command (reading the value of a register) accepts an
> undocumented return value, which is not mentioned in the official GDB
> documentation: 'x'. the source code looks like this:
>
> /* If this register is unfetchable, tell the regcache. */
> if (buf[0] == 'x')
> {
> regcache_raw_supply (regcache, reg->regnum, NULL);
> return 1;
> }
>
>
> At some point during the development of my stub it was important for me
> to have this 'hidden feature'. Unfortunately, I can't remember why it
> was important - and now it seems that I don't rely on that anymore...
> However, at that time, it would have helped me to save some time if I
> could just read it from the PDF instead of searching it in the code.
>
> The final question is: Is this feature missing in the documentation by
> 'intention' or by 'mistake'? If it's the latter case, I would suggest
> adding it. Let me know if I should create an according patch.
By mistake. It was added here:
Thu Oct 29 10:04:20 1998 Michael Snyder <msnyder@cleaver.cygnus.com>
[Support for trace debugging: registers that were not collected.]
* remote.c (remote_fetch_registers): accept 'xxxx' in the register
packet, with the meaning "register value is not available".
Set register_valid to -1, which will connote "no value available".
* findvar.c (read_relative_register_raw_bytes): return failure if
register_valid == -1. (value_of_register): return failure if
register_valid == -1. (read_var_value): return error if
value_of_register fails for a register variable.
(value_from_register): return failure if register_valid == -1.
* eval.c (evaluate_subexp_standard): return error if
value_of_register fails for a register used in an expression.
* infcmd.c (do_registers_info): display "value not available"
for registers for which register_valid == -1.
* tracepoint.c (set_raw_tracepoint): just save the filename as is
from the symbol table, rather than trying to prepend the dir name.
Also save the bfd section. (tracepoints_info): use the section
when looking up the function name.
* tracepoint.h: add section field to tracepoint struct.
It's intended usage is in the context of inspecting tracepoints, to
report "the register exists, but I don't know its value, because I haven't
collected it."
If you found yourself using it to mean "this register does not actually
exist in this CPU variant", then you used the wrong approach. You want
to be using target descriptions for that.
--
Pedro Alves
prev parent reply other threads:[~2010-12-17 16:46 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-17 16:10 Raphael Zulliger
2010-12-17 16:46 ` 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=201012171646.00183.pedro@codesourcery.com \
--to=pedro@codesourcery.com \
--cc=gdb@sourceware.org \
--cc=zulliger@indel.ch \
/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