summaryrefslogtreecommitdiff
path: root/gdb/dwarf2expr.h
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2012-03-19 19:59:15 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2012-03-19 19:59:15 +0000
commitc44fcf813d108cd1e63c067117f72f6cc130ad53 (patch)
tree43995db9556dc95e91d8a5cea847b14b2db4b47c /gdb/dwarf2expr.h
parent23f3d45fa5cccdb7bb331f23484555e662a2ae4a (diff)
downloadgdb-c44fcf813d108cd1e63c067117f72f6cc130ad53.tar.gz
gdb/
Code cleanupp: Use cu_offset and sect_offset compile time type checking. * dwarf2expr.c (add_piece, dwarf_get_base_type, execute_stack_op) (ctx_no_dwarf_call, ctx_no_get_base_type): Use cu_offset and sect_offset. * dwarf2expr.h (cu_offset, sect_offset): New types. (struct dwarf_expr_context_funcs) <dwarf_call> (struct dwarf_expr_context_funcs) <get_base_type>: Use cu_offset and sect_offset. (struct dwarf_expr_context) <len>: Improve the comment. (struct dwarf_expr_piece, ctx_no_dwarf_call, ctx_no_get_base_type): Use cu_offset and sect_offset. * dwarf2loc.c (per_cu_dwarf_call, dwarf_expr_dwarf_call) (dwarf_expr_get_base_type, needs_frame_dwarf_call) (dwarf2_compile_expr_to_ax, disassemble_dwarf_expression): Likewise. * dwarf2loc.h: Include dwarf2expr.h. (dwarf2_fetch_die_location_block, dwarf2_get_die_type): Use cu_offset and sect_offset. * dwarf2read.c (struct dwarf2_per_objfile) <debug_types_type_hash>: Improve the comment. (struct comp_unit_head, struct dwarf2_cu, struct dwarf2_per_cu_data) (struct signatured_type, struct line_header, struct partial_die_info) (struct die_info, find_partial_die, dwarf2_get_ref_die_offset) (lookup_signatured_type_at_offset, dwarf2_find_containing_comp_unit) (get_die_type_at_offset, create_cus_from_index) (create_signatured_type_table_from_index, dw2_get_file_names) (offset_in_cu_p, read_comp_unit_head, error_check_comp_unit_head) (read_and_check_comp_unit_head, read_and_check_type_unit_head) (create_debug_types_hash_table, process_psymtab_comp_unit) (load_partial_comp_unit, create_all_comp_units) (partial_die_parent_scope, partial_die_full_name, skip_one_die) (load_full_comp_unit, dwarf2_physname, read_import_statement) (inherit_abstract_dies, read_func_scope, read_call_site_scope) (dwarf2_add_member_fn, process_enumeration_scope, read_module_type) (read_typedef, die_hash, die_eq, read_full_die, dwarf2_read_abbrevs) (load_partial_dies, read_partial_die, find_partial_die_in_comp_unit) (find_partial_die, read_attribute_value, lookup_die_type) (dump_die_shallow, store_in_ref_table): Use cu_offset and sect_offset. (is_ref_attr): New function comment. (dwarf2_get_ref_die_offset): New function comment, new variable retval. Use cu_offset and sect_offset. (follow_die_offset, follow_die_ref, dwarf2_fetch_die_location_block) (dwarf2_get_die_type, follow_die_sig, lookup_signatured_type_at_offset) (load_full_type_unit, read_signatured_type, per_cu_header_read_in) (dwarf2_find_containing_comp_unit, struct dwarf2_offset_and_type) (offset_and_type_hash, offset_and_type_eq, set_die_type) (get_die_type_at_offset, partial_die_hash, partial_die_eq) (write_one_signatured_type, write_psymtabs_to_index): Use cu_offset and sect_offset.
Diffstat (limited to 'gdb/dwarf2expr.h')
-rw-r--r--gdb/dwarf2expr.h25
1 files changed, 19 insertions, 6 deletions
diff --git a/gdb/dwarf2expr.h b/gdb/dwarf2expr.h
index fd70bf98a3a..6b5d64988aa 100644
--- a/gdb/dwarf2expr.h
+++ b/gdb/dwarf2expr.h
@@ -25,6 +25,18 @@
struct dwarf_expr_context;
+/* Offset relative to the start of its containing CU (compilation unit). */
+typedef struct
+{
+ unsigned int cu_off;
+} cu_offset;
+
+/* Offset relative to the start of its .debug_info or .debug_types section. */
+typedef struct
+{
+ unsigned int sect_off;
+} sect_offset;
+
/* Virtual method table for struct dwarf_expr_context below. */
struct dwarf_expr_context_funcs
@@ -53,14 +65,14 @@ struct dwarf_expr_context_funcs
/* Execute DW_AT_location expression for the DWARF expression subroutine in
the DIE at DIE_OFFSET in the CU from CTX. Do not touch STACK while it
being passed to and returned from the called DWARF subroutine. */
- void (*dwarf_call) (struct dwarf_expr_context *ctx, size_t die_offset);
+ void (*dwarf_call) (struct dwarf_expr_context *ctx, cu_offset die_offset);
/* Return the base type given by the indicated DIE. This can throw
an exception if the DIE is invalid or does not represent a base
type. If can also be NULL in the special case where the
callbacks are not performing evaluation, and thus it is
meaningful to substitute a stub type of the correct size. */
- struct type *(*get_base_type) (struct dwarf_expr_context *ctx, size_t die);
+ struct type *(*get_base_type) (struct dwarf_expr_context *ctx, cu_offset die);
/* Push on DWARF stack an entry evaluated for DW_TAG_GNU_call_site's
DWARF_REG/FB_OFFSET at the caller of specified BATON. If DWARF register
@@ -160,7 +172,7 @@ struct dwarf_expr_context
/* For DWARF_VALUE_LITERAL, the current literal value's length and
data. For DWARF_VALUE_IMPLICIT_POINTER, LEN is the offset of the
- target DIE. */
+ target DIE of cu_offset kind. */
ULONGEST len;
const gdb_byte *data;
@@ -231,7 +243,7 @@ struct dwarf_expr_piece
struct
{
/* The referent DIE from DW_OP_GNU_implicit_pointer. */
- ULONGEST die;
+ cu_offset die;
/* The byte offset into the resulting data. */
LONGEST offset;
} ptr;
@@ -275,8 +287,9 @@ void ctx_no_get_frame_base (void *baton, const gdb_byte **start,
CORE_ADDR ctx_no_get_frame_cfa (void *baton);
CORE_ADDR ctx_no_get_frame_pc (void *baton);
CORE_ADDR ctx_no_get_tls_address (void *baton, CORE_ADDR offset);
-void ctx_no_dwarf_call (struct dwarf_expr_context *ctx, size_t die_offset);
-struct type *ctx_no_get_base_type (struct dwarf_expr_context *ctx, size_t die);
+void ctx_no_dwarf_call (struct dwarf_expr_context *ctx, cu_offset die_offset);
+struct type *ctx_no_get_base_type (struct dwarf_expr_context *ctx,
+ cu_offset die);
void ctx_no_push_dwarf_reg_entry_value (struct dwarf_expr_context *ctx,
int dwarf_reg, CORE_ADDR fb_offset,
int deref_size);