frame_register_read()

Richard Earnshaw rearnsha@arm.com
Tue May 14 03:19:00 GMT 2002


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.



More information about the Gdb mailing list