This is the mail archive of the
gcc-cvs@gcc.gnu.org
mailing list for the GCC project.
r185585 - in /branches/google/gcc-4_6: gcc/Chan...
- From: ccoutant at gcc dot gnu dot org
- To: gcc-cvs at gcc dot gnu dot org
- Date: Tue, 20 Mar 2012 18:03:25 -0000
- Subject: r185585 - in /branches/google/gcc-4_6: gcc/Chan...
Author: ccoutant
Date: Tue Mar 20 18:03:24 2012
New Revision: 185585
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=185585
Log:
This is for the google/gcc-4_6 branch only.
This revised patch fixes several problems with -gfission:
- Bad index for range list in the compile unit DIE.
- DW_AT_ranges attribute for compile unit in the wrong file.
- Incorrect size for skeleton type unit DIEs.
- Wrote location expression using DW_OP_addr to DWO file.
- Emitted skeleton debug section even when there is no debug info.
It also addresses a problem with the previous patch that resulted
in an ICE when a location expression is removed after creating
an addr_table entry for it.
Tested: bootstrap, core, mantle, crust (in progress).
include/
2012-03-20 Sterling Augustine <saugustine@google.com>
Cary Coutant <ccoutant@google.com>
* dwarf2.h (enum dwarf_location_atom): Add
DW_OP_GNU_addr_index.
gcc/
2012-03-20 Sterling Augustine <saugustine@google.com>
Cary Coutant <ccoutant@google.com>
* dwarf2out.c (dwarf_stack_op_name): Add DW_OP_GNU_addr_index.
(new_loc_descr): Initialize val_index.
(size_of_loc_descr): Add DW_OP_GNU_addr_index.
(output_loc_operands): Likewise.
(output_loc_operands_raw): Likewise.
(build_cfa_loc): Initialize val_index.
(new_addr_loc_descr): New function.
(add_AT_flag): Initialize val_index.
(add_AT_int): Likewise.
(add_AT_unsigned): Likewise.
(add_AT_double): Likewise.
(add_AT_vec): Likewise.
(add_AT_data8): Likewise.
(add_AT_string): Likewise.
(add_AT_die_ref): Likewise.
(add_AT_fde_ref): Likewise.
(add_AT_loc): Likewise.
(add_AT_loc_list): Likewise.
(add_addr_table_entry): Change if to assert.
(remove_addr_table_entry): New function.
(add_AT_addr): Add force_direct parameter; adjust all callers.
Initialize val_index.
(add_AT_file): Initialize val_index.
(add_AT_vms_delta): Likewise.
(add_AT_lbl_id): Add force_direct parameter; adjust all callers.
Initialize val_index.
(add_AT_lineptr): Initialize val_index.
(add_AT_macptr): Likewise.
(add_AT_offset): Likewise.
(add_AT_range_list): Add force_direct parameter; adjust all callers.
Initialize val_index.
(size_of_die): Check for AT_index.
(value_format): Likewise.
(output_attr_index_or_value): Likewise.
(output_die): Fix format warning.
(add_top_level_skeleton_die_attrs): Don't add DW_AT_stmt_list here.
(get_skeleton_type_unit): New function.
(output_skeleton_debug_sections): Add comp_unit parameter; adjust
caller; don't generate debug_skeleton_info_section_label or
debug_skeleton_abbrev_section_label here; call get_skeleton_type_unit.
(output_comdat_type_unit): Remove assert; call get_skeleton_type_unit.
(add_ranges_by_labels): Add force_direct parameter; adjust callers.
(address_of_int_loc_descriptor): Initialize val_index.
(mem_loc_descriptor): Initialize val_index; call new_addr_loc_descr.
(implicit_ptr_descriptor): Don't generate DW_OP_GNU_implicit_pointer
when splitting debug info. Initialize val_index.
(loc_descriptor): Initialize val_index; call new_addr_loc_descr.
(loc_list_from_tree): Likewise.
(add_const_value_attribute): Likewise.
(dwarf2out_init): Generate debug_skeleton_info_section_label and
debug_skeleton_abbrev_section_label here.
(output_indirect_string): Check for DW_FORM_strp instead of label
and refcount.
(output_addr_table): Check for removed entries, handle
dw_val_class_loc.
(resolve_addr_in_expr): Handle DW_OP_GNU_addr_index.
(resolve_addr): Remove entry from addr_table if necessary.
(hash_loc_operands): Add DW_OP_GNU_addr_index.
(compare_loc_operands): Likewise.
(dwarf2out_finish): Put DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges,
DW_AT_stmt_list, DW_AT_macptr in skeleton comp_unit DIE; write
skeleton debug sections if regular debug section emitted.
Modified:
branches/google/gcc-4_6/gcc/ChangeLog.google-4_6
branches/google/gcc-4_6/gcc/dwarf2out.c
branches/google/gcc-4_6/include/ChangeLog.google-4_6
branches/google/gcc-4_6/include/dwarf2.h