summaryrefslogtreecommitdiff
path: root/gdb/dwarf2loc.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/dwarf2loc.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/dwarf2loc.c')
-rw-r--r--gdb/dwarf2loc.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
index 9fd8df04abc..4c13307bb0e 100644
--- a/gdb/dwarf2loc.c
+++ b/gdb/dwarf2loc.c
@@ -1220,12 +1220,17 @@ dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame,
}
break;
+ case DWARF_VALUE_OPTIMIZED_OUT:
+ retval = allocate_value (type);
+ VALUE_LVAL (retval) = not_lval;
+ set_value_optimized_out (retval, 1);
+ break;
+
/* DWARF_VALUE_IMPLICIT_POINTER was converted to a pieced
operation by execute_stack_op. */
case DWARF_VALUE_IMPLICIT_POINTER:
/* DWARF_VALUE_OPTIMIZED_OUT can't occur in this context --
it can only be encountered when making a piece. */
- case DWARF_VALUE_OPTIMIZED_OUT:
default:
internal_error (__FILE__, __LINE__, _("invalid location type"));
}