This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: RFA: Recognize 'x' in response to 'p' packet




> From: Michael Snyder <msnyder@redhat.com>
>> Paul Schlie wrote:
>>> Jim Blandy
>>> * remote.c (fetch_register_using_p): Recognize 'x's for the value
>>>  of the register as indicating that the register's value is not
>>>  available.
>> 
>> Out of curiosity, under what practical circumstances would the value of a
>> register not be accessible? (and if not, shouldn't an error be returned, as
>> opposed to an 'x' which is converted to a 0 anyway? Which I've noticed "g"
>> packets also assume?)
> 
> Post-mortem debugging.  See tracepoint.c.  In a nutshell, you set up a
> tracing experiment wherein a debugging agent on the target (like an
> enhanced version of gdbserver) will collect data for you on the fly,
> saving it to be retrieved later.  Data can include register values
> and memory values.  During the post-mortem data examination stage,
> the target agent enters a mode where, whenever GDB requests a register
> or memory value, the agent supplies it from the collected cache rather
> than from the 'live' target.  It lets GDB look at a saved machine state,
> but you can only examine those registers that were saved.  Those that
> weren't saved are not available, hence we need an idiom for reporting
> this to gdb.  We can't use any legitimate integer value because a saved
> register might actually have had that value.

Thanks, that makes a little more sense; but as xxxx values aren't represent-
able within GDB, hence transformed upon receipt to 0; what's the point of
transmit x's as opposed to 0's to begin with as an idiom until GDB is
capable of differentiating valid from unknown values, which it's far from
being capable of today, as it would imply that all logical values within GDB
would need to be either maintained as text strings, or utilize structures
containing it's value along with a tag indicating it's validity, and all
expression corresponding evaluation routines would need to be updated.

(so although the proposal tries to solve a problem, it can't until GDB is
capable of differentiation between valid and unknown values. If the
objective is to determine for the purposes of information only which
register value are valid independent of their value; therefore wonder if it
may make sense to simply define a new server/target message function which
requests the list of the validity of the register values, analogously it's
request for their values, as today it's incapable of differentiation between
valid and invalid ones if encoded into the value representation itself.)





Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]