aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2002-03-16 02:57:42 +0000
committerAndrew Cagney <cagney@redhat.com>2002-03-16 02:57:42 +0000
commit376c9600197cb583397c4bf8a2cd49e23693bf6d (patch)
tree3eb9b49bda81c2d691d0c794d4e9018b85530098
parentff8a5556c4aee9e9053fb35b144acdf6192de804 (diff)
downloadgdb-376c9600197cb583397c4bf8a2cd49e23693bf6d.zip
gdb-376c9600197cb583397c4bf8a2cd49e23693bf6d.tar.gz
gdb-376c9600197cb583397c4bf8a2cd49e23693bf6d.tar.bz2
* 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.
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/eval.c3
-rw-r--r--gdb/findvar.c14
-rw-r--r--gdb/value.h3
4 files changed, 18 insertions, 10 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 46d6127..56e0434 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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.
diff --git a/gdb/eval.c b/gdb/eval.c
index 3f5aca3..0b42a58 100644
--- a/gdb/eval.c
+++ b/gdb/eval.c
@@ -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));
diff --git a/gdb/findvar.c b/gdb/findvar.c
index 3a160a3..5d54117 100644
--- a/gdb/findvar.c
+++ b/gdb/findvar.c
@@ -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 */
diff --git a/gdb/value.h b/gdb/value.h
index d6fa9ff..29a178f 100644
--- a/gdb/value.h
+++ b/gdb/value.h
@@ -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 *);