2008-12-15 Tristan Gingold <gingold@adacore.com>

* dwarf2expr.c (execute_stack_op): Handle DW_OP_swap.
This commit is contained in:
Tristan Gingold 2008-12-15 11:32:08 +00:00
parent f5938064bf
commit 9f3fe11c95
2 changed files with 18 additions and 0 deletions

View File

@ -1,3 +1,7 @@
2008-12-15 Tristan Gingold <gingold@adacore.com>
* dwarf2expr.c (execute_stack_op): Handle DW_OP_swap.
2008-12-15 Jerome Guitton <guitton@adacore.com>
* ada-lang.c (ada_value_slice_ptr): Rename to...

View File

@ -515,6 +515,20 @@ execute_stack_op (struct dwarf_expr_context *ctx,
result = dwarf_expr_fetch (ctx, offset);
break;
case DW_OP_swap:
{
CORE_ADDR t1, t2;
if (ctx->stack_len < 2)
error (_("Not enough elements for DW_OP_swap. Need 2, have %d."),
ctx->stack_len);
t1 = ctx->stack[ctx->stack_len - 1];
t2 = ctx->stack[ctx->stack_len - 2];
ctx->stack[ctx->stack_len - 1] = t2;
ctx->stack[ctx->stack_len - 2] = t1;
goto no_push;
}
case DW_OP_over:
result = dwarf_expr_fetch (ctx, 1);
break;