This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Patch: use dwarf names from libiberty


This patch changes binutils to use the DWARF entity names that were
recently added to libiberty.

"make check" passes on x86-64 Fedora 16.

Ok?

Tom

2012-04-27  Tom Tromey  <tromey@redhat.com>

	* dwarf.c (get_TAG_name): Use get_DW_TAG_name.
	(get_FORM_name): Use get_DW_FORM_name.
	(get_AT_name): Use get_DW_AT_name.

diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index def71fb..856a851 100644
--- a/binutils/dwarf.c
+++ b/binutils/dwarf.c
@@ -595,134 +595,36 @@ process_abbrev_section (unsigned char *start, unsigned char *end)
   return NULL;
 }
 
-static char *
+static const char *
 get_TAG_name (unsigned long tag)
 {
-  switch (tag)
+  const char *name = get_DW_TAG_name (tag);
+
+  if (name == NULL)
     {
-    case DW_TAG_padding:		return "DW_TAG_padding";
-    case DW_TAG_array_type:		return "DW_TAG_array_type";
-    case DW_TAG_class_type:		return "DW_TAG_class_type";
-    case DW_TAG_entry_point:		return "DW_TAG_entry_point";
-    case DW_TAG_enumeration_type:	return "DW_TAG_enumeration_type";
-    case DW_TAG_formal_parameter:	return "DW_TAG_formal_parameter";
-    case DW_TAG_imported_declaration:	return "DW_TAG_imported_declaration";
-    case DW_TAG_label:			return "DW_TAG_label";
-    case DW_TAG_lexical_block:		return "DW_TAG_lexical_block";
-    case DW_TAG_member:			return "DW_TAG_member";
-    case DW_TAG_pointer_type:		return "DW_TAG_pointer_type";
-    case DW_TAG_reference_type:		return "DW_TAG_reference_type";
-    case DW_TAG_compile_unit:		return "DW_TAG_compile_unit";
-    case DW_TAG_string_type:		return "DW_TAG_string_type";
-    case DW_TAG_structure_type:		return "DW_TAG_structure_type";
-    case DW_TAG_subroutine_type:	return "DW_TAG_subroutine_type";
-    case DW_TAG_typedef:		return "DW_TAG_typedef";
-    case DW_TAG_union_type:		return "DW_TAG_union_type";
-    case DW_TAG_unspecified_parameters: return "DW_TAG_unspecified_parameters";
-    case DW_TAG_variant:		return "DW_TAG_variant";
-    case DW_TAG_common_block:		return "DW_TAG_common_block";
-    case DW_TAG_common_inclusion:	return "DW_TAG_common_inclusion";
-    case DW_TAG_inheritance:		return "DW_TAG_inheritance";
-    case DW_TAG_inlined_subroutine:	return "DW_TAG_inlined_subroutine";
-    case DW_TAG_module:			return "DW_TAG_module";
-    case DW_TAG_ptr_to_member_type:	return "DW_TAG_ptr_to_member_type";
-    case DW_TAG_set_type:		return "DW_TAG_set_type";
-    case DW_TAG_subrange_type:		return "DW_TAG_subrange_type";
-    case DW_TAG_with_stmt:		return "DW_TAG_with_stmt";
-    case DW_TAG_access_declaration:	return "DW_TAG_access_declaration";
-    case DW_TAG_base_type:		return "DW_TAG_base_type";
-    case DW_TAG_catch_block:		return "DW_TAG_catch_block";
-    case DW_TAG_const_type:		return "DW_TAG_const_type";
-    case DW_TAG_constant:		return "DW_TAG_constant";
-    case DW_TAG_enumerator:		return "DW_TAG_enumerator";
-    case DW_TAG_file_type:		return "DW_TAG_file_type";
-    case DW_TAG_friend:			return "DW_TAG_friend";
-    case DW_TAG_namelist:		return "DW_TAG_namelist";
-    case DW_TAG_namelist_item:		return "DW_TAG_namelist_item";
-    case DW_TAG_packed_type:		return "DW_TAG_packed_type";
-    case DW_TAG_subprogram:		return "DW_TAG_subprogram";
-    case DW_TAG_template_type_param:	return "DW_TAG_template_type_param";
-    case DW_TAG_template_value_param:	return "DW_TAG_template_value_param";
-    case DW_TAG_thrown_type:		return "DW_TAG_thrown_type";
-    case DW_TAG_try_block:		return "DW_TAG_try_block";
-    case DW_TAG_variant_part:		return "DW_TAG_variant_part";
-    case DW_TAG_variable:		return "DW_TAG_variable";
-    case DW_TAG_volatile_type:		return "DW_TAG_volatile_type";
-    case DW_TAG_MIPS_loop:		return "DW_TAG_MIPS_loop";
-    case DW_TAG_format_label:		return "DW_TAG_format_label";
-    case DW_TAG_function_template:	return "DW_TAG_function_template";
-    case DW_TAG_class_template:		return "DW_TAG_class_template";
-      /* DWARF 2.1 values.  */
-    case DW_TAG_dwarf_procedure:	return "DW_TAG_dwarf_procedure";
-    case DW_TAG_restrict_type:		return "DW_TAG_restrict_type";
-    case DW_TAG_interface_type:		return "DW_TAG_interface_type";
-    case DW_TAG_namespace:		return "DW_TAG_namespace";
-    case DW_TAG_imported_module:	return "DW_TAG_imported_module";
-    case DW_TAG_unspecified_type:	return "DW_TAG_unspecified_type";
-    case DW_TAG_partial_unit:		return "DW_TAG_partial_unit";
-    case DW_TAG_imported_unit:		return "DW_TAG_imported_unit";
-    case DW_TAG_condition:		return "DW_TAG_condition";
-    case DW_TAG_shared_type:		return "DW_TAG_shared_type";
-      /* DWARF 4 values.  */
-    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";
-      /* UPC values.  */
-    case DW_TAG_upc_shared_type:	return "DW_TAG_upc_shared_type";
-    case DW_TAG_upc_strict_type:	return "DW_TAG_upc_strict_type";
-    case DW_TAG_upc_relaxed_type:	return "DW_TAG_upc_relaxed_type";
-      /* GNU values.  */
-    case DW_TAG_GNU_call_site:		return "DW_TAG_GNU_call_site";
-    case DW_TAG_GNU_call_site_parameter:return "DW_TAG_GNU_call_site_parameter";
-    default:
-      {
-	static char buffer[100];
+      static char buffer[100];
 
-	snprintf (buffer, sizeof (buffer), _("Unknown TAG value: %lx"), tag);
-	return buffer;
-      }
+      snprintf (buffer, sizeof (buffer), _("Unknown TAG value: %lx"), tag);
+      return buffer;
     }
+
+  return name;
 }
 
-static char *
+static const char *
 get_FORM_name (unsigned long form)
 {
-  switch (form)
+  const char *name = get_DW_FORM_name (form);
+
+  if (name == NULL)
     {
-    case DW_FORM_addr:		return "DW_FORM_addr";
-    case DW_FORM_block2:	return "DW_FORM_block2";
-    case DW_FORM_block4:	return "DW_FORM_block4";
-    case DW_FORM_data2:		return "DW_FORM_data2";
-    case DW_FORM_data4:		return "DW_FORM_data4";
-    case DW_FORM_data8:		return "DW_FORM_data8";
-    case DW_FORM_string:	return "DW_FORM_string";
-    case DW_FORM_block:		return "DW_FORM_block";
-    case DW_FORM_block1:	return "DW_FORM_block1";
-    case DW_FORM_data1:		return "DW_FORM_data1";
-    case DW_FORM_flag:		return "DW_FORM_flag";
-    case DW_FORM_sdata:		return "DW_FORM_sdata";
-    case DW_FORM_strp:		return "DW_FORM_strp";
-    case DW_FORM_udata:		return "DW_FORM_udata";
-    case DW_FORM_ref_addr:	return "DW_FORM_ref_addr";
-    case DW_FORM_ref1:		return "DW_FORM_ref1";
-    case DW_FORM_ref2:		return "DW_FORM_ref2";
-    case DW_FORM_ref4:		return "DW_FORM_ref4";
-    case DW_FORM_ref8:		return "DW_FORM_ref8";
-    case DW_FORM_ref_udata:	return "DW_FORM_ref_udata";
-    case DW_FORM_indirect:	return "DW_FORM_indirect";
-      /* DWARF 4 values.  */
-    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:
-      {
-	static char buffer[100];
+      static char buffer[100];
 
-	snprintf (buffer, sizeof (buffer), _("Unknown FORM value: %lx"), form);
-	return buffer;
-      }
+      snprintf (buffer, sizeof (buffer), _("Unknown FORM value: %lx"), form);
+      return buffer;
     }
+
+  return name;
 }
 
 static unsigned char *
