X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Feval.c;h=4222495b55e7c9b6abec76426f7e7a59cf29edad;hb=67f3407ffbf8f43d93f0c9b2d7e26e767ca5fb53;hp=75cea6b5bbd13278a3662dc2f310b122084ea4f9;hpb=0caa462c1636049cfb05fb44f1fd104c65e6d1f7;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/eval.c b/gdb/eval.c index 75cea6b5bb..4222495b55 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; }