aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2011-10-12 22:04:12 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2011-10-12 22:04:12 +0000
commit1d6edc3c37dc30e5fe46f25fa4d4974c78b60e5b (patch)
treeb22379c4a6713e9b18cadfe2f42f05a4871cb0b6 /gdb/dwarf2loc.h
parent * as.c (main): Define .gasversion. rather than __GAS_VERSION__. (diff)
downloadbinutils-gdb-1d6edc3c37dc30e5fe46f25fa4d4974c78b60e5b.tar.gz
binutils-gdb-1d6edc3c37dc30e5fe46f25fa4d4974c78b60e5b.tar.bz2
binutils-gdb-1d6edc3c37dc30e5fe46f25fa4d4974c78b60e5b.zip
gdb/
Fix empty DWARF expressions DATA vs. SIZE conditionals. * dwarf2loc.c (dwarf2_find_location_expression): Clear *LOCEXPR_LENGTH. (dwarf_expr_frame_base_1): Indicate unavailability via zero *LENGTH. (locexpr_tracepoint_var_ref): Check only zero SIZE, not zero DATA. (loclist_read_variable, loclist_tracepoint_var_ref): Do not check for zero DATA. * dwarf2loc.h (struct dwarf2_locexpr_baton): Comment DATA vs. SIZE validity. * dwarf2read.c (struct dwarf_block): Comment DATA validity. (dwarf2_fetch_die_location_block, dwarf2_symbol_mark_computed): Do not clear DATA on zero SIZE. gdb/testsuite/ Fix empty DWARF expressions DATA vs. SIZE conditionals. * gdb.dwarf2/dw2-op-call.S (arraycallnoloc, arraynoloc): New DIEs. (loclist): New. (4): New abbrev. * gdb.dwarf2/dw2-op-call.exp: Remove variable srcfile and executable. Use prepare_for_testing, remove clean_restart. (p arraynoloc, p arraycallnoloc): New tests.
Diffstat (limited to 'gdb/dwarf2loc.h')
-rw-r--r--gdb/dwarf2loc.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/gdb/dwarf2loc.h b/gdb/dwarf2loc.h
index 32aa0af3dfc..819679191e1 100644
--- a/gdb/dwarf2loc.h
+++ b/gdb/dwarf2loc.h
@@ -87,10 +87,12 @@ struct value *dwarf2_evaluate_loc_desc (struct type *type,
struct dwarf2_locexpr_baton
{
- /* Pointer to the start of the location expression. */
+ /* Pointer to the start of the location expression. Valid only if SIZE is
+ not zero. */
const gdb_byte *data;
- /* Length of the location expression. */
+ /* Length of the location expression. For optimized out expressions it is
+ zero. */
unsigned long size;
/* The compilation unit containing the symbol whose location