diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-03-22 21:06:29 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-03-22 21:06:29 +0000 |
commit | e9f112fb54c101623e6541effac5b3eca98c2bcf (patch) | |
tree | b5152ed3e78edd3297d6f2824099760d4a7c5d19 /gdb/dwarf2expr.c | |
parent | 6223dd85e3a1faa1be503f0b02c0e790b0353809 (diff) | |
download | gdb-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.c | 8 |
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 |