public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
From: Marcel Moolenaar <marcel@cup.hp.com>
To: Andrew STUBBS <andrew.stubbs@st.com>
Cc: GDB <gdb@sources.redhat.com>, "Daniel Jacobowitz" <drow@false.org>
Subject: Re: Invalid registers
Date: Tue, 12 Jul 2005 17:19:00 -0000	[thread overview]
Message-ID: <0fbda1e85ae826a03ebacd92bcb1f8c2@cup.hp.com> (raw)
In-Reply-To: <op.sts51lwfo669wz@terrorhawk.bri.st.com>


On Jul 12, 2005, at 9:13 AM, Andrew STUBBS wrote:

> On Mon, 11 Jul 2005 19:47:01 +0100, Marcel Moolenaar 
> <marcel@cup.hp.com> wrote:
>> Given that registers are available when a value has been supplied,
>> it's logical to assume (a priori) that a register is unavailable
>> when no value has been supplied. A register's valid "bit" allows
>> for this since there are 2 states that indicate unavailability:
>> One that indicates a temporary state (0) and one that indicates a
>> permanent state (-1). The initial state of a register is the 
>> temporarily
>> unavailable state, which triggers fetching the register from the
>> target. The target can change the state to permanently unavailable
>> or supply the value (it can also, theoretically at least, leave the
>> state unmodified and not provide a value). Hence, the a priori
>> assumption that registers are unavailable when no value has been
>> supplied (i.e. when the valid "bit" is not 1) seems to yield good
>> behaviour when implemented as such. I would say then that gdb knows
>> when a value is not available.
>
> Thanks, I did look at this before I posted, but I concluded that I was 
> not what I was looking for. I mean, how would the target know what 
> frame you were in?

You only ask the target about the current or interrupted state (i.e.
frame #0).  From that you unwind to the state of the frame in question.
I noticed that even in frame #0 all registers were displayed. Even if
I marked some of them as unavailable. This of course affects unwinding
as well. So, even though I misunderstood the context, the issues are
closely related.

> I do not know what it means for a register to be invalid in the 
> target. Might it be because some registers are not available when, for 
> example, the FPU is disabled?

Yes, that could be a possibility.  On ia64, for example, the number
of stacked registers is variable.  gdb currently displays all 96 of
them, even if the frame has only 3 stacked registers allocated.
Other examples include registers that are simply not exposed through
ptrace(2) or saved in core files. That is, the set of registers
available to gdb may vary between operating systems. It makes sense
for gdb to know about the superset, but it would be nice if it then
didn't output 0 values for registers that aren't available as that
may cause confusion.

BTW: this isn't a big deal, because you can debug your code anyway.
It's just (much) nicer to be able to represent reality better.

-- 
  Marcel Moolenaar         USPA: A-39004          marcel@xcllnt.net

  reply	other threads:[~2005-07-12 17:19 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-07-11 15:42 Andrew STUBBS
2005-07-11 15:49 ` Daniel Jacobowitz
2005-07-11 18:47   ` Marcel Moolenaar
2005-07-11 18:51     ` Daniel Jacobowitz
2005-07-11 19:08       ` Marcel Moolenaar
2005-07-12 16:16     ` Andrew STUBBS
2005-07-12 17:19       ` Marcel Moolenaar [this message]
2005-07-12 16:07   ` Andrew STUBBS
2005-07-12 17:34     ` Daniel Jacobowitz
2005-07-13 15:13       ` Andrew STUBBS
2005-07-13 15:42         ` Daniel Jacobowitz
2005-07-13 16:16           ` Andrew STUBBS
2005-07-13 20:27             ` Daniel Jacobowitz
2005-07-14  9:36           ` Andrew STUBBS
2005-07-14 14:11             ` Daniel Jacobowitz

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=0fbda1e85ae826a03ebacd92bcb1f8c2@cup.hp.com \
    --to=marcel@cup.hp.com \
    --cc=andrew.stubbs@st.com \
    --cc=drow@false.org \
    --cc=gdb@sources.redhat.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).