aboutsummaryrefslogtreecommitdiff
path: root/gdb/eval.c
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2007-06-13 17:11:09 +0000
committerDaniel Jacobowitz <drow@false.org>2007-06-13 17:11:09 +0000
commit67f3407ffbf8f43d93f0c9b2d7e26e767ca5fb53 (patch)
tree0a1b075540de2218e0658eb768f0e57eec77e49a /gdb/eval.c
parent0caa462c1636049cfb05fb44f1fd104c65e6d1f7 (diff)
downloadgdb-67f3407ffbf8f43d93f0c9b2d7e26e767ca5fb53.zip
gdb-67f3407ffbf8f43d93f0c9b2d7e26e767ca5fb53.tar.gz
gdb-67f3407ffbf8f43d93f0c9b2d7e26e767ca5fb53.tar.bz2
* expression.h (enum exp_opcode): Document a register name for
OP_REGISTER. * parse.c (write_dollar_variable): Write the register name for OP_REGISTER. (operator_length_standard): Expect the register name following OP_REGISTER. * ada-lang.c (resolve_subexp): Likewise. * ax-gdb.c (gen_expr): Likewise. * eval.c (evaluate_subexp_standard): Likewise. * expprint.c (print_subexp_standard, dump_subexp_body_standard): Likewise. * tracepoint.c (encode_actions): Likewise.
Diffstat (limited to 'gdb/eval.c')
-rw-r--r--gdb/eval.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/gdb/eval.c b/gdb/eval.c
index 75cea6b..4222495 100644
--- a/gdb/eval.c
+++ b/gdb/eval.c
@@ -500,16 +500,21 @@ evaluate_subexp_standard (struct type *expect_type,
case OP_REGISTER:
{
- int regno = longest_to_int (exp->elts[pc + 1].longconst);
+ const char *name = &exp->elts[pc + 2].string;
+ int regno;
struct value *val;
- (*pos) += 2;
+
+ (*pos) += 3 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
+ regno = frame_map_name_to_regnum (deprecated_safe_get_selected_frame (),
+ name, strlen (name));
+ if (regno == -1)
+ error (_("Register $%s not available."), name);
if (noside == EVAL_AVOID_SIDE_EFFECTS)
val = value_zero (register_type (current_gdbarch, regno), not_lval);
else
val = value_of_register (regno, get_selected_frame (NULL));
if (val == NULL)
- error (_("Value of register %s not available."),
- frame_map_regnum_to_name (get_selected_frame (NULL), regno));
+ error (_("Value of register %s not available."), name);
else
return val;
}