This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
frame_register_read()
- From: Richard Earnshaw <rearnsha at arm dot com>
- To: gdb at sources dot redhat dot com
- Cc: Richard dot Earnshaw at arm dot com, Andrew Cagney <ac131313 at cygnus dot com>
- Date: Tue, 14 May 2002 11:19:06 +0100
- Subject: frame_register_read()
- Organization: ARM Ltd.
- Reply-to: Richard dot Earnshaw at arm dot com
Andrew,
frame_register_read() contains the comment
/* FIXME: cagney/2002-04-10: This test is just bogus. It is no
indication of the validity of the register. The value could
easily be found (on the stack) even though the corresponding
register isn't available. */
if (register_cached (regnum) < 0)
return 0; /* register value not available */
But in regcache.c we have
/* REGISTER_VALID is 0 if the register needs to be fetched,
1 if it has been fetched, and
-1 if the register value was not available.
"Not available" means don't try to fetch it again. */
So why is the code in frame_register_read incorrect? It's simply testing
that the register exists for this target. If it doesn't exist, then how
can it be recovered from the stack?
I guess it is possible that the check should be moved into
default_get_saved_register, for the case where we are trying to fetch the
register directly from the regcache, but either the target has this
register, or it doesn't.
R.