This is the mail archive of the gdb@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]

frame_register_read()



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.


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