* 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.
This commit is contained in:
parent
0caa462c16
commit
67f3407ffb
|
@ -1,3 +1,18 @@
|
|||
2007-06-13 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* 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.
|
||||
|
||||
2007-06-13 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* utils.c (set_screen_size): Use INT_MAX for default columns.
|
||||
|
|
|
@ -2710,7 +2710,6 @@ resolve_subexp (struct expression **expp, int *pos, int deprocedure_p,
|
|||
case OP_TYPE:
|
||||
case OP_BOOL:
|
||||
case OP_LAST:
|
||||
case OP_REGISTER:
|
||||
case OP_INTERNALVAR:
|
||||
*pos += 3;
|
||||
break;
|
||||
|
@ -2720,6 +2719,10 @@ resolve_subexp (struct expression **expp, int *pos, int deprocedure_p,
|
|||
nargs = 1;
|
||||
break;
|
||||
|
||||
case OP_REGISTER:
|
||||
*pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
|
||||
break;
|
||||
|
||||
case STRUCTOP_STRUCT:
|
||||
*pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
|
||||
nargs = 1;
|
||||
|
|
10
gdb/ax-gdb.c
10
gdb/ax-gdb.c
|
@ -1599,8 +1599,14 @@ gen_expr (union exp_element **pc, struct agent_expr *ax,
|
|||
|
||||
case OP_REGISTER:
|
||||
{
|
||||
int reg = (int) (*pc)[1].longconst;
|
||||
(*pc) += 3;
|
||||
const char *name = &(*pc)[2].string;
|
||||
int reg;
|
||||
(*pc) += 4 + BYTES_TO_EXP_ELEM ((*pc)[1].longconst + 1);
|
||||
reg = frame_map_name_to_regnum (deprecated_safe_get_selected_frame (),
|
||||
name, strlen (name));
|
||||
if (reg == -1)
|
||||
internal_error (__FILE__, __LINE__,
|
||||
_("Register $%s not available"), name);
|
||||
value->kind = axs_lvalue_register;
|
||||
value->u.reg = reg;
|
||||
value->type = register_type (current_gdbarch, reg);
|
||||
|
|
13
gdb/eval.c
13
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;
|
||||
}
|
||||
|
|
|
@ -130,10 +130,8 @@ print_subexp_standard (struct expression *exp, int *pos,
|
|||
|
||||
case OP_REGISTER:
|
||||
{
|
||||
int regnum = longest_to_int (exp->elts[pc + 1].longconst);
|
||||
const char *name = user_reg_map_regnum_to_name (current_gdbarch,
|
||||
regnum);
|
||||
(*pos) += 2;
|
||||
const char *name = &exp->elts[pc + 2].string;
|
||||
(*pos) += 3 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
|
||||
fprintf_filtered (stream, "$%s", name);
|
||||
return;
|
||||
}
|
||||
|
@ -965,9 +963,8 @@ dump_subexp_body_standard (struct expression *exp,
|
|||
elt += 2;
|
||||
break;
|
||||
case OP_REGISTER:
|
||||
fprintf_filtered (stream, "Register %ld",
|
||||
(long) exp->elts[elt].longconst);
|
||||
elt += 2;
|
||||
fprintf_filtered (stream, "Register $%s", &exp->elts[elt + 1].string);
|
||||
elt += 3 + BYTES_TO_EXP_ELEM (exp->elts[elt].longconst + 1);
|
||||
break;
|
||||
case OP_INTERNALVAR:
|
||||
fprintf_filtered (stream, "Internal var @");
|
||||
|
|
|
@ -166,9 +166,8 @@ enum exp_opcode
|
|||
With another OP_LAST at the end, this makes three exp_elements. */
|
||||
OP_LAST,
|
||||
|
||||
/* OP_REGISTER is followed by an integer in the next exp_element.
|
||||
This is the number of a register to fetch (as an int).
|
||||
With another OP_REGISTER at the end, this makes three exp_elements. */
|
||||
/* OP_REGISTER is followed by a string in the next exp_element.
|
||||
This is the name of a register to fetch. */
|
||||
OP_REGISTER,
|
||||
|
||||
/* OP_INTERNALVAR is followed by an internalvar ptr in the next exp_element.
|
||||
|
|
|
@ -548,7 +548,9 @@ handle_last:
|
|||
return;
|
||||
handle_register:
|
||||
write_exp_elt_opcode (OP_REGISTER);
|
||||
write_exp_elt_longcst (i);
|
||||
str.length--;
|
||||
str.ptr++;
|
||||
write_exp_string (str);
|
||||
write_exp_elt_opcode (OP_REGISTER);
|
||||
return;
|
||||
}
|
||||
|
@ -717,7 +719,6 @@ operator_length_standard (struct expression *expr, int endpos,
|
|||
case OP_TYPE:
|
||||
case OP_BOOL:
|
||||
case OP_LAST:
|
||||
case OP_REGISTER:
|
||||
case OP_INTERNALVAR:
|
||||
oplen = 3;
|
||||
break;
|
||||
|
@ -772,6 +773,7 @@ operator_length_standard (struct expression *expr, int endpos,
|
|||
case STRUCTOP_PTR:
|
||||
args = 1;
|
||||
/* fall through */
|
||||
case OP_REGISTER:
|
||||
case OP_M2_STRING:
|
||||
case OP_STRING:
|
||||
case OP_OBJC_NSSTRING: /* Objective C Foundation Class NSString constant */
|
||||
|
|
|
@ -1602,11 +1602,20 @@ encode_actions (struct tracepoint *t, char ***tdp_actions,
|
|||
switch (exp->elts[0].opcode)
|
||||
{
|
||||
case OP_REGISTER:
|
||||
i = exp->elts[1].longconst;
|
||||
if (info_verbose)
|
||||
printf_filtered ("OP_REGISTER: ");
|
||||
add_register (collect, i);
|
||||
break;
|
||||
{
|
||||
const char *name = &exp->elts[2].string;
|
||||
|
||||
i = frame_map_name_to_regnum (deprecated_safe_get_selected_frame (),
|
||||
name, strlen (name));
|
||||
if (i == -1)
|
||||
internal_error (__FILE__, __LINE__,
|
||||
_("Register $%s not available"),
|
||||
name);
|
||||
if (info_verbose)
|
||||
printf_filtered ("OP_REGISTER: ");
|
||||
add_register (collect, i);
|
||||
break;
|
||||
}
|
||||
|
||||
case UNOP_MEMVAL:
|
||||
/* safe because we know it's a simple expression */
|
||||
|
|
Loading…
Reference in New Issue