@@ -1831,184 +1733,27 @@ read_and_display_attr_value (unsigned long attribute,
   return data;
 }
 
-static char *
+static const char *
 get_AT_name (unsigned long attribute)
 {
-  switch (attribute)
-    {
-    case DW_AT_sibling:			return "DW_AT_sibling";
-    case DW_AT_location:		return "DW_AT_location";
-    case DW_AT_name:			return "DW_AT_name";
-    case DW_AT_ordering:		return "DW_AT_ordering";
-    case DW_AT_subscr_data:		return "DW_AT_subscr_data";
-    case DW_AT_byte_size:		return "DW_AT_byte_size";
-    case DW_AT_bit_offset:		return "DW_AT_bit_offset";
-    case DW_AT_bit_size:		return "DW_AT_bit_size";
-    case DW_AT_element_list:		return "DW_AT_element_list";
-    case DW_AT_stmt_list:		return "DW_AT_stmt_list";
-    case DW_AT_low_pc:			return "DW_AT_low_pc";
-    case DW_AT_high_pc:			return "DW_AT_high_pc";
-    case DW_AT_language:		return "DW_AT_language";
-    case DW_AT_member:			return "DW_AT_member";
-    case DW_AT_discr:			return "DW_AT_discr";
-    case DW_AT_discr_value:		return "DW_AT_discr_value";
-    case DW_AT_visibility:		return "DW_AT_visibility";
-    case DW_AT_import:			return "DW_AT_import";
-    case DW_AT_string_length:		return "DW_AT_string_length";
-    case DW_AT_common_reference:	return "DW_AT_common_reference";
-    case DW_AT_comp_dir:		return "DW_AT_comp_dir";
-    case DW_AT_const_value:		return "DW_AT_const_value";
-    case DW_AT_containing_type:		return "DW_AT_containing_type";
-    case DW_AT_default_value:		return "DW_AT_default_value";
-    case DW_AT_inline:			return "DW_AT_inline";
-    case DW_AT_is_optional:		return "DW_AT_is_optional";
-    case DW_AT_lower_bound:		return "DW_AT_lower_bound";
-    case DW_AT_producer:		return "DW_AT_producer";
-    case DW_AT_prototyped:		return "DW_AT_prototyped";
-    case DW_AT_return_addr:		return "DW_AT_return_addr";
-    case DW_AT_start_scope:		return "DW_AT_start_scope";
-    case DW_AT_stride_size:		return "DW_AT_stride_size";
-    case DW_AT_upper_bound:		return "DW_AT_upper_bound";
-    case DW_AT_abstract_origin:		return "DW_AT_abstract_origin";
-    case DW_AT_accessibility:		return "DW_AT_accessibility";
-    case DW_AT_address_class:		return "DW_AT_address_class";
-    case DW_AT_artificial:		return "DW_AT_artificial";
-    case DW_AT_base_types:		return "DW_AT_base_types";
-    case DW_AT_calling_convention:	return "DW_AT_calling_convention";
-    case DW_AT_count:			return "DW_AT_count";
-    case DW_AT_data_member_location:	return "DW_AT_data_member_location";
-    case DW_AT_decl_column:		return "DW_AT_decl_column";
-    case DW_AT_decl_file:		return "DW_AT_decl_file";
-    case DW_AT_decl_line:		return "DW_AT_decl_line";
-    case DW_AT_declaration:		return "DW_AT_declaration";
-    case DW_AT_discr_list:		return "DW_AT_discr_list";
-    case DW_AT_encoding:		return "DW_AT_encoding";
-    case DW_AT_external:		return "DW_AT_external";
-    case DW_AT_frame_base:		return "DW_AT_frame_base";
-    case DW_AT_friend:			return "DW_AT_friend";
-    case DW_AT_identifier_case:		return "DW_AT_identifier_case";
-    case DW_AT_macro_info:		return "DW_AT_macro_info";
-    case DW_AT_namelist_items:		return "DW_AT_namelist_items";
-    case DW_AT_priority:		return "DW_AT_priority";
-    case DW_AT_segment:			return "DW_AT_segment";
-    case DW_AT_specification:		return "DW_AT_specification";
-    case DW_AT_static_link:		return "DW_AT_static_link";
-    case DW_AT_type:			return "DW_AT_type";
-    case DW_AT_use_location:		return "DW_AT_use_location";
-    case DW_AT_variable_parameter:	return "DW_AT_variable_parameter";
-    case DW_AT_virtuality:		return "DW_AT_virtuality";
-    case DW_AT_vtable_elem_location:	return "DW_AT_vtable_elem_location";
-      /* DWARF 2.1 values.  */
-    case DW_AT_allocated:		return "DW_AT_allocated";
-    case DW_AT_associated:		return "DW_AT_associated";
-    case DW_AT_data_location:		return "DW_AT_data_location";
-    case DW_AT_stride:			return "DW_AT_stride";
-    case DW_AT_entry_pc:		return "DW_AT_entry_pc";
-    case DW_AT_use_UTF8:		return "DW_AT_use_UTF8";
-    case DW_AT_extension:		return "DW_AT_extension";
-    case DW_AT_ranges:			return "DW_AT_ranges";
-    case DW_AT_trampoline:		return "DW_AT_trampoline";
-    case DW_AT_call_column:		return "DW_AT_call_column";
-    case DW_AT_call_file:		return "DW_AT_call_file";
-    case DW_AT_call_line:		return "DW_AT_call_line";
-    case DW_AT_description:		return "DW_AT_description";
-    case DW_AT_binary_scale:		return "DW_AT_binary_scale";
-    case DW_AT_decimal_scale:		return "DW_AT_decimal_scale";
-    case DW_AT_small:			return "DW_AT_small";
-    case DW_AT_decimal_sign:		return "DW_AT_decimal_sign";
-    case DW_AT_digit_count:		return "DW_AT_digit_count";
-    case DW_AT_picture_string:		return "DW_AT_picture_string";
-    case DW_AT_mutable:			return "DW_AT_mutable";
-    case DW_AT_threads_scaled:		return "DW_AT_threads_scaled";
-    case DW_AT_explicit:		return "DW_AT_explicit";
-    case DW_AT_object_pointer:		return "DW_AT_object_pointer";
-    case DW_AT_endianity:		return "DW_AT_endianity";
-    case DW_AT_elemental:		return "DW_AT_elemental";
-    case DW_AT_pure:			return "DW_AT_pure";
-    case DW_AT_recursive:		return "DW_AT_recursive";
-      /* DWARF 4 values.  */
-    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";
-
-      /* HP and SGI/MIPS extensions.  */
-    case DW_AT_MIPS_loop_begin:			return "DW_AT_MIPS_loop_begin";
-    case DW_AT_MIPS_tail_loop_begin:		return "DW_AT_MIPS_tail_loop_begin";
-    case DW_AT_MIPS_epilog_begin:		return "DW_AT_MIPS_epilog_begin";
-    case DW_AT_MIPS_loop_unroll_factor: 	return "DW_AT_MIPS_loop_unroll_factor";
-    case DW_AT_MIPS_software_pipeline_depth: 	return "DW_AT_MIPS_software_pipeline_depth";
-    case DW_AT_MIPS_linkage_name:		return "DW_AT_MIPS_linkage_name";
-    case DW_AT_MIPS_stride:			return "DW_AT_MIPS_stride";
-    case DW_AT_MIPS_abstract_name:		return "DW_AT_MIPS_abstract_name";
-    case DW_AT_MIPS_clone_origin:		return "DW_AT_MIPS_clone_origin";
-    case DW_AT_MIPS_has_inlines:		return "DW_AT_MIPS_has_inlines";
-
-      /* HP Extensions.  */
-    case DW_AT_HP_block_index:			return "DW_AT_HP_block_index";
-    case DW_AT_HP_actuals_stmt_list:		return "DW_AT_HP_actuals_stmt_list";
-    case DW_AT_HP_proc_per_section:		return "DW_AT_HP_proc_per_section";
-    case DW_AT_HP_raw_data_ptr:			return "DW_AT_HP_raw_data_ptr";
-    case DW_AT_HP_pass_by_reference:		return "DW_AT_HP_pass_by_reference";
-    case DW_AT_HP_opt_level:			return "DW_AT_HP_opt_level";
-    case DW_AT_HP_prof_version_id:		return "DW_AT_HP_prof_version_id";
-    case DW_AT_HP_opt_flags:			return "DW_AT_HP_opt_flags";
-    case DW_AT_HP_cold_region_low_pc:		return "DW_AT_HP_cold_region_low_pc";
-    case DW_AT_HP_cold_region_high_pc:		return "DW_AT_HP_cold_region_high_pc";
-    case DW_AT_HP_all_variables_modifiable:	return "DW_AT_HP_all_variables_modifiable";
-    case DW_AT_HP_linkage_name:			return "DW_AT_HP_linkage_name";
-    case DW_AT_HP_prof_flags:			return "DW_AT_HP_prof_flags";
-
-      /* One value is shared by the MIPS and HP extensions:  */
-    case DW_AT_MIPS_fde:			return "DW_AT_MIPS_fde or DW_AT_HP_unmodifiable";
-
-      /* GNU extensions.  */
-    case DW_AT_sf_names:			return "DW_AT_sf_names";
-    case DW_AT_src_info:			return "DW_AT_src_info";
-    case DW_AT_mac_info:			return "DW_AT_mac_info";
-    case DW_AT_src_coords:			return "DW_AT_src_coords";
-    case DW_AT_body_begin:			return "DW_AT_body_begin";
-    case DW_AT_body_end:			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_use_GNAT_descriptive_type:	return "DW_AT_use_GNAT_descriptive_type";
-    case DW_AT_GNAT_descriptive_type:		return "DW_AT_GNAT_descriptive_type";
-    case DW_AT_GNU_call_site_value:		return "DW_AT_GNU_call_site_value";
-    case DW_AT_GNU_call_site_data_value:	return "DW_AT_GNU_call_site_data_value";
-    case DW_AT_GNU_call_site_target:		return "DW_AT_GNU_call_site_target";
-    case DW_AT_GNU_call_site_target_clobbered:	return "DW_AT_GNU_call_site_target_clobbered";
-    case DW_AT_GNU_tail_call:			return "DW_AT_GNU_tail_call";
-    case DW_AT_GNU_all_tail_call_sites:		return "DW_AT_GNU_all_tail_call_sites";
-    case DW_AT_GNU_all_call_sites:		return "DW_AT_GNU_all_call_sites";
-    case DW_AT_GNU_all_source_call_sites:	return "DW_AT_GNU_all_source_call_sites";
-    case DW_AT_GNU_macros:			return "DW_AT_GNU_macros";
-
-      /* UPC extension.  */
-    case DW_AT_upc_threads_scaled:	return "DW_AT_upc_threads_scaled";
-
-    /* PGI (STMicroelectronics) extensions.  */
-    case DW_AT_PGI_lbase:		return "DW_AT_PGI_lbase";
-    case DW_AT_PGI_soffset:		return "DW_AT_PGI_soffset";
-    case DW_AT_PGI_lstride:		return "DW_AT_PGI_lstride";
+  const char *name;
 
-    default:
-      {
-	static char buffer[100];
+  /* One value is shared by the MIPS and HP extensions:  */
+  if (attribute == DW_AT_MIPS_fde)
+    return "DW_AT_MIPS_fde or DW_AT_HP_unmodifiable";
 
-	snprintf (buffer, sizeof (buffer), _("Unknown AT value: %lx"),
-		  attribute);
-	return buffer;
-      }
+  name = get_DW_AT_name (attribute);
+
+  if (name == NULL)
+    {
+      static char buffer[100];
+
+      snprintf (buffer, sizeof (buffer), _("Unknown AT value: %lx"),
+		attribute);
+      return buffer;
     }
+
+  return name;
 }
 
 static unsigned char *


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]