From c44fcf813d108cd1e63c067117f72f6cc130ad53 Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Mon, 19 Mar 2012 19:59:15 +0000 Subject: 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) (struct dwarf_expr_context_funcs) : Use cu_offset and sect_offset. (struct dwarf_expr_context) : 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) : 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. --- gdb/dwarf2expr.h | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'gdb/dwarf2expr.h') 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); -- cgit v1.2.1