gdb
* ax-general.c (aop_map): Add pick and rot. * dwarf2loc.c (compile_dwarf_to_ax) <DW_OP_over>: Reimplement. <DW_OP_rot>: Implement. * ax.h (enum agent_op) <aop_pick, aop_rot>: New constants. (ax_pick): Declare. * ax-general.c (ax_pick): New function. doc * agentexpr.texi (Bytecode Descriptions): Document pick and rot. gdbserver * tracepoint.c (enum gdb_agent_op) <gdb_agent_op_pick, gdb_agent_op_rot>: New constants. (gdb_agent_op_names): Add pick and roll. (eval_agent_expr) <gdb_agent_op_pick, gdb_agent_op_rot>: New cases.
This commit is contained in:
parent
66694b75a4
commit
c7f96d2b95
8 changed files with 76 additions and 23 deletions
|
@ -517,6 +517,8 @@ enum gdb_agent_op
|
|||
gdb_agent_op_setv = 0x2d,
|
||||
gdb_agent_op_tracev = 0x2e,
|
||||
gdb_agent_op_trace16 = 0x30,
|
||||
gdb_agent_op_pick = 0x32,
|
||||
gdb_agent_op_rot = 0x33,
|
||||
gdb_agent_op_last
|
||||
};
|
||||
|
||||
|
@ -571,6 +573,9 @@ static const char *gdb_agent_op_names [gdb_agent_op_last] =
|
|||
"tracev",
|
||||
"?undef?",
|
||||
"trace16",
|
||||
"?undef?",
|
||||
"pick",
|
||||
"rot"
|
||||
};
|
||||
|
||||
struct agent_expr
|
||||
|
@ -4598,6 +4603,23 @@ eval_agent_expr (struct tracepoint_hit_ctx *ctx,
|
|||
top = stack[sp];
|
||||
break;
|
||||
|
||||
case gdb_agent_op_pick:
|
||||
arg = aexpr->bytes[pc++];
|
||||
stack[sp] = top;
|
||||
top = stack[sp - arg];
|
||||
++sp;
|
||||
break;
|
||||
|
||||
case gdb_agent_op_rot:
|
||||
{
|
||||
ULONGEST tem = stack[sp - 1];
|
||||
|
||||
stack[sp - 1] = stack[sp - 2];
|
||||
stack[sp - 2] = top;
|
||||
top = tem;
|
||||
}
|
||||
break;
|
||||
|
||||
case gdb_agent_op_zero_ext:
|
||||
arg = aexpr->bytes[pc++];
|
||||
if (arg < (sizeof (LONGEST) * 8))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue