From 711a4686d84e18fbd3c4433bc2578da93b7fd0f0 Mon Sep 17 00:00:00 2001 From: jakub Date: Thu, 15 Oct 2009 16:40:52 +0000 Subject: [PATCH] * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type and DW_TAG_template_alias. (dwarf_attr_name): Handle DW_AT_main_subprogram, DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class, DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by, DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded, DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required and DW_AT_GNU_odr_signature. (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc, DW_FORM_flag_present and DW_FORM_ref_sig8. (output_signature): Only print name on the first byte. (output_die): Likewise for dw_val_class_data8. * include/dwarf2.h (DW_LANG_Python): Add comment that it is a DWARF 4 addition. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@152853 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 15 +++++++++++++++ gcc/dwarf2out.c | 42 ++++++++++++++++++++++++++++++++++++++++-- include/ChangeLog | 5 +++++ include/dwarf2.h | 1 + 4 files changed, 61 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 12f6bac..7f3e666 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,18 @@ +2009-10-15 Jakub Jelinek + + * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type + and DW_TAG_template_alias. + (dwarf_attr_name): Handle DW_AT_main_subprogram, + DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class, + DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by, + DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded, + DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required + and DW_AT_GNU_odr_signature. + (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc, + DW_FORM_flag_present and DW_FORM_ref_sig8. + (output_signature): Only print name on the first byte. + (output_die): Likewise for dw_val_class_data8. + 2009-10-15 Alexander Monakov * doc/invoke.texi: Clarify that most optimizations are not enabled diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 2f9d2b8..791ecd3 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -6478,6 +6478,10 @@ dwarf_tag_name (unsigned int tag) return "DW_TAG_shared_type"; case DW_TAG_type_unit: return "DW_TAG_type_unit"; + case DW_TAG_rvalue_reference_type: + return "DW_TAG_rvalue_reference_type"; + case DW_TAG_template_alias: + return "DW_TAG_template_alias"; case DW_TAG_GNU_template_parameter_pack: return "DW_TAG_GNU_template_parameter_pack"; case DW_TAG_GNU_formal_parameter_pack: @@ -6662,6 +6666,16 @@ dwarf_attr_name (unsigned int attr) case DW_AT_signature: return "DW_AT_signature"; + case DW_AT_main_subprogram: + return "DW_AT_main_subprogram"; + case DW_AT_data_bit_offset: + return "DW_AT_data_bit_offset"; + case DW_AT_const_expr: + return "DW_AT_const_expr"; + case DW_AT_enum_class: + return "DW_AT_enum_class"; + case DW_AT_linkage_name: + return "DW_AT_linkage_name"; case DW_AT_MIPS_fde: return "DW_AT_MIPS_fde"; @@ -6700,6 +6714,22 @@ dwarf_attr_name (unsigned int attr) return "DW_AT_body_end"; case DW_AT_GNU_vector: return "DW_AT_GNU_vector"; + case DW_AT_GNU_guarded_by: + return "DW_AT_GNU_guarded_by"; + case DW_AT_GNU_pt_guarded_by: + return "DW_AT_GNU_pt_guarded_by"; + case DW_AT_GNU_guarded: + return "DW_AT_GNU_guarded"; + case DW_AT_GNU_pt_guarded: + return "DW_AT_GNU_pt_guarded"; + case DW_AT_GNU_locks_excluded: + return "DW_AT_GNU_locks_excluded"; + case DW_AT_GNU_exclusive_locks_required: + return "DW_AT_GNU_exclusive_locks_required"; + case DW_AT_GNU_shared_locks_required: + return "DW_AT_GNU_shared_locks_required"; + case DW_AT_GNU_odr_signature: + return "DW_AT_GNU_odr_signature"; case DW_AT_GNU_template_name: return "DW_AT_GNU_template_name"; @@ -6760,6 +6790,14 @@ dwarf_form_name (unsigned int form) return "DW_FORM_ref_udata"; case DW_FORM_indirect: return "DW_FORM_indirect"; + case DW_FORM_sec_offset: + return "DW_FORM_sec_offset"; + case DW_FORM_exprloc: + return "DW_FORM_exprloc"; + case DW_FORM_flag_present: + return "DW_FORM_flag_present"; + case DW_FORM_ref_sig8: + return "DW_FORM_ref_sig8"; default: return "DW_FORM_"; } @@ -10352,7 +10390,7 @@ output_signature (const char *sig, const char *name) int i; for (i = 0; i < DWARF_TYPE_SIGNATURE_SIZE; i++) - dw2_asm_output_data (1, sig[i], "%s", name); + dw2_asm_output_data (1, sig[i], i == 0 ? "%s" : NULL, name); } /* Output the DIE and its attributes. Called recursively to generate @@ -10573,7 +10611,7 @@ output_die (dw_die_ref die) for (i = 0; i < 8; i++) dw2_asm_output_data (1, a->dw_attr_val.v.val_data8[i], - "%s", name); + i == 0 ? "%s" : NULL, name); break; } diff --git a/include/ChangeLog b/include/ChangeLog index d084bda..4680e59 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,8 @@ +2009-10-15 Jakub Jelinek + + * include/dwarf2.h (DW_LANG_Python): Add comment that it is + a DWARF 4 addition. + 2009-10-09 Rafael Espindola * plugin-api.h (ld_plugin_add_input_library): Change argument name to diff --git a/include/dwarf2.h b/include/dwarf2.h index 385ab22..7a8e030 100644 --- a/include/dwarf2.h +++ b/include/dwarf2.h @@ -858,6 +858,7 @@ enum dwarf_source_language DW_LANG_ObjC_plus_plus = 0x0011, DW_LANG_UPC = 0x0012, DW_LANG_D = 0x0013, + /* DWARF 4. */ DW_LANG_Python = 0x0014, DW_LANG_lo_user = 0x8000, /* Implementation-defined range start. */ -- 2.7.4