|
1 /* |
|
2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * |
|
5 * This program is free software: you can redistribute it and/or modify |
|
6 * it under the terms of the GNU Lesser General Public License as published by |
|
7 * the Free Software Foundation, either version 3 of the License, or |
|
8 * (at your option) any later version. |
|
9 * |
|
10 * This program is distributed in the hope that it will be useful, |
|
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
13 * GNU Lesser General Public License for more details. |
|
14 * |
|
15 * You should have received a copy of the GNU Lesser General Public License |
|
16 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
17 */ |
|
18 |
|
19 #include "dwarfdefs.h" |
|
20 #include "dwarf.h" |
|
21 |
|
22 char * GetDwarfTag(Dwarf_Unsigned aTag){ |
|
23 switch (aTag){ |
|
24 case DW_TAG_array_type: return "DW_TAG_array_type"; |
|
25 case DW_TAG_class_type: return "DW_TAG_class_type"; |
|
26 case DW_TAG_entry_point: return "DW_TAG_entry_point"; |
|
27 case DW_TAG_enumeration_type: return "DW_TAG_enumeration_type"; |
|
28 case DW_TAG_formal_parameter: return "DW_TAG_formal_parameter"; |
|
29 case DW_TAG_imported_declaration: return "DW_TAG_imported_declaration"; |
|
30 case DW_TAG_label: return "DW_TAG_label"; |
|
31 case DW_TAG_lexical_block: return "DW_TAG_lexical_block"; |
|
32 case DW_TAG_member: return "DW_TAG_member"; |
|
33 case DW_TAG_pointer_type: return "DW_TAG_pointer_type"; |
|
34 case DW_TAG_reference_type: return "DW_TAG_reference_type"; |
|
35 case DW_TAG_compile_unit: return "DW_TAG_compile_unit"; |
|
36 case DW_TAG_string_type: return "DW_TAG_string_type"; |
|
37 case DW_TAG_structure_type: return "DW_TAG_structure_type"; |
|
38 case DW_TAG_subroutine_type: return "DW_TAG_subroutine_type"; |
|
39 case DW_TAG_typedef: return "DW_TAG_typedef"; |
|
40 case DW_TAG_union_type: return "DW_TAG_union_type"; |
|
41 case DW_TAG_unspecified_parameters: return "DW_TAG_unspecified_parameters"; |
|
42 case DW_TAG_variant: return "DW_TAG_variant"; |
|
43 case DW_TAG_common_block: return "DW_TAG_common_block"; |
|
44 case DW_TAG_common_inclusion: return "DW_TAG_common_inclusion"; |
|
45 case DW_TAG_inheritance: return "DW_TAG_inheritance"; |
|
46 case DW_TAG_inlined_subroutine: return "DW_TAG_inlined_subroutine"; |
|
47 case DW_TAG_module: return "DW_TAG_module"; |
|
48 case DW_TAG_ptr_to_member_type: return "DW_TAG_ptr_to_member_type"; |
|
49 case DW_TAG_set_type: return "DW_TAG_set_type"; |
|
50 case DW_TAG_subrange_type: return "DW_TAG_subrange_type"; |
|
51 case DW_TAG_with_stmt: return "DW_TAG_with_stmt"; |
|
52 case DW_TAG_access_declaration: return "DW_TAG_access_declaration"; |
|
53 case DW_TAG_base_type: return "DW_TAG_base_type"; |
|
54 case DW_TAG_catch_block: return "DW_TAG_catch_block"; |
|
55 case DW_TAG_const_type: return "DW_TAG_const_type"; |
|
56 case DW_TAG_constant: return "DW_TAG_constant"; |
|
57 case DW_TAG_enumerator: return "DW_TAG_enumerator"; |
|
58 case DW_TAG_file_type: return "DW_TAG_file_type"; |
|
59 case DW_TAG_friend: return "DW_TAG_friend"; |
|
60 case DW_TAG_namelist: return "DW_TAG_namelist"; |
|
61 case DW_TAG_namelist_item: return "DW_TAG_namelist_item"; |
|
62 case DW_TAG_packed_type: return "DW_TAG_packed_type"; |
|
63 case DW_TAG_subprogram: return "DW_TAG_subprogram"; |
|
64 case DW_TAG_template_type_parameter: return "DW_TAG_template_type_parameter"; |
|
65 case DW_TAG_template_value_parameter: return "DW_TAG_template_value_parameter"; |
|
66 case DW_TAG_thrown_type: return "DW_TAG_thrown_type"; |
|
67 case DW_TAG_try_block: return "DW_TAG_try_block"; |
|
68 case DW_TAG_variant_part: return "DW_TAG_variant_part"; |
|
69 case DW_TAG_variable: return "DW_TAG_variable"; |
|
70 case DW_TAG_volatile_type: return "DW_TAG_volatile_type"; |
|
71 case DW_TAG_dwarf_procedure: return "DW_TAG_dwarf_procedure"; |
|
72 case DW_TAG_restrict_type: return "DW_TAG_restrict_type"; |
|
73 case DW_TAG_interface_type: return "DW_TAG_interface_type"; |
|
74 case DW_TAG_namespace: return "DW_TAG_namespace"; |
|
75 case DW_TAG_imported_module: return "DW_TAG_imported_module"; |
|
76 case DW_TAG_unspecified_type: return "DW_TAG_unspecified_type"; |
|
77 case DW_TAG_partial_unit: return "DW_TAG_partial_unit"; |
|
78 case DW_TAG_imported_unit: return "DW_TAG_imported_unit"; |
|
79 case DW_TAG_mutable_type: return "DW_TAG_mutable_type"; |
|
80 case DW_TAG_condition: return "DW_TAG_condition"; |
|
81 case DW_TAG_shared_type: return "DW_TAG_shared_type"; |
|
82 default: return "Unrecognised TAG"; |
|
83 } |
|
84 } |
|
85 |
|
86 char * GetDwarfAttr(Dwarf_Half attr){ |
|
87 switch (attr){ |
|
88 case DW_AT_sibling: return "DW_AT_sibling"; |
|
89 case DW_AT_location: return "DW_AT_location"; |
|
90 case DW_AT_name: return "DW_AT_name"; |
|
91 case DW_AT_ordering: return "DW_AT_ordering"; |
|
92 case DW_AT_subscr_data: return "DW_AT_subscr_data"; |
|
93 case DW_AT_byte_size: return "DW_AT_byte_size"; |
|
94 case DW_AT_bit_offset: return "DW_AT_bit_offset"; |
|
95 case DW_AT_bit_size: return "DW_AT_bit_size"; |
|
96 case DW_AT_element_list: return "DW_AT_element_list"; |
|
97 case DW_AT_stmt_list: return "DW_AT_stmt_list"; |
|
98 case DW_AT_low_pc: return "DW_AT_low_pc"; |
|
99 case DW_AT_high_pc: return "DW_AT_high_pc"; |
|
100 case DW_AT_language: return "DW_AT_language"; |
|
101 case DW_AT_member: return "DW_AT_member"; |
|
102 case DW_AT_discr: return "DW_AT_discr"; |
|
103 case DW_AT_discr_value: return "DW_AT_discr_value"; |
|
104 case DW_AT_visibility: return "DW_AT_visibility"; |
|
105 case DW_AT_import: return "DW_AT_import"; |
|
106 case DW_AT_string_length: return "DW_AT_string_length"; |
|
107 case DW_AT_common_reference: return "DW_AT_common_reference"; |
|
108 case DW_AT_comp_dir: return "DW_AT_comp_dir"; |
|
109 case DW_AT_const_value: return "DW_AT_const_value"; |
|
110 case DW_AT_containing_type: return "DW_AT_containing_type"; |
|
111 case DW_AT_default_value: return "DW_AT_default_value"; |
|
112 case DW_AT_inline: return "DW_AT_inline"; |
|
113 case DW_AT_is_optional: return "DW_AT_is_optional"; |
|
114 case DW_AT_lower_bound: return "DW_AT_lower_bound"; |
|
115 case DW_AT_producer: return "DW_AT_producer"; |
|
116 case DW_AT_prototyped: return "DW_AT_prototyped"; |
|
117 case DW_AT_return_addr: return "DW_AT_return_addr"; |
|
118 case DW_AT_start_scope: return "DW_AT_start_scope"; |
|
119 case DW_AT_bit_stride: return "DW_AT_bit_stride"; |
|
120 case DW_AT_upper_bound: return "DW_AT_upper_bound"; |
|
121 case DW_AT_abstract_origin: return "DW_AT_abstract_origin"; |
|
122 case DW_AT_accessibility: return "DW_AT_accessibility"; |
|
123 case DW_AT_address_class: return "DW_AT_address_class"; |
|
124 case DW_AT_artificial: return "DW_AT_artificial"; |
|
125 case DW_AT_base_types: return "DW_AT_base_types"; |
|
126 case DW_AT_calling_convention: return "DW_AT_calling_convention"; |
|
127 case DW_AT_count: return "DW_AT_count"; |
|
128 case DW_AT_data_member_location: return "DW_AT_data_member_location"; |
|
129 case DW_AT_decl_column: return "DW_AT_decl_column"; |
|
130 case DW_AT_decl_file: return "DW_AT_decl_file"; |
|
131 case DW_AT_decl_line: return "DW_AT_decl_line"; |
|
132 case DW_AT_declaration: return "DW_AT_declaration"; |
|
133 case DW_AT_discr_list: return "DW_AT_discr_list"; |
|
134 case DW_AT_encoding: return "DW_AT_encoding"; |
|
135 case DW_AT_external: return "DW_AT_external"; |
|
136 case DW_AT_frame_base: return "DW_AT_frame_base"; |
|
137 case DW_AT_friend: return "DW_AT_friend"; |
|
138 case DW_AT_identifier_case: return "DW_AT_identifier_case"; |
|
139 case DW_AT_macro_info: return "DW_AT_macro_info"; |
|
140 case DW_AT_namelist_item: return "DW_AT_namelist_item"; |
|
141 case DW_AT_priority: return "DW_AT_priority"; |
|
142 case DW_AT_segment: return "DW_AT_segment"; |
|
143 case DW_AT_specification: return "DW_AT_specification"; |
|
144 case DW_AT_static_link: return "DW_AT_static_link"; |
|
145 case DW_AT_type: return "DW_AT_type"; |
|
146 case DW_AT_use_location: return "DW_AT_use_location"; |
|
147 case DW_AT_variable_parameter: return "DW_AT_variable_parameter"; |
|
148 case DW_AT_virtuality: return "DW_AT_virtuality"; |
|
149 case DW_AT_vtable_elem_location: return "DW_AT_vtable_elem_location"; |
|
150 case DW_AT_allocated: return "DW_AT_allocated"; |
|
151 case DW_AT_associated: return "DW_AT_associated"; |
|
152 case DW_AT_data_location: return "DW_AT_data_location"; |
|
153 case DW_AT_byte_stride: return "DW_AT_byte_stride"; |
|
154 case DW_AT_entry_pc: return "DW_AT_entry_pc"; |
|
155 case DW_AT_use_UTF8: return "DW_AT_use_UTF8"; |
|
156 case DW_AT_extension: return "DW_AT_extension"; |
|
157 case DW_AT_ranges: return "DW_AT_ranges"; |
|
158 case DW_AT_trampoline: return "DW_AT_trampoline"; |
|
159 case DW_AT_call_column: return "DW_AT_call_column"; |
|
160 case DW_AT_call_file: return "DW_AT_call_file"; |
|
161 case DW_AT_call_line: return "DW_AT_call_line"; |
|
162 case DW_AT_description: return "DW_AT_description"; |
|
163 case DW_AT_binary_scale: return "DW_AT_binary_scale"; |
|
164 case DW_AT_decimal_scale: return "DW_AT_decimal_scale"; |
|
165 case DW_AT_small: return "DW_AT_small"; |
|
166 case DW_AT_decimal_sign: return "DW_AT_decimal_sign"; |
|
167 case DW_AT_digit_count: return "DW_AT_digit_count"; |
|
168 case DW_AT_picture_string: return "DW_AT_picture_string"; |
|
169 case DW_AT_mutable: return "DW_AT_mutable"; |
|
170 case DW_AT_threads_scaled: return "DW_AT_threads_scaled"; |
|
171 case DW_AT_explicit: return "DW_AT_explicit"; |
|
172 case DW_AT_object_pointer: return "DW_AT_object_pointer"; |
|
173 case DW_AT_endianity: return "DW_AT_endianity"; |
|
174 case DW_AT_elemental: return "DW_AT_elemental"; |
|
175 case DW_AT_pure: return "DW_AT_pure"; |
|
176 case DW_AT_recursive: return "DW_AT_recursive"; |
|
177 |
|
178 default: return "Unrecognised ATTR"; |
|
179 } |
|
180 |
|
181 } |
|
182 |
|
183 char * GetDwarfForm(Dwarf_Half form){ |
|
184 switch (form){ |
|
185 case DW_FORM_addr: return "DW_FORM_addr"; |
|
186 case DW_FORM_block2: return "DW_FORM_block2"; |
|
187 case DW_FORM_block4: return "DW_FORM_block4"; |
|
188 case DW_FORM_data2: return "DW_FORM_data2"; |
|
189 case DW_FORM_data4: return "DW_FORM_data4"; |
|
190 case DW_FORM_data8: return "DW_FORM_data8"; |
|
191 case DW_FORM_string: return "DW_FORM_string"; |
|
192 case DW_FORM_block: return "DW_FORM_block"; |
|
193 case DW_FORM_block1: return "DW_FORM_block1"; |
|
194 case DW_FORM_data1: return "DW_FORM_data1"; |
|
195 case DW_FORM_flag: return "DW_FORM_flag"; |
|
196 case DW_FORM_sdata: return "DW_FORM_sdata"; |
|
197 case DW_FORM_strp: return "DW_FORM_strp"; |
|
198 case DW_FORM_udata: return "DW_FORM_udata"; |
|
199 case DW_FORM_ref_addr: return "DW_FORM_ref_addr"; |
|
200 case DW_FORM_ref1: return "DW_FORM_ref1"; |
|
201 case DW_FORM_ref2: return "DW_FORM_ref2"; |
|
202 case DW_FORM_ref4: return "DW_FORM_ref4"; |
|
203 case DW_FORM_ref8: return "DW_FORM_ref8"; |
|
204 case DW_FORM_ref_udata: return "DW_FORM_ref_udata"; |
|
205 case DW_FORM_indirect: return "DW_FORM_indirect"; |
|
206 default: return "Unrecognised FORM"; |
|
207 } |
|
208 } |