diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2012-03-19 19:59:19 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2012-03-19 19:59:19 +0000 |
commit | b64f50a1aee2274fa2ec530a8ad191ae0f27706c (patch) | |
tree | b34da35118094c744fd8deb4d5b85e480bfadc83 /gdb/dwarf2loc.c | |
parent | 2e98ca5343c02e2f2e0721b38f759373ba46e321 (diff) | |
download | gdb-b64f50a1aee2274fa2ec530a8ad191ae0f27706c.zip gdb-b64f50a1aee2274fa2ec530a8ad191ae0f27706c.tar.gz gdb-b64f50a1aee2274fa2ec530a8ad191ae0f27706c.tar.bz2 |
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/dwarf2loc.c')
-rw-r--r-- | gdb/dwarf2loc.c | 45 |
1 files changed, 27 insertions, 18 deletions
diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c index 8f10681..863a5fa 100644 --- a/gdb/dwarf2loc.c +++ b/gdb/dwarf2loc.c @@ -284,7 +284,7 @@ dwarf_expr_tls_address (void *baton, CORE_ADDR offset) call and return. */ static void -per_cu_dwarf_call (struct dwarf_expr_context *ctx, size_t die_offset, +per_cu_dwarf_call (struct dwarf_expr_context *ctx, cu_offset die_offset, struct dwarf2_per_cu_data *per_cu, CORE_ADDR (*get_frame_pc) (void *baton), void *baton) @@ -303,7 +303,7 @@ per_cu_dwarf_call (struct dwarf_expr_context *ctx, size_t die_offset, /* Helper interface of per_cu_dwarf_call for dwarf2_evaluate_loc_desc. */ static void -dwarf_expr_dwarf_call (struct dwarf_expr_context *ctx, size_t die_offset) +dwarf_expr_dwarf_call (struct dwarf_expr_context *ctx, cu_offset die_offset) { struct dwarf_expr_baton *debaton = ctx->baton; @@ -314,7 +314,8 @@ dwarf_expr_dwarf_call (struct dwarf_expr_context *ctx, size_t die_offset) /* Callback function for dwarf2_evaluate_loc_desc. */ static struct type * -dwarf_expr_get_base_type (struct dwarf_expr_context *ctx, size_t die_offset) +dwarf_expr_get_base_type (struct dwarf_expr_context *ctx, + cu_offset die_offset) { struct dwarf_expr_baton *debaton = ctx->baton; @@ -2221,7 +2222,7 @@ needs_frame_tls_address (void *baton, CORE_ADDR offset) /* Helper interface of per_cu_dwarf_call for dwarf2_loc_desc_needs_frame. */ static void -needs_frame_dwarf_call (struct dwarf_expr_context *ctx, size_t die_offset) +needs_frame_dwarf_call (struct dwarf_expr_context *ctx, cu_offset die_offset) { struct needs_frame_baton *nf_baton = ctx->baton; @@ -3014,11 +3015,13 @@ dwarf2_compile_expr_to_ax (struct agent_expr *expr, struct axs_value *loc, { struct dwarf2_locexpr_baton block; int size = (op == DW_OP_call2 ? 2 : 4); + cu_offset offset; uoffset = extract_unsigned_integer (op_ptr, size, byte_order); op_ptr += size; - block = dwarf2_fetch_die_location_block (uoffset, per_cu, + offset.cu_off = uoffset; + block = dwarf2_fetch_die_location_block (offset, per_cu, get_ax_pc, expr); /* DW_OP_call_ref is currently not supported. */ @@ -3517,43 +3520,48 @@ disassemble_dwarf_expression (struct ui_file *stream, case DW_OP_GNU_deref_type: { int addr_size = *data++; - ULONGEST offset; + cu_offset offset; struct type *type; - data = read_uleb128 (data, end, &offset); + data = read_uleb128 (data, end, &ul); + offset.cu_off = ul; type = dwarf2_get_die_type (offset, per_cu); fprintf_filtered (stream, "<"); type_print (type, "", stream, -1); - fprintf_filtered (stream, " [0x%s]> %d", phex_nz (offset, 0), + fprintf_filtered (stream, " [0x%s]> %d", phex_nz (offset.cu_off, 0), addr_size); } break; case DW_OP_GNU_const_type: { - ULONGEST type_die; + cu_offset type_die; struct type *type; - data = read_uleb128 (data, end, &type_die); + data = read_uleb128 (data, end, &ul); + type_die.cu_off = ul; type = dwarf2_get_die_type (type_die, per_cu); fprintf_filtered (stream, "<"); type_print (type, "", stream, -1); - fprintf_filtered (stream, " [0x%s]>", phex_nz (type_die, 0)); + fprintf_filtered (stream, " [0x%s]>", phex_nz (type_die.cu_off, 0)); } break; case DW_OP_GNU_regval_type: { - ULONGEST type_die, reg; + ULONGEST reg; + cu_offset type_die; struct type *type; data = read_uleb128 (data, end, ®); - data = read_uleb128 (data, end, &type_die); + data = read_uleb128 (data, end, &ul); + type_die.cu_off = ul; type = dwarf2_get_die_type (type_die, per_cu); fprintf_filtered (stream, "<"); type_print (type, "", stream, -1); - fprintf_filtered (stream, " [0x%s]> [$%s]", phex_nz (type_die, 0), + fprintf_filtered (stream, " [0x%s]> [$%s]", + phex_nz (type_die.cu_off, 0), locexpr_regname (arch, reg)); } break; @@ -3561,11 +3569,12 @@ disassemble_dwarf_expression (struct ui_file *stream, case DW_OP_GNU_convert: case DW_OP_GNU_reinterpret: { - ULONGEST type_die; + cu_offset type_die; - data = read_uleb128 (data, end, &type_die); + data = read_uleb128 (data, end, &ul); + type_die.cu_off = ul; - if (type_die == 0) + if (type_die.cu_off == 0) fprintf_filtered (stream, "<0>"); else { @@ -3574,7 +3583,7 @@ disassemble_dwarf_expression (struct ui_file *stream, type = dwarf2_get_die_type (type_die, per_cu); fprintf_filtered (stream, "<"); type_print (type, "", stream, -1); - fprintf_filtered (stream, " [0x%s]>", phex_nz (type_die, 0)); + fprintf_filtered (stream, " [0x%s]>", phex_nz (type_die.cu_off, 0)); } } break; |