aboutsummaryrefslogtreecommitdiff
path: root/gdb/dwarf2expr.c
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2011-03-22 21:06:34 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2011-03-22 21:06:34 +0000
commitdd90784ccd58dfb449e9ccfd731b91db27e345d6 (patch)
treebd555cc67e2a42a9ae99304478c39f55f1367b22 /gdb/dwarf2expr.c
parentdc80f6ae78dff1ae428d4d312eb47f5b6bb8cea6 (diff)
downloadgdb-dd90784ccd58dfb449e9ccfd731b91db27e345d6.zip
gdb-dd90784ccd58dfb449e9ccfd731b91db27e345d6.tar.gz
gdb-dd90784ccd58dfb449e9ccfd731b91db27e345d6.tar.bz2
gdb/
* dwarf2expr.c (execute_stack_op): Handle DW_OP_GNU_entry_value. New label abort_expression. * dwarf2loc.c (dwarf2_evaluate_loc_desc_full): Handle DWARF_VALUE_OPTIMIZED_OUT. gdb/testsuite/ * gdb.dwarf2/dw2-entry-value-main.c: New file. * gdb.dwarf2/dw2-entry-value.S: New file. * gdb.dwarf2/dw2-entry-value.exp: New file.
Diffstat (limited to 'gdb/dwarf2expr.c')
-rw-r--r--gdb/dwarf2expr.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gdb/dwarf2expr.c b/gdb/dwarf2expr.c
index 8d1810e..91fccf9 100644
--- a/gdb/dwarf2expr.c
+++ b/gdb/dwarf2expr.c
@@ -904,6 +904,13 @@ execute_stack_op (struct dwarf_expr_context *ctx,
op_ptr += 4;
ctx->dwarf_call (ctx, result);
goto no_push;
+
+ case DW_OP_GNU_entry_value:
+ /* This operation is not yet supported by GDB. */
+ ctx->location = DWARF_VALUE_OPTIMIZED_OUT;
+ ctx->stack_len = 0;
+ ctx->num_pieces = 0;
+ goto abort_expression;
default:
error (_("Unhandled dwarf expression opcode 0x%x"), op);
@@ -921,6 +928,7 @@ execute_stack_op (struct dwarf_expr_context *ctx,
if (ctx->location == DWARF_VALUE_IMPLICIT_POINTER)
add_piece (ctx, 8 * ctx->addr_size, 0);
+abort_expression:
ctx->recursion_depth--;
gdb_assert (ctx->recursion_depth >= 0);
#undef sign_ext