aboutsummaryrefslogtreecommitdiff
path: root/gdb/dwarf2loc.h
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2011-05-12 17:40:55 +0000
committerTom Tromey <tromey@redhat.com>2011-05-12 17:40:55 +0000
commit8a9b8146fd539229c51c6a4e5a4f682df2a630b0 (patch)
tree56c7dadd7ba248c915d0bdbf33cb36840d21dc71 /gdb/dwarf2loc.h
parente8d28ef4f324014dfd424acab461bbf4393b0b69 (diff)
downloadgdb-8a9b8146fd539229c51c6a4e5a4f682df2a630b0.zip
gdb-8a9b8146fd539229c51c6a4e5a4f682df2a630b0.tar.gz
gdb-8a9b8146fd539229c51c6a4e5a4f682df2a630b0.tar.bz2
gdb
PR gdb/12617: * value.h (value_from_contents): Declare. * value.c (value_from_contents): New function. * dwarf2read.c (dwarf_stack_op_name): Add new values. (dwarf2_get_die_type): New function. * dwarf2loc.c (dwarf_expr_get_base_type): New function. (allocate_piece_closure): Acquire reference to values. (read_pieced_value): Update for value-based expressions. (write_pieced_value): Likewise. (free_pieced_value_closure): Call value_free as needed. (dwarf2_evaluate_loc_desc_full): Set get_base_type field. Update for value-based expressions. * dwarf2loc.h (dwarf2_get_die_type): Declare. * dwarf2expr.h (struct dwarf_stack_value) <value>: Change type. <get_base_type>: New field. (struct dwarf_expr_piece) <v.value>: Change type. <v.regno>: New field. (struct dwarf_expr_context) <mark>: New field. (dwarf_expr_piece, dwarf_expr_fetch): Update. (dwarf_expr_pop, dwarf_expr_push): Remove. (dwarf_expr_push_address): Declare. * dwarf2expr.c (dwarf_arch_cookie): New global. (struct dwarf_gdbarch_types): New. (dwarf_gdbarch_types_init, dwarf_expr_address_type): New functions. (dwarf_expr_push): Change type of 'value' argument. Update. Now static. (dwarf_expr_push_address): New function. (dwarf_expr_pop): Now static. (dwarf_expr_fetch): Change return type. (dwarf_require_integral): New function. (dwarf_expr_fetch): Simplify. (add_piece): Update. (base_types_equal_p, dwarf_get_base_type, get_unsigned_type): New functions. (execute_stack_op) <sign_ext>: Remove. Use values for DWARF stack. <DW_OP_GNU_const_type, DW_OP_GNU_deref_type, DW_OP_GNU_regval_type, DW_OP_GNU_convert, DW_OP_GNU_reinterpret>: New cases. (_initialize_dwarf2expr): New function. (add_piece): Update. (new_dwarf_expr_context): Set new field. (free_dwarf_expr_context): Call value_free_to_mark. * dwarf2-frame.c (no_base_type): New function. (execute_stack_op): Set get_base_type field. Update. gdb/testsuite * gdb.dwarf2/typeddwarf.S: New file. * gdb.dwarf2/typeddwarf.c: New file. * gdb.dwarf2/typeddwarf.exp: New file.
Diffstat (limited to 'gdb/dwarf2loc.h')
-rw-r--r--gdb/dwarf2loc.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/gdb/dwarf2loc.h b/gdb/dwarf2loc.h
index 96a490e..08849ed 100644
--- a/gdb/dwarf2loc.h
+++ b/gdb/dwarf2loc.h
@@ -59,6 +59,9 @@ struct dwarf2_locexpr_baton dwarf2_fetch_die_location_block
CORE_ADDR (*get_frame_pc) (void *baton),
void *baton);
+struct type *dwarf2_get_die_type (unsigned int die_offset,
+ struct dwarf2_per_cu_data *per_cu);
+
/* Evaluate a location description, starting at DATA and with length
SIZE, to find the current location of variable of TYPE in the context
of FRAME. */