From: Mark Kettenis <kettenis@chello.nl>
To: ac131313@redhat.com
Cc: gdb-patches@sources.redhat.com
Subject: Re: [cagney_convert-20030606-branch] Add value to REGISTER_TO_VALUE et.al.
Date: Mon, 09 Jun 2003 09:35:00 -0000 [thread overview]
Message-ID: <200306090935.h599ZLbJ000452@elgar.kettenis.dyndns.org> (raw)
In-Reply-To: <3EE3D336.1080108@redhat.com> (message from Andrew Cagney on Sun, 08 Jun 2003 20:22:14 -0400)
Date: Sun, 08 Jun 2003 20:22:14 -0400
From: Andrew Cagney <ac131313@redhat.com>
> And what do these functions do if the register is unavailable in a
> certain frame? That shouldn't happen if we have complete debug
> information, but unfortunately we almost certainly don't have that.
> Should this be reported to the user or not? Should we set
> VALUE_OPTIMIZED_OUT, just as we do for registers that don't need
> conversion? If so, we probably need a return value that indicates
> whether the conversion was successfull.
I've got into the habit of ignoring OPTIMIZED_OUT, for registers it's
always cleared (well ignoring the recent CFI stuff). It was added
between 3.5 and 3.93 but for no apparent reason (at least for
registers). The ChangeLog's are not very enlightenting and this
pre-dates Cygnus CVS.
Well, most debugging info isn't expressive enough to indicate which
registers have been saved, and which registers haven't. Therefore
most unwinders pretend they can always find the register, and do so by
returning the value from the next frame.
Anyway, the question of what to do when the register's value can't be
found has been largely ignored. I'm thinking that throwing an error
would be a safer strategy - there is too much code ignoring register
fetches and I don't think we're going to be auditing it soon.
Indeed, GDB depends on the frame unwinder always returning a value for
its registers. However for the sake of printing variables stored in
registers it seems that setting OPTIMIZED_OUT makes sense if we know
for certain that a the register has been thrashed. It makes
valprint.c:value_print() print "<value optimized out>". The problem
with printing an error message from REGISTER_TO_VALUE() is keeping the
error messages uniform. However, in some cases it might be more
appropriate to print a warning instead of an error, for example if the
register hasn't been saved, but if we cannot tell whether it has been
thrashed yet.
However, I can live with the current status quo.
Mark
next prev parent reply other threads:[~2003-06-09 9:35 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-06-04 19:38 [wip/rfc] Merge REGISTER_TO_VALUE and REGISTER_TO_TYPE Andrew Cagney
2003-06-04 21:45 ` Mark Kettenis
2003-06-04 23:05 ` Andrew Cagney
2003-06-06 18:12 ` [cagney_convert-20030606-branch] Add value to REGISTER_TO_VALUE et.al Andrew Cagney
2003-06-08 16:43 ` Mark Kettenis
2003-06-08 17:15 ` Andrew Cagney
2003-06-08 22:11 ` Andrew Cagney
2003-06-08 22:51 ` Mark Kettenis
2003-06-09 0:22 ` Andrew Cagney
2003-06-09 9:35 ` Mark Kettenis [this message]
2003-06-09 14:38 ` Andrew Cagney
2003-06-09 9:38 ` Mark Kettenis
2003-06-09 14:20 ` Andrew Cagney
2003-06-09 17:43 ` Mark Kettenis
2003-06-09 10:26 ` Mark Kettenis
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=200306090935.h599ZLbJ000452@elgar.kettenis.dyndns.org \
--to=kettenis@chello.nl \
--cc=ac131313@redhat.com \
--cc=gdb-patches@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