summaryrefslogtreecommitdiff
path: root/gdb/dwarf2expr.c
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2011-03-22 21:06:29 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2011-03-22 21:06:29 +0000
commite9f112fb54c101623e6541effac5b3eca98c2bcf (patch)
treeb5152ed3e78edd3297d6f2824099760d4a7c5d19 /gdb/dwarf2expr.c
parent6223dd85e3a1faa1be503f0b02c0e790b0353809 (diff)
downloadgdb-e9f112fb54c101623e6541effac5b3eca98c2bcf.tar.gz
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 8d1810e0a95..91fccf9cc6f 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