mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-28 07:08:01 +08:00
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.
This commit is contained in:
@ -722,6 +722,8 @@ struct function_range
|
||||
struct dwarf_block
|
||||
{
|
||||
unsigned int size;
|
||||
|
||||
/* Valid only if SIZE is not zero. */
|
||||
gdb_byte *data;
|
||||
};
|
||||
|
||||
@ -14217,7 +14219,6 @@ dwarf2_fetch_die_location_block (unsigned int offset,
|
||||
{
|
||||
/* DWARF: "If there is no such attribute, then there is no effect.". */
|
||||
|
||||
retval.data = NULL;
|
||||
retval.size = 0;
|
||||
}
|
||||
else if (attr_form_is_section_offset (attr))
|
||||
@ -15495,7 +15496,6 @@ dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym,
|
||||
dwarf2_invalid_attrib_class_complaint ("location description",
|
||||
SYMBOL_NATURAL_NAME (sym));
|
||||
baton->size = 0;
|
||||
baton->data = NULL;
|
||||
}
|
||||
|
||||
SYMBOL_COMPUTED_OPS (sym) = &dwarf2_locexpr_funcs;
|
||||
|
Reference in New Issue
Block a user