diff options
-rw-r--r-- | gdb/ChangeLog | 14 | ||||
-rw-r--r-- | gdb/dwarf2expr.h | 2 | ||||
-rw-r--r-- | gdb/dwarf2loc.c | 8 | ||||
-rw-r--r-- | gdb/dwarf2read.c | 1020 |
4 files changed, 57 insertions, 987 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 53b4c2c..f344547 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,17 @@ +2012-05-07 Tom Tromey <tromey@redhat.com> + + * dwarf2read.c (dwarf_tag_name): Return const char *. Use + get_DW_TAG_name. + (dwarf_attr_name): Return const char *. Use get_DW_AT_name. + (dwarf_form_name): Return const char *. Use get_DW_FORM_name. + (dwarf_stack_op_name): Remove. + (dwarf_cfi_name): Return const char *. Use get_DW_ATE_name. + (decode_locdesc): Use get_DW_OP_name. + * dwarf2loc.c (unimplemented): Use get_DW_OP_name. + (dwarf2_compile_expr_to_ax): Likewise. + (disassemble_dwarf_expression): Likewise. + * dwarf2expr.h: (dwarf_stack_op_name): Remove. + 2012-05-07 Chung-Lin Tang <cltang@codesourcery.com> * sh-linux-tdep.c: Include trad-frame.h and tramp-frame.h. diff --git a/gdb/dwarf2expr.h b/gdb/dwarf2expr.h index 0c55c10..3699dbb 100644 --- a/gdb/dwarf2expr.h +++ b/gdb/dwarf2expr.h @@ -279,8 +279,6 @@ const gdb_byte *read_uleb128 (const gdb_byte *buf, const gdb_byte *buf_end, const gdb_byte *read_sleb128 (const gdb_byte *buf, const gdb_byte *buf_end, LONGEST * r); -const char *dwarf_stack_op_name (unsigned int); - void dwarf_expr_require_composition (const gdb_byte *, const gdb_byte *, const char *); diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c index caef546..a536bbb 100644 --- a/gdb/dwarf2loc.c +++ b/gdb/dwarf2loc.c @@ -2331,7 +2331,7 @@ dwarf2_loc_desc_needs_frame (const gdb_byte *data, unsigned short size, static void unimplemented (unsigned int op) { - const char *name = dwarf_stack_op_name (op); + const char *name = get_DW_OP_name (op); if (name) error (_("DWARF operator %s cannot be translated to an agent expression"), @@ -2777,10 +2777,10 @@ dwarf2_compile_expr_to_ax (struct agent_expr *expr, struct axs_value *loc, ax_simple (expr, aop_ref64); break; default: - /* Note that dwarf_stack_op_name will never return + /* Note that get_DW_OP_name will never return NULL here. */ error (_("Unsupported size %d in %s"), - size, dwarf_stack_op_name (op)); + size, get_DW_OP_name (op)); } } break; @@ -3299,7 +3299,7 @@ disassemble_dwarf_expression (struct ui_file *stream, LONGEST l; const char *name; - name = dwarf_stack_op_name (op); + name = get_DW_OP_name (op); if (!name) error (_("Unrecognized DWARF opcode 0x%02x at %ld"), diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 412fe5b..8964b00 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -1252,19 +1252,15 @@ static const char *dwarf2_full_name (char *name, static struct die_info *dwarf2_extension (struct die_info *die, struct dwarf2_cu **); -static char *dwarf_tag_name (unsigned int); +static const char *dwarf_tag_name (unsigned int); -static char *dwarf_attr_name (unsigned int); +static const char *dwarf_attr_name (unsigned int); -static char *dwarf_form_name (unsigned int); +static const char *dwarf_form_name (unsigned int); static char *dwarf_bool_name (unsigned int); -static char *dwarf_type_encoding_name (unsigned int); - -#if 0 -static char *dwarf_cfi_name (unsigned int); -#endif +static const char *dwarf_type_encoding_name (unsigned int); static struct die_info *sibling_die (struct die_info *); @@ -14266,862 +14262,51 @@ dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu) /* Convert a DIE tag into its string name. */ -static char * +static const char * dwarf_tag_name (unsigned tag) { - switch (tag) - { - 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_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"; - case DW_TAG_type_unit: - return "DW_TAG_type_unit"; - case DW_TAG_MIPS_loop: - return "DW_TAG_MIPS_loop"; - case DW_TAG_HP_array_descriptor: - return "DW_TAG_HP_array_descriptor"; - 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"; - case DW_TAG_GNU_BINCL: - return "DW_TAG_GNU_BINCL"; - case DW_TAG_GNU_EINCL: - return "DW_TAG_GNU_EINCL"; - 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"; - case DW_TAG_PGI_kanji_type: - return "DW_TAG_PGI_kanji_type"; - case DW_TAG_PGI_interface_block: - return "DW_TAG_PGI_interface_block"; - case DW_TAG_GNU_call_site: - return "DW_TAG_GNU_call_site"; - default: - return "DW_TAG_<unknown>"; - } + const char *name = get_DW_TAG_name (tag); + + if (name == NULL) + return "DW_TAG_<unknown>"; + + return name; } /* Convert a DWARF attribute code into its string name. */ -static char * +static const char * dwarf_attr_name (unsigned attr) { - switch (attr) - { - 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_bit_stride: - return "DW_AT_bit_stride"; - 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 3 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_byte_stride: - return "DW_AT_byte_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_linkage_name: - return "DW_AT_linkage_name"; - /* Tentative Fission values. */ - case DW_AT_GNU_dwo_name: - return "DW_AT_GNU_dwo_name"; - case DW_AT_GNU_dwo_id: - return "DW_AT_GNU_dwo_id"; - case DW_AT_GNU_addr_base: - return "DW_AT_GNU_addr_base"; - case DW_AT_GNU_pubnames: - return "DW_AT_GNU_pubnames"; - case DW_AT_GNU_pubtypes: - return "DW_AT_GNU_pubtypes"; - /* SGI/MIPS extensions. */ + const char *name; + #ifdef MIPS /* collides with DW_AT_HP_block_index */ - case DW_AT_MIPS_fde: - return "DW_AT_MIPS_fde"; -#endif - 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. */ -#ifndef MIPS /* collides with DW_AT_MIPS_fde */ - case DW_AT_HP_block_index: - return "DW_AT_HP_block_index"; + if (attr == DW_AT_MIPS_fde) + return "DW_AT_MIPS_fde"; +#else + if (attr == DW_AT_HP_block_index) + return "DW_AT_HP_block_index"; #endif - case DW_AT_HP_unmodifiable: - return "DW_AT_HP_unmodifiable"; - 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"; - /* 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_odr_signature: - return "DW_AT_GNU_odr_signature"; - /* VMS extensions. */ - case DW_AT_VMS_rtnbeg_pd_address: - return "DW_AT_VMS_rtnbeg_pd_address"; - /* 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"; - default: - return "DW_AT_<unknown>"; - } + + name = get_DW_AT_name (attr); + + if (name == NULL) + return "DW_AT_<unknown>"; + + return name; } /* Convert a DWARF value form code into its string name. */ -static char * +static const char * dwarf_form_name (unsigned form) { - switch (form) - { - 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"; - 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"; - case DW_FORM_GNU_addr_index: - return "DW_FORM_GNU_addr_index"; - case DW_FORM_GNU_str_index: - return "DW_FORM_GNU_str_index"; - default: - return "DW_FORM_<unknown>"; - } -} - -/* Convert a DWARF stack opcode into its string name. */ - -const char * -dwarf_stack_op_name (unsigned op) -{ - switch (op) - { - case DW_OP_addr: - return "DW_OP_addr"; - case DW_OP_deref: - return "DW_OP_deref"; - case DW_OP_const1u: - return "DW_OP_const1u"; - case DW_OP_const1s: - return "DW_OP_const1s"; - case DW_OP_const2u: - return "DW_OP_const2u"; - case DW_OP_const2s: - return "DW_OP_const2s"; - case DW_OP_const4u: - return "DW_OP_const4u"; - case DW_OP_const4s: - return "DW_OP_const4s"; - case DW_OP_const8u: - return "DW_OP_const8u"; - case DW_OP_const8s: - return "DW_OP_const8s"; - case DW_OP_constu: - return "DW_OP_constu"; - case DW_OP_consts: - return "DW_OP_consts"; - case DW_OP_dup: - return "DW_OP_dup"; - case DW_OP_drop: - return "DW_OP_drop"; - case DW_OP_over: - return "DW_OP_over"; - case DW_OP_pick: - return "DW_OP_pick"; - case DW_OP_swap: - return "DW_OP_swap"; - case DW_OP_rot: - return "DW_OP_rot"; - case DW_OP_xderef: - return "DW_OP_xderef"; - case DW_OP_abs: - return "DW_OP_abs"; - case DW_OP_and: - return "DW_OP_and"; - case DW_OP_div: - return "DW_OP_div"; - case DW_OP_minus: - return "DW_OP_minus"; - case DW_OP_mod: - return "DW_OP_mod"; - case DW_OP_mul: - return "DW_OP_mul"; - case DW_OP_neg: - return "DW_OP_neg"; - case DW_OP_not: - return "DW_OP_not"; - case DW_OP_or: - return "DW_OP_or"; - case DW_OP_plus: - return "DW_OP_plus"; - case DW_OP_plus_uconst: - return "DW_OP_plus_uconst"; - case DW_OP_shl: - return "DW_OP_shl"; - case DW_OP_shr: - return "DW_OP_shr"; - case DW_OP_shra: - return "DW_OP_shra"; - case DW_OP_xor: - return "DW_OP_xor"; - case DW_OP_bra: - return "DW_OP_bra"; - case DW_OP_eq: - return "DW_OP_eq"; - case DW_OP_ge: - return "DW_OP_ge"; - case DW_OP_gt: - return "DW_OP_gt"; - case DW_OP_le: - return "DW_OP_le"; - case DW_OP_lt: - return "DW_OP_lt"; - case DW_OP_ne: - return "DW_OP_ne"; - case DW_OP_skip: - return "DW_OP_skip"; - case DW_OP_lit0: - return "DW_OP_lit0"; - case DW_OP_lit1: - return "DW_OP_lit1"; - case DW_OP_lit2: - return "DW_OP_lit2"; - case DW_OP_lit3: - return "DW_OP_lit3"; - case DW_OP_lit4: - return "DW_OP_lit4"; - case DW_OP_lit5: - return "DW_OP_lit5"; - case DW_OP_lit6: - return "DW_OP_lit6"; - case DW_OP_lit7: - return "DW_OP_lit7"; - case DW_OP_lit8: - return "DW_OP_lit8"; - case DW_OP_lit9: - return "DW_OP_lit9"; - case DW_OP_lit10: - return "DW_OP_lit10"; - case DW_OP_lit11: - return "DW_OP_lit11"; - case DW_OP_lit12: - return "DW_OP_lit12"; - case DW_OP_lit13: - return "DW_OP_lit13"; - case DW_OP_lit14: - return "DW_OP_lit14"; - case DW_OP_lit15: - return "DW_OP_lit15"; - case DW_OP_lit16: - return "DW_OP_lit16"; - case DW_OP_lit17: - return "DW_OP_lit17"; - case DW_OP_lit18: - return "DW_OP_lit18"; - case DW_OP_lit19: - return "DW_OP_lit19"; - case DW_OP_lit20: - return "DW_OP_lit20"; - case DW_OP_lit21: - return "DW_OP_lit21"; - case DW_OP_lit22: - return "DW_OP_lit22"; - case DW_OP_lit23: - return "DW_OP_lit23"; - case DW_OP_lit24: - return "DW_OP_lit24"; - case DW_OP_lit25: - return "DW_OP_lit25"; - case DW_OP_lit26: - return "DW_OP_lit26"; - case DW_OP_lit27: - return "DW_OP_lit27"; - case DW_OP_lit28: - return "DW_OP_lit28"; - case DW_OP_lit29: - return "DW_OP_lit29"; - case DW_OP_lit30: - return "DW_OP_lit30"; - case DW_OP_lit31: - return "DW_OP_lit31"; - case DW_OP_reg0: - return "DW_OP_reg0"; - case DW_OP_reg1: - return "DW_OP_reg1"; - case DW_OP_reg2: - return "DW_OP_reg2"; - case DW_OP_reg3: - return "DW_OP_reg3"; - case DW_OP_reg4: - return "DW_OP_reg4"; - case DW_OP_reg5: - return "DW_OP_reg5"; - case DW_OP_reg6: - return "DW_OP_reg6"; - case DW_OP_reg7: - return "DW_OP_reg7"; - case DW_OP_reg8: - return "DW_OP_reg8"; - case DW_OP_reg9: - return "DW_OP_reg9"; - case DW_OP_reg10: - return "DW_OP_reg10"; - case DW_OP_reg11: - return "DW_OP_reg11"; - case DW_OP_reg12: - return "DW_OP_reg12"; - case DW_OP_reg13: - return "DW_OP_reg13"; - case DW_OP_reg14: - return "DW_OP_reg14"; - case DW_OP_reg15: - return "DW_OP_reg15"; - case DW_OP_reg16: - return "DW_OP_reg16"; - case DW_OP_reg17: - return "DW_OP_reg17"; - case DW_OP_reg18: - return "DW_OP_reg18"; - case DW_OP_reg19: - return "DW_OP_reg19"; - case DW_OP_reg20: - return "DW_OP_reg20"; - case DW_OP_reg21: - return "DW_OP_reg21"; - case DW_OP_reg22: - return "DW_OP_reg22"; - case DW_OP_reg23: - return "DW_OP_reg23"; - case DW_OP_reg24: - return "DW_OP_reg24"; - case DW_OP_reg25: - return "DW_OP_reg25"; - case DW_OP_reg26: - return "DW_OP_reg26"; - case DW_OP_reg27: - return "DW_OP_reg27"; - case DW_OP_reg28: - return "DW_OP_reg28"; - case DW_OP_reg29: - return "DW_OP_reg29"; - case DW_OP_reg30: - return "DW_OP_reg30"; - case DW_OP_reg31: - return "DW_OP_reg31"; - case DW_OP_breg0: - return "DW_OP_breg0"; - case DW_OP_breg1: - return "DW_OP_breg1"; - case DW_OP_breg2: - return "DW_OP_breg2"; - case DW_OP_breg3: - return "DW_OP_breg3"; - case DW_OP_breg4: - return "DW_OP_breg4"; - case DW_OP_breg5: - return "DW_OP_breg5"; - case DW_OP_breg6: - return "DW_OP_breg6"; - case DW_OP_breg7: - return "DW_OP_breg7"; - case DW_OP_breg8: - return "DW_OP_breg8"; - case DW_OP_breg9: - return "DW_OP_breg9"; - case DW_OP_breg10: - return "DW_OP_breg10"; - case DW_OP_breg11: - return "DW_OP_breg11"; - case DW_OP_breg12: - return "DW_OP_breg12"; - case DW_OP_breg13: - return "DW_OP_breg13"; - case DW_OP_breg14: - return "DW_OP_breg14"; - case DW_OP_breg15: - return "DW_OP_breg15"; - case DW_OP_breg16: - return "DW_OP_breg16"; - case DW_OP_breg17: - return "DW_OP_breg17"; - case DW_OP_breg18: - return "DW_OP_breg18"; - case DW_OP_breg19: - return "DW_OP_breg19"; - case DW_OP_breg20: - return "DW_OP_breg20"; - case DW_OP_breg21: - return "DW_OP_breg21"; - case DW_OP_breg22: - return "DW_OP_breg22"; - case DW_OP_breg23: - return "DW_OP_breg23"; - case DW_OP_breg24: - return "DW_OP_breg24"; - case DW_OP_breg25: - return "DW_OP_breg25"; - case DW_OP_breg26: - return "DW_OP_breg26"; - case DW_OP_breg27: - return "DW_OP_breg27"; - case DW_OP_breg28: - return "DW_OP_breg28"; - case DW_OP_breg29: - return "DW_OP_breg29"; - case DW_OP_breg30: - return "DW_OP_breg30"; - case DW_OP_breg31: - return "DW_OP_breg31"; - case DW_OP_regx: - return "DW_OP_regx"; - case DW_OP_fbreg: - return "DW_OP_fbreg"; - case DW_OP_bregx: - return "DW_OP_bregx"; - case DW_OP_piece: - return "DW_OP_piece"; - case DW_OP_deref_size: - return "DW_OP_deref_size"; - case DW_OP_xderef_size: - return "DW_OP_xderef_size"; - case DW_OP_nop: - return "DW_OP_nop"; - /* DWARF 3 extensions. */ - case DW_OP_push_object_address: - return "DW_OP_push_object_address"; - case DW_OP_call2: - return "DW_OP_call2"; - case DW_OP_call4: - return "DW_OP_call4"; - case DW_OP_call_ref: - return "DW_OP_call_ref"; - case DW_OP_form_tls_address: - return "DW_OP_form_tls_address"; - case DW_OP_call_frame_cfa: - return "DW_OP_call_frame_cfa"; - case DW_OP_bit_piece: - return "DW_OP_bit_piece"; - /* DWARF 4 extensions. */ - case DW_OP_implicit_value: - return "DW_OP_implicit_value"; - case DW_OP_stack_value: - return "DW_OP_stack_value"; - /* GNU extensions. */ - case DW_OP_GNU_push_tls_address: - return "DW_OP_GNU_push_tls_address"; - case DW_OP_GNU_uninit: - return "DW_OP_GNU_uninit"; - case DW_OP_GNU_encoded_addr: - return "DW_OP_GNU_encoded_addr"; - case DW_OP_GNU_implicit_pointer: - return "DW_OP_GNU_implicit_pointer"; - case DW_OP_GNU_entry_value: - return "DW_OP_GNU_entry_value"; - case DW_OP_GNU_const_type: - return "DW_OP_GNU_const_type"; - case DW_OP_GNU_regval_type: - return "DW_OP_GNU_regval_type"; - case DW_OP_GNU_deref_type: - return "DW_OP_GNU_deref_type"; - case DW_OP_GNU_convert: - return "DW_OP_GNU_convert"; - case DW_OP_GNU_reinterpret: - return "DW_OP_GNU_reinterpret"; - case DW_OP_GNU_parameter_ref: - return "DW_OP_GNU_parameter_ref"; - default: - return NULL; - } + const char *name = get_DW_FORM_name (form); + + if (name == NULL) + return "DW_FORM_<unknown>"; + + return name; } static char * @@ -15135,143 +14320,16 @@ dwarf_bool_name (unsigned mybool) /* Convert a DWARF type code into its string name. */ -static char * +static const char * dwarf_type_encoding_name (unsigned enc) { - switch (enc) - { - case DW_ATE_void: - return "DW_ATE_void"; - case DW_ATE_address: - return "DW_ATE_address"; - case DW_ATE_boolean: - return "DW_ATE_boolean"; - case DW_ATE_complex_float: - return "DW_ATE_complex_float"; - case DW_ATE_float: - return "DW_ATE_float"; - case DW_ATE_signed: - return "DW_ATE_signed"; - case DW_ATE_signed_char: - return "DW_ATE_signed_char"; - case DW_ATE_unsigned: - return "DW_ATE_unsigned"; - case DW_ATE_unsigned_char: - return "DW_ATE_unsigned_char"; - /* DWARF 3. */ - case DW_ATE_imaginary_float: - return "DW_ATE_imaginary_float"; - case DW_ATE_packed_decimal: - return "DW_ATE_packed_decimal"; - case DW_ATE_numeric_string: - return "DW_ATE_numeric_string"; - case DW_ATE_edited: - return "DW_ATE_edited"; - case DW_ATE_signed_fixed: - return "DW_ATE_signed_fixed"; - case DW_ATE_unsigned_fixed: - return "DW_ATE_unsigned_fixed"; - case DW_ATE_decimal_float: - return "DW_ATE_decimal_float"; - /* DWARF 4. */ - case DW_ATE_UTF: - return "DW_ATE_UTF"; - /* HP extensions. */ - case DW_ATE_HP_float80: - return "DW_ATE_HP_float80"; - case DW_ATE_HP_complex_float80: - return "DW_ATE_HP_complex_float80"; - case DW_ATE_HP_float128: - return "DW_ATE_HP_float128"; - case DW_ATE_HP_complex_float128: - return "DW_ATE_HP_complex_float128"; - case DW_ATE_HP_floathpintel: - return "DW_ATE_HP_floathpintel"; - case DW_ATE_HP_imaginary_float80: - return "DW_ATE_HP_imaginary_float80"; - case DW_ATE_HP_imaginary_float128: - return "DW_ATE_HP_imaginary_float128"; - default: - return "DW_ATE_<unknown>"; - } -} + const char *name = get_DW_ATE_name (enc); -/* Convert a DWARF call frame info operation to its string name. */ + if (name == NULL) + return "DW_ATE_<unknown>"; -#if 0 -static char * -dwarf_cfi_name (unsigned cfi_opc) -{ - switch (cfi_opc) - { - case DW_CFA_advance_loc: - return "DW_CFA_advance_loc"; - case DW_CFA_offset: - return "DW_CFA_offset"; - case DW_CFA_restore: - return "DW_CFA_restore"; - case DW_CFA_nop: - return "DW_CFA_nop"; - case DW_CFA_set_loc: - return "DW_CFA_set_loc"; - case DW_CFA_advance_loc1: - return "DW_CFA_advance_loc1"; - case DW_CFA_advance_loc2: - return "DW_CFA_advance_loc2"; - case DW_CFA_advance_loc4: - return "DW_CFA_advance_loc4"; - case DW_CFA_offset_extended: - return "DW_CFA_offset_extended"; - case DW_CFA_restore_extended: - return "DW_CFA_restore_extended"; - case DW_CFA_undefined: - return "DW_CFA_undefined"; - case DW_CFA_same_value: - return "DW_CFA_same_value"; - case DW_CFA_register: - return "DW_CFA_register"; - case DW_CFA_remember_state: - return "DW_CFA_remember_state"; - case DW_CFA_restore_state: - return "DW_CFA_restore_state"; - case DW_CFA_def_cfa: - return "DW_CFA_def_cfa"; - case DW_CFA_def_cfa_register: - return "DW_CFA_def_cfa_register"; - case DW_CFA_def_cfa_offset: - return "DW_CFA_def_cfa_offset"; - /* DWARF 3. */ - case DW_CFA_def_cfa_expression: - return "DW_CFA_def_cfa_expression"; - case DW_CFA_expression: - return "DW_CFA_expression"; - case DW_CFA_offset_extended_sf: - return "DW_CFA_offset_extended_sf"; - case DW_CFA_def_cfa_sf: - return "DW_CFA_def_cfa_sf"; - case DW_CFA_def_cfa_offset_sf: - return "DW_CFA_def_cfa_offset_sf"; - case DW_CFA_val_offset: - return "DW_CFA_val_offset"; - case DW_CFA_val_offset_sf: - return "DW_CFA_val_offset_sf"; - case DW_CFA_val_expression: - return "DW_CFA_val_expression"; - /* SGI/MIPS specific. */ - case DW_CFA_MIPS_advance_loc8: - return "DW_CFA_MIPS_advance_loc8"; - /* GNU extensions. */ - case DW_CFA_GNU_window_save: - return "DW_CFA_GNU_window_save"; - case DW_CFA_GNU_args_size: - return "DW_CFA_GNU_args_size"; - case DW_CFA_GNU_negative_offset_extended: - return "DW_CFA_GNU_negative_offset_extended"; - default: - return "DW_CFA_<unknown>"; - } + return name; } -#endif static void dump_die_shallow (struct ui_file *f, int indent, struct die_info *die) @@ -16103,7 +15161,7 @@ decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu) default: { - const char *name = dwarf_stack_op_name (op); + const char *name = get_DW_OP_name (op); if (name) complaint (&symfile_complaints, _("unsupported stack op: '%s'"), |