* eval.c (evaluate_subexp_standard): Pass ``selected_frame'' to
authorAndrew Cagney <cagney@redhat.com>
Sat, 16 Mar 2002 02:57:42 +0000 (02:57 +0000)
committerAndrew Cagney <cagney@redhat.com>
Sat, 16 Mar 2002 02:57:42 +0000 (02:57 +0000)
value_of_register.
* findvar.c (value_of_register): Add ``frame'' parameter.  Pass to
get_saved_register.
* value.h (value_of_register): Update.

gdb/ChangeLog
gdb/eval.c
gdb/findvar.c
gdb/value.h

index 46d6127..56e0434 100644 (file)
@@ -1,3 +1,11 @@
+2002-03-15  Andrew Cagney  <ac131313@redhat.com>
+
+       * eval.c (evaluate_subexp_standard): Pass ``selected_frame'' to
+       value_of_register.
+       * findvar.c (value_of_register): Add ``frame'' parameter.  Pass to
+       get_saved_register.
+       * value.h (value_of_register): Update.
+
 2002-03-14  Richard Henderson  <rth@redhat.com>
 
        * configure.in: Detect declaration for canonicalize_file_name.
index 3f5aca3..0b42a58 100644 (file)
@@ -447,8 +447,7 @@ evaluate_subexp_standard (struct type *expect_type,
     case OP_REGISTER:
       {
        int regno = longest_to_int (exp->elts[pc + 1].longconst);
-       struct value *val = value_of_register (regno);
-
+       struct value *val = value_of_register (regno, selected_frame);
        (*pos) += 2;
        if (val == NULL)
          error ("Value of register %s not available.", REGISTER_NAME (regno));
index 3a160a3..5d54117 100644 (file)
@@ -283,15 +283,15 @@ store_typed_address (void *buf, struct type *type, CORE_ADDR addr)
 
 
 
-/* Return a `value' with the contents of register REGNUM
-   in its virtual format, with the type specified by
-   REGISTER_VIRTUAL_TYPE.  
+/* Return a `value' with the contents of (virtual or cooked) register
+   REGNUM as found in the specified FRAME.  The register's type is
+   determined by REGISTER_VIRTUAL_TYPE.
 
-   NOTE: returns NULL if register value is not available.
-   Caller will check return value or die!  */
+   NOTE: returns NULL if register value is not available.  Caller will
+   check return value or die!  */
 
 struct value *
-value_of_register (int regnum)
+value_of_register (int regnum, struct frame_info *frame)
 {
   CORE_ADDR addr;
   int optim;
@@ -300,7 +300,7 @@ value_of_register (int regnum)
   enum lval_type lval;
 
   get_saved_register (raw_buffer, &optim, &addr,
-                     selected_frame, regnum, &lval);
+                     frame, regnum, &lval);
 
   if (register_cached (regnum) < 0)
     return NULL;               /* register value not available */
index d6fa9ff..29a178f 100644 (file)
@@ -317,7 +317,8 @@ extern struct value *value_from_register (struct type *type, int regnum,
 
 extern struct value *value_of_variable (struct symbol *var, struct block *b);
 
-extern struct value *value_of_register (int regnum);
+extern struct value *value_of_register (int regnum,
+                                       struct frame_info *frame);
 
 extern int symbol_read_needs_frame (struct symbol *);