]>
Commit | Line | Data |
---|---|---|
223e47cc LB |
1 | //===-- llvm/Support/Dwarf.cpp - Dwarf Framework ----------------*- C++ -*-===// |
2 | // | |
3 | // The LLVM Compiler Infrastructure | |
4 | // | |
5 | // This file is distributed under the University of Illinois Open Source | |
6 | // License. See LICENSE.TXT for details. | |
7 | // | |
8 | //===----------------------------------------------------------------------===// | |
9 | // | |
10 | // This file contains support for generic dwarf information. | |
11 | // | |
12 | //===----------------------------------------------------------------------===// | |
13 | ||
14 | #include "llvm/Support/Dwarf.h" | |
1a4d82fc JJ |
15 | #include "llvm/Support/ErrorHandling.h" |
16 | ||
223e47cc LB |
17 | using namespace llvm; |
18 | using namespace dwarf; | |
19 | ||
223e47cc LB |
20 | const char *llvm::dwarf::TagString(unsigned Tag) { |
21 | switch (Tag) { | |
22 | case DW_TAG_array_type: return "DW_TAG_array_type"; | |
23 | case DW_TAG_class_type: return "DW_TAG_class_type"; | |
24 | case DW_TAG_entry_point: return "DW_TAG_entry_point"; | |
25 | case DW_TAG_enumeration_type: return "DW_TAG_enumeration_type"; | |
26 | case DW_TAG_formal_parameter: return "DW_TAG_formal_parameter"; | |
27 | case DW_TAG_imported_declaration: return "DW_TAG_imported_declaration"; | |
28 | case DW_TAG_label: return "DW_TAG_label"; | |
29 | case DW_TAG_lexical_block: return "DW_TAG_lexical_block"; | |
30 | case DW_TAG_member: return "DW_TAG_member"; | |
31 | case DW_TAG_pointer_type: return "DW_TAG_pointer_type"; | |
32 | case DW_TAG_reference_type: return "DW_TAG_reference_type"; | |
33 | case DW_TAG_compile_unit: return "DW_TAG_compile_unit"; | |
34 | case DW_TAG_string_type: return "DW_TAG_string_type"; | |
35 | case DW_TAG_structure_type: return "DW_TAG_structure_type"; | |
36 | case DW_TAG_subroutine_type: return "DW_TAG_subroutine_type"; | |
37 | case DW_TAG_typedef: return "DW_TAG_typedef"; | |
38 | case DW_TAG_union_type: return "DW_TAG_union_type"; | |
39 | case DW_TAG_unspecified_parameters: return "DW_TAG_unspecified_parameters"; | |
40 | case DW_TAG_variant: return "DW_TAG_variant"; | |
41 | case DW_TAG_common_block: return "DW_TAG_common_block"; | |
42 | case DW_TAG_common_inclusion: return "DW_TAG_common_inclusion"; | |
43 | case DW_TAG_inheritance: return "DW_TAG_inheritance"; | |
44 | case DW_TAG_inlined_subroutine: return "DW_TAG_inlined_subroutine"; | |
45 | case DW_TAG_module: return "DW_TAG_module"; | |
46 | case DW_TAG_ptr_to_member_type: return "DW_TAG_ptr_to_member_type"; | |
47 | case DW_TAG_set_type: return "DW_TAG_set_type"; | |
48 | case DW_TAG_subrange_type: return "DW_TAG_subrange_type"; | |
49 | case DW_TAG_with_stmt: return "DW_TAG_with_stmt"; | |
50 | case DW_TAG_access_declaration: return "DW_TAG_access_declaration"; | |
51 | case DW_TAG_base_type: return "DW_TAG_base_type"; | |
52 | case DW_TAG_catch_block: return "DW_TAG_catch_block"; | |
53 | case DW_TAG_const_type: return "DW_TAG_const_type"; | |
54 | case DW_TAG_constant: return "DW_TAG_constant"; | |
55 | case DW_TAG_enumerator: return "DW_TAG_enumerator"; | |
56 | case DW_TAG_file_type: return "DW_TAG_file_type"; | |
57 | case DW_TAG_friend: return "DW_TAG_friend"; | |
58 | case DW_TAG_namelist: return "DW_TAG_namelist"; | |
59 | case DW_TAG_namelist_item: return "DW_TAG_namelist_item"; | |
60 | case DW_TAG_packed_type: return "DW_TAG_packed_type"; | |
61 | case DW_TAG_subprogram: return "DW_TAG_subprogram"; | |
1a4d82fc JJ |
62 | case DW_TAG_template_type_parameter: return "DW_TAG_template_type_parameter"; |
63 | case DW_TAG_template_value_parameter: return "DW_TAG_template_value_parameter"; | |
223e47cc LB |
64 | case DW_TAG_thrown_type: return "DW_TAG_thrown_type"; |
65 | case DW_TAG_try_block: return "DW_TAG_try_block"; | |
66 | case DW_TAG_variant_part: return "DW_TAG_variant_part"; | |
67 | case DW_TAG_variable: return "DW_TAG_variable"; | |
68 | case DW_TAG_volatile_type: return "DW_TAG_volatile_type"; | |
69 | case DW_TAG_dwarf_procedure: return "DW_TAG_dwarf_procedure"; | |
70 | case DW_TAG_restrict_type: return "DW_TAG_restrict_type"; | |
71 | case DW_TAG_interface_type: return "DW_TAG_interface_type"; | |
72 | case DW_TAG_namespace: return "DW_TAG_namespace"; | |
73 | case DW_TAG_imported_module: return "DW_TAG_imported_module"; | |
74 | case DW_TAG_unspecified_type: return "DW_TAG_unspecified_type"; | |
75 | case DW_TAG_partial_unit: return "DW_TAG_partial_unit"; | |
76 | case DW_TAG_imported_unit: return "DW_TAG_imported_unit"; | |
77 | case DW_TAG_condition: return "DW_TAG_condition"; | |
78 | case DW_TAG_shared_type: return "DW_TAG_shared_type"; | |
79 | case DW_TAG_lo_user: return "DW_TAG_lo_user"; | |
80 | case DW_TAG_hi_user: return "DW_TAG_hi_user"; | |
81 | case DW_TAG_auto_variable: return "DW_TAG_auto_variable"; | |
82 | case DW_TAG_arg_variable: return "DW_TAG_arg_variable"; | |
85aaf69f | 83 | case DW_TAG_expression: return "DW_TAG_expression"; |
223e47cc LB |
84 | case DW_TAG_rvalue_reference_type: return "DW_TAG_rvalue_reference_type"; |
85 | case DW_TAG_template_alias: return "DW_TAG_template_alias"; | |
1a4d82fc JJ |
86 | case DW_TAG_coarray_type: return "DW_TAG_coarray_type"; |
87 | case DW_TAG_generic_subrange: return "DW_TAG_generic_subrange"; | |
88 | case DW_TAG_dynamic_type: return "DW_TAG_dynamic_type"; | |
223e47cc LB |
89 | case DW_TAG_MIPS_loop: return "DW_TAG_MIPS_loop"; |
90 | case DW_TAG_type_unit: return "DW_TAG_type_unit"; | |
91 | case DW_TAG_format_label: return "DW_TAG_format_label"; | |
92 | case DW_TAG_function_template: return "DW_TAG_function_template"; | |
93 | case DW_TAG_class_template: return "DW_TAG_class_template"; | |
94 | case DW_TAG_GNU_template_template_param: | |
95 | return "DW_TAG_GNU_template_template_param"; | |
96 | case DW_TAG_GNU_template_parameter_pack: | |
97 | return "DW_TAG_GNU_template_parameter_pack"; | |
98 | case DW_TAG_GNU_formal_parameter_pack: | |
99 | return "DW_TAG_GNU_formal_parameter_pack"; | |
100 | case DW_TAG_APPLE_property: return "DW_TAG_APPLE_property"; | |
101 | } | |
1a4d82fc | 102 | return nullptr; |
223e47cc LB |
103 | } |
104 | ||
223e47cc LB |
105 | const char *llvm::dwarf::ChildrenString(unsigned Children) { |
106 | switch (Children) { | |
107 | case DW_CHILDREN_no: return "DW_CHILDREN_no"; | |
108 | case DW_CHILDREN_yes: return "DW_CHILDREN_yes"; | |
109 | } | |
1a4d82fc | 110 | return nullptr; |
223e47cc LB |
111 | } |
112 | ||
223e47cc LB |
113 | const char *llvm::dwarf::AttributeString(unsigned Attribute) { |
114 | switch (Attribute) { | |
115 | case DW_AT_sibling: return "DW_AT_sibling"; | |
116 | case DW_AT_location: return "DW_AT_location"; | |
117 | case DW_AT_name: return "DW_AT_name"; | |
118 | case DW_AT_ordering: return "DW_AT_ordering"; | |
119 | case DW_AT_byte_size: return "DW_AT_byte_size"; | |
120 | case DW_AT_bit_offset: return "DW_AT_bit_offset"; | |
121 | case DW_AT_bit_size: return "DW_AT_bit_size"; | |
122 | case DW_AT_stmt_list: return "DW_AT_stmt_list"; | |
123 | case DW_AT_low_pc: return "DW_AT_low_pc"; | |
124 | case DW_AT_high_pc: return "DW_AT_high_pc"; | |
125 | case DW_AT_language: return "DW_AT_language"; | |
126 | case DW_AT_discr: return "DW_AT_discr"; | |
127 | case DW_AT_discr_value: return "DW_AT_discr_value"; | |
128 | case DW_AT_visibility: return "DW_AT_visibility"; | |
129 | case DW_AT_import: return "DW_AT_import"; | |
130 | case DW_AT_string_length: return "DW_AT_string_length"; | |
131 | case DW_AT_common_reference: return "DW_AT_common_reference"; | |
132 | case DW_AT_comp_dir: return "DW_AT_comp_dir"; | |
133 | case DW_AT_const_value: return "DW_AT_const_value"; | |
134 | case DW_AT_containing_type: return "DW_AT_containing_type"; | |
135 | case DW_AT_default_value: return "DW_AT_default_value"; | |
136 | case DW_AT_inline: return "DW_AT_inline"; | |
137 | case DW_AT_is_optional: return "DW_AT_is_optional"; | |
138 | case DW_AT_lower_bound: return "DW_AT_lower_bound"; | |
139 | case DW_AT_producer: return "DW_AT_producer"; | |
140 | case DW_AT_prototyped: return "DW_AT_prototyped"; | |
141 | case DW_AT_return_addr: return "DW_AT_return_addr"; | |
142 | case DW_AT_start_scope: return "DW_AT_start_scope"; | |
143 | case DW_AT_bit_stride: return "DW_AT_bit_stride"; | |
144 | case DW_AT_upper_bound: return "DW_AT_upper_bound"; | |
145 | case DW_AT_abstract_origin: return "DW_AT_abstract_origin"; | |
146 | case DW_AT_accessibility: return "DW_AT_accessibility"; | |
147 | case DW_AT_address_class: return "DW_AT_address_class"; | |
148 | case DW_AT_artificial: return "DW_AT_artificial"; | |
149 | case DW_AT_base_types: return "DW_AT_base_types"; | |
150 | case DW_AT_calling_convention: return "DW_AT_calling_convention"; | |
151 | case DW_AT_count: return "DW_AT_count"; | |
152 | case DW_AT_data_member_location: return "DW_AT_data_member_location"; | |
153 | case DW_AT_decl_column: return "DW_AT_decl_column"; | |
154 | case DW_AT_decl_file: return "DW_AT_decl_file"; | |
155 | case DW_AT_decl_line: return "DW_AT_decl_line"; | |
156 | case DW_AT_declaration: return "DW_AT_declaration"; | |
157 | case DW_AT_discr_list: return "DW_AT_discr_list"; | |
158 | case DW_AT_encoding: return "DW_AT_encoding"; | |
159 | case DW_AT_external: return "DW_AT_external"; | |
160 | case DW_AT_frame_base: return "DW_AT_frame_base"; | |
161 | case DW_AT_friend: return "DW_AT_friend"; | |
162 | case DW_AT_identifier_case: return "DW_AT_identifier_case"; | |
163 | case DW_AT_macro_info: return "DW_AT_macro_info"; | |
164 | case DW_AT_namelist_item: return "DW_AT_namelist_item"; | |
165 | case DW_AT_priority: return "DW_AT_priority"; | |
166 | case DW_AT_segment: return "DW_AT_segment"; | |
167 | case DW_AT_specification: return "DW_AT_specification"; | |
168 | case DW_AT_static_link: return "DW_AT_static_link"; | |
169 | case DW_AT_type: return "DW_AT_type"; | |
170 | case DW_AT_use_location: return "DW_AT_use_location"; | |
171 | case DW_AT_variable_parameter: return "DW_AT_variable_parameter"; | |
172 | case DW_AT_virtuality: return "DW_AT_virtuality"; | |
173 | case DW_AT_vtable_elem_location: return "DW_AT_vtable_elem_location"; | |
174 | case DW_AT_allocated: return "DW_AT_allocated"; | |
175 | case DW_AT_associated: return "DW_AT_associated"; | |
176 | case DW_AT_data_location: return "DW_AT_data_location"; | |
177 | case DW_AT_byte_stride: return "DW_AT_byte_stride"; | |
178 | case DW_AT_entry_pc: return "DW_AT_entry_pc"; | |
179 | case DW_AT_use_UTF8: return "DW_AT_use_UTF8"; | |
180 | case DW_AT_extension: return "DW_AT_extension"; | |
181 | case DW_AT_ranges: return "DW_AT_ranges"; | |
182 | case DW_AT_trampoline: return "DW_AT_trampoline"; | |
183 | case DW_AT_call_column: return "DW_AT_call_column"; | |
184 | case DW_AT_call_file: return "DW_AT_call_file"; | |
185 | case DW_AT_call_line: return "DW_AT_call_line"; | |
186 | case DW_AT_description: return "DW_AT_description"; | |
187 | case DW_AT_binary_scale: return "DW_AT_binary_scale"; | |
188 | case DW_AT_decimal_scale: return "DW_AT_decimal_scale"; | |
189 | case DW_AT_small: return "DW_AT_small"; | |
190 | case DW_AT_decimal_sign: return "DW_AT_decimal_sign"; | |
191 | case DW_AT_digit_count: return "DW_AT_digit_count"; | |
192 | case DW_AT_picture_string: return "DW_AT_picture_string"; | |
193 | case DW_AT_mutable: return "DW_AT_mutable"; | |
194 | case DW_AT_threads_scaled: return "DW_AT_threads_scaled"; | |
195 | case DW_AT_explicit: return "DW_AT_explicit"; | |
196 | case DW_AT_object_pointer: return "DW_AT_object_pointer"; | |
197 | case DW_AT_endianity: return "DW_AT_endianity"; | |
198 | case DW_AT_elemental: return "DW_AT_elemental"; | |
199 | case DW_AT_pure: return "DW_AT_pure"; | |
200 | case DW_AT_recursive: return "DW_AT_recursive"; | |
201 | case DW_AT_signature: return "DW_AT_signature"; | |
202 | case DW_AT_main_subprogram: return "DW_AT_main_subprogram"; | |
203 | case DW_AT_data_bit_offset: return "DW_AT_data_bit_offset"; | |
204 | case DW_AT_const_expr: return "DW_AT_const_expr"; | |
205 | case DW_AT_enum_class: return "DW_AT_enum_class"; | |
206 | case DW_AT_linkage_name: return "DW_AT_linkage_name"; | |
1a4d82fc JJ |
207 | case DW_AT_string_length_bit_size: return "DW_AT_string_length_bit_size"; |
208 | case DW_AT_string_length_byte_size: return "DW_AT_string_length_byte_size"; | |
209 | case DW_AT_rank: return "DW_AT_rank"; | |
210 | case DW_AT_str_offsets_base: return "DW_AT_str_offsets_base"; | |
211 | case DW_AT_addr_base: return "DW_AT_addr_base"; | |
212 | case DW_AT_ranges_base: return "DW_AT_ranges_base"; | |
213 | case DW_AT_dwo_id: return "DW_AT_dwo_id"; | |
214 | case DW_AT_dwo_name: return "DW_AT_dwo_name"; | |
215 | case DW_AT_reference: return "DW_AT_reference"; | |
216 | case DW_AT_rvalue_reference: return "DW_AT_rvalue_reference"; | |
223e47cc LB |
217 | case DW_AT_MIPS_loop_begin: return "DW_AT_MIPS_loop_begin"; |
218 | case DW_AT_MIPS_tail_loop_begin: return "DW_AT_MIPS_tail_loop_begin"; | |
219 | case DW_AT_MIPS_epilog_begin: return "DW_AT_MIPS_epilog_begin"; | |
220 | case DW_AT_MIPS_loop_unroll_factor: return "DW_AT_MIPS_loop_unroll_factor"; | |
221 | case DW_AT_MIPS_software_pipeline_depth: | |
222 | return "DW_AT_MIPS_software_pipeline_depth"; | |
223 | case DW_AT_MIPS_linkage_name: return "DW_AT_MIPS_linkage_name"; | |
224 | case DW_AT_MIPS_stride: return "DW_AT_MIPS_stride"; | |
225 | case DW_AT_MIPS_abstract_name: return "DW_AT_MIPS_abstract_name"; | |
226 | case DW_AT_MIPS_clone_origin: return "DW_AT_MIPS_clone_origin"; | |
227 | case DW_AT_MIPS_has_inlines: return "DW_AT_MIPS_has_inlines"; | |
228 | case DW_AT_MIPS_stride_byte: return "DW_AT_MIPS_stride_byte"; | |
229 | case DW_AT_MIPS_stride_elem: return "DW_AT_MIPS_stride_elem"; | |
230 | case DW_AT_MIPS_ptr_dopetype: return "DW_AT_MIPS_ptr_dopetype"; | |
231 | case DW_AT_MIPS_allocatable_dopetype: | |
232 | return "DW_AT_MIPS_allocatable_dopetype"; | |
233 | case DW_AT_MIPS_assumed_shape_dopetype: | |
234 | return "DW_AT_MIPS_assumed_shape_dopetype"; | |
235 | case DW_AT_sf_names: return "DW_AT_sf_names"; | |
236 | case DW_AT_src_info: return "DW_AT_src_info"; | |
237 | case DW_AT_mac_info: return "DW_AT_mac_info"; | |
238 | case DW_AT_src_coords: return "DW_AT_src_coords"; | |
239 | case DW_AT_body_begin: return "DW_AT_body_begin"; | |
240 | case DW_AT_body_end: return "DW_AT_body_end"; | |
241 | case DW_AT_GNU_vector: return "DW_AT_GNU_vector"; | |
242 | case DW_AT_GNU_template_name: return "DW_AT_GNU_template_name"; | |
1a4d82fc | 243 | case DW_AT_GNU_odr_signature: return "DW_AT_GNU_odr_signature"; |
223e47cc LB |
244 | case DW_AT_MIPS_assumed_size: return "DW_AT_MIPS_assumed_size"; |
245 | case DW_AT_lo_user: return "DW_AT_lo_user"; | |
246 | case DW_AT_hi_user: return "DW_AT_hi_user"; | |
247 | case DW_AT_APPLE_optimized: return "DW_AT_APPLE_optimized"; | |
248 | case DW_AT_APPLE_flags: return "DW_AT_APPLE_flags"; | |
249 | case DW_AT_APPLE_isa: return "DW_AT_APPLE_isa"; | |
250 | case DW_AT_APPLE_block: return "DW_AT_APPLE_block"; | |
251 | case DW_AT_APPLE_major_runtime_vers: return "DW_AT_APPLE_major_runtime_vers"; | |
252 | case DW_AT_APPLE_runtime_class: return "DW_AT_APPLE_runtime_class"; | |
253 | case DW_AT_APPLE_omit_frame_ptr: return "DW_AT_APPLE_omit_frame_ptr"; | |
254 | case DW_AT_APPLE_property_name: return "DW_AT_APPLE_property_name"; | |
255 | case DW_AT_APPLE_property_getter: return "DW_AT_APPLE_property_getter"; | |
256 | case DW_AT_APPLE_property_setter: return "DW_AT_APPLE_property_setter"; | |
257 | case DW_AT_APPLE_property_attribute: return "DW_AT_APPLE_property_attribute"; | |
258 | case DW_AT_APPLE_property: return "DW_AT_APPLE_property"; | |
259 | case DW_AT_APPLE_objc_complete_type: return "DW_AT_APPLE_objc_complete_type"; | |
970d7e83 LB |
260 | |
261 | // DWARF5 Fission Extension Attribute | |
262 | case DW_AT_GNU_dwo_name: return "DW_AT_GNU_dwo_name"; | |
263 | case DW_AT_GNU_dwo_id: return "DW_AT_GNU_dwo_id"; | |
264 | case DW_AT_GNU_ranges_base: return "DW_AT_GNU_ranges_base"; | |
265 | case DW_AT_GNU_addr_base: return "DW_AT_GNU_addr_base"; | |
266 | case DW_AT_GNU_pubnames: return "DW_AT_GNU_pubnames"; | |
267 | case DW_AT_GNU_pubtypes: return "DW_AT_GNU_pubtypes"; | |
223e47cc | 268 | } |
1a4d82fc | 269 | return nullptr; |
223e47cc LB |
270 | } |
271 | ||
223e47cc LB |
272 | const char *llvm::dwarf::FormEncodingString(unsigned Encoding) { |
273 | switch (Encoding) { | |
274 | case DW_FORM_addr: return "DW_FORM_addr"; | |
275 | case DW_FORM_block2: return "DW_FORM_block2"; | |
276 | case DW_FORM_block4: return "DW_FORM_block4"; | |
277 | case DW_FORM_data2: return "DW_FORM_data2"; | |
278 | case DW_FORM_data4: return "DW_FORM_data4"; | |
279 | case DW_FORM_data8: return "DW_FORM_data8"; | |
280 | case DW_FORM_string: return "DW_FORM_string"; | |
281 | case DW_FORM_block: return "DW_FORM_block"; | |
282 | case DW_FORM_block1: return "DW_FORM_block1"; | |
283 | case DW_FORM_data1: return "DW_FORM_data1"; | |
284 | case DW_FORM_flag: return "DW_FORM_flag"; | |
285 | case DW_FORM_sdata: return "DW_FORM_sdata"; | |
286 | case DW_FORM_strp: return "DW_FORM_strp"; | |
287 | case DW_FORM_udata: return "DW_FORM_udata"; | |
288 | case DW_FORM_ref_addr: return "DW_FORM_ref_addr"; | |
289 | case DW_FORM_ref1: return "DW_FORM_ref1"; | |
290 | case DW_FORM_ref2: return "DW_FORM_ref2"; | |
291 | case DW_FORM_ref4: return "DW_FORM_ref4"; | |
292 | case DW_FORM_ref8: return "DW_FORM_ref8"; | |
293 | case DW_FORM_ref_udata: return "DW_FORM_ref_udata"; | |
294 | case DW_FORM_indirect: return "DW_FORM_indirect"; | |
295 | case DW_FORM_sec_offset: return "DW_FORM_sec_offset"; | |
296 | case DW_FORM_exprloc: return "DW_FORM_exprloc"; | |
297 | case DW_FORM_flag_present: return "DW_FORM_flag_present"; | |
298 | case DW_FORM_ref_sig8: return "DW_FORM_ref_sig8"; | |
970d7e83 LB |
299 | |
300 | // DWARF5 Fission Extension Forms | |
301 | case DW_FORM_GNU_addr_index: return "DW_FORM_GNU_addr_index"; | |
302 | case DW_FORM_GNU_str_index: return "DW_FORM_GNU_str_index"; | |
223e47cc | 303 | } |
1a4d82fc | 304 | return nullptr; |
223e47cc LB |
305 | } |
306 | ||
223e47cc LB |
307 | const char *llvm::dwarf::OperationEncodingString(unsigned Encoding) { |
308 | switch (Encoding) { | |
309 | case DW_OP_addr: return "DW_OP_addr"; | |
310 | case DW_OP_deref: return "DW_OP_deref"; | |
311 | case DW_OP_const1u: return "DW_OP_const1u"; | |
312 | case DW_OP_const1s: return "DW_OP_const1s"; | |
313 | case DW_OP_const2u: return "DW_OP_const2u"; | |
314 | case DW_OP_const2s: return "DW_OP_const2s"; | |
315 | case DW_OP_const4u: return "DW_OP_const4u"; | |
316 | case DW_OP_const4s: return "DW_OP_const4s"; | |
317 | case DW_OP_const8u: return "DW_OP_const8u"; | |
318 | case DW_OP_const8s: return "DW_OP_const8s"; | |
319 | case DW_OP_constu: return "DW_OP_constu"; | |
320 | case DW_OP_consts: return "DW_OP_consts"; | |
321 | case DW_OP_dup: return "DW_OP_dup"; | |
322 | case DW_OP_drop: return "DW_OP_drop"; | |
323 | case DW_OP_over: return "DW_OP_over"; | |
324 | case DW_OP_pick: return "DW_OP_pick"; | |
325 | case DW_OP_swap: return "DW_OP_swap"; | |
326 | case DW_OP_rot: return "DW_OP_rot"; | |
327 | case DW_OP_xderef: return "DW_OP_xderef"; | |
328 | case DW_OP_abs: return "DW_OP_abs"; | |
329 | case DW_OP_and: return "DW_OP_and"; | |
330 | case DW_OP_div: return "DW_OP_div"; | |
331 | case DW_OP_minus: return "DW_OP_minus"; | |
332 | case DW_OP_mod: return "DW_OP_mod"; | |
333 | case DW_OP_mul: return "DW_OP_mul"; | |
334 | case DW_OP_neg: return "DW_OP_neg"; | |
335 | case DW_OP_not: return "DW_OP_not"; | |
336 | case DW_OP_or: return "DW_OP_or"; | |
337 | case DW_OP_plus: return "DW_OP_plus"; | |
338 | case DW_OP_plus_uconst: return "DW_OP_plus_uconst"; | |
339 | case DW_OP_shl: return "DW_OP_shl"; | |
340 | case DW_OP_shr: return "DW_OP_shr"; | |
341 | case DW_OP_shra: return "DW_OP_shra"; | |
342 | case DW_OP_xor: return "DW_OP_xor"; | |
343 | case DW_OP_skip: return "DW_OP_skip"; | |
344 | case DW_OP_bra: return "DW_OP_bra"; | |
345 | case DW_OP_eq: return "DW_OP_eq"; | |
346 | case DW_OP_ge: return "DW_OP_ge"; | |
347 | case DW_OP_gt: return "DW_OP_gt"; | |
348 | case DW_OP_le: return "DW_OP_le"; | |
349 | case DW_OP_lt: return "DW_OP_lt"; | |
350 | case DW_OP_ne: return "DW_OP_ne"; | |
351 | case DW_OP_lit0: return "DW_OP_lit0"; | |
352 | case DW_OP_lit1: return "DW_OP_lit1"; | |
353 | case DW_OP_lit2: return "DW_OP_lit2"; | |
354 | case DW_OP_lit3: return "DW_OP_lit3"; | |
355 | case DW_OP_lit4: return "DW_OP_lit4"; | |
356 | case DW_OP_lit5: return "DW_OP_lit5"; | |
357 | case DW_OP_lit6: return "DW_OP_lit6"; | |
358 | case DW_OP_lit7: return "DW_OP_lit7"; | |
359 | case DW_OP_lit8: return "DW_OP_lit8"; | |
360 | case DW_OP_lit9: return "DW_OP_lit9"; | |
361 | case DW_OP_lit10: return "DW_OP_lit10"; | |
362 | case DW_OP_lit11: return "DW_OP_lit11"; | |
363 | case DW_OP_lit12: return "DW_OP_lit12"; | |
364 | case DW_OP_lit13: return "DW_OP_lit13"; | |
365 | case DW_OP_lit14: return "DW_OP_lit14"; | |
366 | case DW_OP_lit15: return "DW_OP_lit15"; | |
367 | case DW_OP_lit16: return "DW_OP_lit16"; | |
368 | case DW_OP_lit17: return "DW_OP_lit17"; | |
369 | case DW_OP_lit18: return "DW_OP_lit18"; | |
370 | case DW_OP_lit19: return "DW_OP_lit19"; | |
371 | case DW_OP_lit20: return "DW_OP_lit20"; | |
372 | case DW_OP_lit21: return "DW_OP_lit21"; | |
373 | case DW_OP_lit22: return "DW_OP_lit22"; | |
374 | case DW_OP_lit23: return "DW_OP_lit23"; | |
375 | case DW_OP_lit24: return "DW_OP_lit24"; | |
376 | case DW_OP_lit25: return "DW_OP_lit25"; | |
377 | case DW_OP_lit26: return "DW_OP_lit26"; | |
378 | case DW_OP_lit27: return "DW_OP_lit27"; | |
379 | case DW_OP_lit28: return "DW_OP_lit28"; | |
380 | case DW_OP_lit29: return "DW_OP_lit29"; | |
381 | case DW_OP_lit30: return "DW_OP_lit30"; | |
382 | case DW_OP_lit31: return "DW_OP_lit31"; | |
383 | case DW_OP_reg0: return "DW_OP_reg0"; | |
384 | case DW_OP_reg1: return "DW_OP_reg1"; | |
385 | case DW_OP_reg2: return "DW_OP_reg2"; | |
386 | case DW_OP_reg3: return "DW_OP_reg3"; | |
387 | case DW_OP_reg4: return "DW_OP_reg4"; | |
388 | case DW_OP_reg5: return "DW_OP_reg5"; | |
389 | case DW_OP_reg6: return "DW_OP_reg6"; | |
390 | case DW_OP_reg7: return "DW_OP_reg7"; | |
391 | case DW_OP_reg8: return "DW_OP_reg8"; | |
392 | case DW_OP_reg9: return "DW_OP_reg9"; | |
393 | case DW_OP_reg10: return "DW_OP_reg10"; | |
394 | case DW_OP_reg11: return "DW_OP_reg11"; | |
395 | case DW_OP_reg12: return "DW_OP_reg12"; | |
396 | case DW_OP_reg13: return "DW_OP_reg13"; | |
397 | case DW_OP_reg14: return "DW_OP_reg14"; | |
398 | case DW_OP_reg15: return "DW_OP_reg15"; | |
399 | case DW_OP_reg16: return "DW_OP_reg16"; | |
400 | case DW_OP_reg17: return "DW_OP_reg17"; | |
401 | case DW_OP_reg18: return "DW_OP_reg18"; | |
402 | case DW_OP_reg19: return "DW_OP_reg19"; | |
403 | case DW_OP_reg20: return "DW_OP_reg20"; | |
404 | case DW_OP_reg21: return "DW_OP_reg21"; | |
405 | case DW_OP_reg22: return "DW_OP_reg22"; | |
406 | case DW_OP_reg23: return "DW_OP_reg23"; | |
407 | case DW_OP_reg24: return "DW_OP_reg24"; | |
408 | case DW_OP_reg25: return "DW_OP_reg25"; | |
409 | case DW_OP_reg26: return "DW_OP_reg26"; | |
410 | case DW_OP_reg27: return "DW_OP_reg27"; | |
411 | case DW_OP_reg28: return "DW_OP_reg28"; | |
412 | case DW_OP_reg29: return "DW_OP_reg29"; | |
413 | case DW_OP_reg30: return "DW_OP_reg30"; | |
414 | case DW_OP_reg31: return "DW_OP_reg31"; | |
415 | case DW_OP_breg0: return "DW_OP_breg0"; | |
416 | case DW_OP_breg1: return "DW_OP_breg1"; | |
417 | case DW_OP_breg2: return "DW_OP_breg2"; | |
418 | case DW_OP_breg3: return "DW_OP_breg3"; | |
419 | case DW_OP_breg4: return "DW_OP_breg4"; | |
420 | case DW_OP_breg5: return "DW_OP_breg5"; | |
421 | case DW_OP_breg6: return "DW_OP_breg6"; | |
422 | case DW_OP_breg7: return "DW_OP_breg7"; | |
423 | case DW_OP_breg8: return "DW_OP_breg8"; | |
424 | case DW_OP_breg9: return "DW_OP_breg9"; | |
425 | case DW_OP_breg10: return "DW_OP_breg10"; | |
426 | case DW_OP_breg11: return "DW_OP_breg11"; | |
427 | case DW_OP_breg12: return "DW_OP_breg12"; | |
428 | case DW_OP_breg13: return "DW_OP_breg13"; | |
429 | case DW_OP_breg14: return "DW_OP_breg14"; | |
430 | case DW_OP_breg15: return "DW_OP_breg15"; | |
431 | case DW_OP_breg16: return "DW_OP_breg16"; | |
432 | case DW_OP_breg17: return "DW_OP_breg17"; | |
433 | case DW_OP_breg18: return "DW_OP_breg18"; | |
434 | case DW_OP_breg19: return "DW_OP_breg19"; | |
435 | case DW_OP_breg20: return "DW_OP_breg20"; | |
436 | case DW_OP_breg21: return "DW_OP_breg21"; | |
437 | case DW_OP_breg22: return "DW_OP_breg22"; | |
438 | case DW_OP_breg23: return "DW_OP_breg23"; | |
439 | case DW_OP_breg24: return "DW_OP_breg24"; | |
440 | case DW_OP_breg25: return "DW_OP_breg25"; | |
441 | case DW_OP_breg26: return "DW_OP_breg26"; | |
442 | case DW_OP_breg27: return "DW_OP_breg27"; | |
443 | case DW_OP_breg28: return "DW_OP_breg28"; | |
444 | case DW_OP_breg29: return "DW_OP_breg29"; | |
445 | case DW_OP_breg30: return "DW_OP_breg30"; | |
446 | case DW_OP_breg31: return "DW_OP_breg31"; | |
447 | case DW_OP_regx: return "DW_OP_regx"; | |
448 | case DW_OP_fbreg: return "DW_OP_fbreg"; | |
449 | case DW_OP_bregx: return "DW_OP_bregx"; | |
450 | case DW_OP_piece: return "DW_OP_piece"; | |
451 | case DW_OP_deref_size: return "DW_OP_deref_size"; | |
452 | case DW_OP_xderef_size: return "DW_OP_xderef_size"; | |
453 | case DW_OP_nop: return "DW_OP_nop"; | |
454 | case DW_OP_push_object_address: return "DW_OP_push_object_address"; | |
455 | case DW_OP_call2: return "DW_OP_call2"; | |
456 | case DW_OP_call4: return "DW_OP_call4"; | |
457 | case DW_OP_call_ref: return "DW_OP_call_ref"; | |
458 | case DW_OP_form_tls_address: return "DW_OP_form_tls_address"; | |
459 | case DW_OP_call_frame_cfa: return "DW_OP_call_frame_cfa"; | |
460 | case DW_OP_bit_piece: return "DW_OP_bit_piece"; | |
461 | case DW_OP_implicit_value: return "DW_OP_implicit_value"; | |
462 | case DW_OP_stack_value: return "DW_OP_stack_value"; | |
970d7e83 | 463 | |
1a4d82fc JJ |
464 | // GNU thread-local storage |
465 | case DW_OP_GNU_push_tls_address: return "DW_OP_GNU_push_tls_address"; | |
466 | ||
467 | // DWARF5 Fission Proposal Op Extensions | |
970d7e83 LB |
468 | case DW_OP_GNU_addr_index: return "DW_OP_GNU_addr_index"; |
469 | case DW_OP_GNU_const_index: return "DW_OP_GNU_const_index"; | |
223e47cc | 470 | } |
1a4d82fc | 471 | return nullptr; |
223e47cc LB |
472 | } |
473 | ||
223e47cc LB |
474 | const char *llvm::dwarf::AttributeEncodingString(unsigned Encoding) { |
475 | switch (Encoding) { | |
476 | case DW_ATE_address: return "DW_ATE_address"; | |
477 | case DW_ATE_boolean: return "DW_ATE_boolean"; | |
478 | case DW_ATE_complex_float: return "DW_ATE_complex_float"; | |
479 | case DW_ATE_float: return "DW_ATE_float"; | |
480 | case DW_ATE_signed: return "DW_ATE_signed"; | |
481 | case DW_ATE_signed_char: return "DW_ATE_signed_char"; | |
482 | case DW_ATE_unsigned: return "DW_ATE_unsigned"; | |
483 | case DW_ATE_unsigned_char: return "DW_ATE_unsigned_char"; | |
484 | case DW_ATE_imaginary_float: return "DW_ATE_imaginary_float"; | |
485 | case DW_ATE_UTF: return "DW_ATE_UTF"; | |
486 | case DW_ATE_packed_decimal: return "DW_ATE_packed_decimal"; | |
487 | case DW_ATE_numeric_string: return "DW_ATE_numeric_string"; | |
488 | case DW_ATE_edited: return "DW_ATE_edited"; | |
489 | case DW_ATE_signed_fixed: return "DW_ATE_signed_fixed"; | |
490 | case DW_ATE_unsigned_fixed: return "DW_ATE_unsigned_fixed"; | |
491 | case DW_ATE_decimal_float: return "DW_ATE_decimal_float"; | |
492 | case DW_ATE_lo_user: return "DW_ATE_lo_user"; | |
493 | case DW_ATE_hi_user: return "DW_ATE_hi_user"; | |
494 | } | |
1a4d82fc | 495 | return nullptr; |
223e47cc LB |
496 | } |
497 | ||
223e47cc LB |
498 | const char *llvm::dwarf::DecimalSignString(unsigned Sign) { |
499 | switch (Sign) { | |
500 | case DW_DS_unsigned: return "DW_DS_unsigned"; | |
501 | case DW_DS_leading_overpunch: return "DW_DS_leading_overpunch"; | |
502 | case DW_DS_trailing_overpunch: return "DW_DS_trailing_overpunch"; | |
503 | case DW_DS_leading_separate: return "DW_DS_leading_separate"; | |
504 | case DW_DS_trailing_separate: return "DW_DS_trailing_separate"; | |
505 | } | |
1a4d82fc | 506 | return nullptr; |
223e47cc LB |
507 | } |
508 | ||
223e47cc LB |
509 | const char *llvm::dwarf::EndianityString(unsigned Endian) { |
510 | switch (Endian) { | |
511 | case DW_END_default: return "DW_END_default"; | |
512 | case DW_END_big: return "DW_END_big"; | |
513 | case DW_END_little: return "DW_END_little"; | |
514 | case DW_END_lo_user: return "DW_END_lo_user"; | |
515 | case DW_END_hi_user: return "DW_END_hi_user"; | |
516 | } | |
1a4d82fc | 517 | return nullptr; |
223e47cc LB |
518 | } |
519 | ||
223e47cc LB |
520 | const char *llvm::dwarf::AccessibilityString(unsigned Access) { |
521 | switch (Access) { | |
522 | // Accessibility codes | |
523 | case DW_ACCESS_public: return "DW_ACCESS_public"; | |
524 | case DW_ACCESS_protected: return "DW_ACCESS_protected"; | |
525 | case DW_ACCESS_private: return "DW_ACCESS_private"; | |
526 | } | |
1a4d82fc | 527 | return nullptr; |
223e47cc LB |
528 | } |
529 | ||
223e47cc LB |
530 | const char *llvm::dwarf::VisibilityString(unsigned Visibility) { |
531 | switch (Visibility) { | |
532 | case DW_VIS_local: return "DW_VIS_local"; | |
533 | case DW_VIS_exported: return "DW_VIS_exported"; | |
534 | case DW_VIS_qualified: return "DW_VIS_qualified"; | |
535 | } | |
1a4d82fc | 536 | return nullptr; |
223e47cc LB |
537 | } |
538 | ||
223e47cc LB |
539 | const char *llvm::dwarf::VirtualityString(unsigned Virtuality) { |
540 | switch (Virtuality) { | |
541 | case DW_VIRTUALITY_none: return "DW_VIRTUALITY_none"; | |
542 | case DW_VIRTUALITY_virtual: return "DW_VIRTUALITY_virtual"; | |
543 | case DW_VIRTUALITY_pure_virtual: return "DW_VIRTUALITY_pure_virtual"; | |
544 | } | |
1a4d82fc | 545 | return nullptr; |
223e47cc LB |
546 | } |
547 | ||
223e47cc LB |
548 | const char *llvm::dwarf::LanguageString(unsigned Language) { |
549 | switch (Language) { | |
550 | case DW_LANG_C89: return "DW_LANG_C89"; | |
551 | case DW_LANG_C: return "DW_LANG_C"; | |
552 | case DW_LANG_Ada83: return "DW_LANG_Ada83"; | |
553 | case DW_LANG_C_plus_plus: return "DW_LANG_C_plus_plus"; | |
554 | case DW_LANG_Cobol74: return "DW_LANG_Cobol74"; | |
555 | case DW_LANG_Cobol85: return "DW_LANG_Cobol85"; | |
556 | case DW_LANG_Fortran77: return "DW_LANG_Fortran77"; | |
557 | case DW_LANG_Fortran90: return "DW_LANG_Fortran90"; | |
558 | case DW_LANG_Pascal83: return "DW_LANG_Pascal83"; | |
559 | case DW_LANG_Modula2: return "DW_LANG_Modula2"; | |
560 | case DW_LANG_Java: return "DW_LANG_Java"; | |
561 | case DW_LANG_C99: return "DW_LANG_C99"; | |
562 | case DW_LANG_Ada95: return "DW_LANG_Ada95"; | |
563 | case DW_LANG_Fortran95: return "DW_LANG_Fortran95"; | |
564 | case DW_LANG_PLI: return "DW_LANG_PLI"; | |
565 | case DW_LANG_ObjC: return "DW_LANG_ObjC"; | |
566 | case DW_LANG_ObjC_plus_plus: return "DW_LANG_ObjC_plus_plus"; | |
567 | case DW_LANG_UPC: return "DW_LANG_UPC"; | |
568 | case DW_LANG_D: return "DW_LANG_D"; | |
1a4d82fc JJ |
569 | case DW_LANG_Python: return "DW_LANG_Python"; |
570 | case DW_LANG_OpenCL: return "DW_LANG_OpenCL"; | |
571 | case DW_LANG_Go: return "DW_LANG_Go"; | |
572 | case DW_LANG_Modula3: return "DW_LANG_Modula3"; | |
573 | case DW_LANG_Haskell: return "DW_LANG_Haskell"; | |
574 | case DW_LANG_C_plus_plus_03: return "DW_LANG_C_plus_plus_03"; | |
575 | case DW_LANG_C_plus_plus_11: return "DW_LANG_C_plus_plus_11"; | |
576 | case DW_LANG_OCaml: return "DW_LANG_OCaml"; | |
223e47cc | 577 | case DW_LANG_lo_user: return "DW_LANG_lo_user"; |
1a4d82fc | 578 | case DW_LANG_Mips_Assembler: return "DW_LANG_Mips_Assembler"; |
223e47cc LB |
579 | case DW_LANG_hi_user: return "DW_LANG_hi_user"; |
580 | } | |
1a4d82fc | 581 | return nullptr; |
223e47cc LB |
582 | } |
583 | ||
223e47cc LB |
584 | const char *llvm::dwarf::CaseString(unsigned Case) { |
585 | switch (Case) { | |
586 | case DW_ID_case_sensitive: return "DW_ID_case_sensitive"; | |
587 | case DW_ID_up_case: return "DW_ID_up_case"; | |
588 | case DW_ID_down_case: return "DW_ID_down_case"; | |
589 | case DW_ID_case_insensitive: return "DW_ID_case_insensitive"; | |
590 | } | |
1a4d82fc | 591 | return nullptr; |
223e47cc LB |
592 | } |
593 | ||
223e47cc LB |
594 | const char *llvm::dwarf::ConventionString(unsigned Convention) { |
595 | switch (Convention) { | |
596 | case DW_CC_normal: return "DW_CC_normal"; | |
597 | case DW_CC_program: return "DW_CC_program"; | |
598 | case DW_CC_nocall: return "DW_CC_nocall"; | |
599 | case DW_CC_lo_user: return "DW_CC_lo_user"; | |
600 | case DW_CC_hi_user: return "DW_CC_hi_user"; | |
601 | } | |
1a4d82fc | 602 | return nullptr; |
223e47cc LB |
603 | } |
604 | ||
223e47cc LB |
605 | const char *llvm::dwarf::InlineCodeString(unsigned Code) { |
606 | switch (Code) { | |
607 | case DW_INL_not_inlined: return "DW_INL_not_inlined"; | |
608 | case DW_INL_inlined: return "DW_INL_inlined"; | |
609 | case DW_INL_declared_not_inlined: return "DW_INL_declared_not_inlined"; | |
610 | case DW_INL_declared_inlined: return "DW_INL_declared_inlined"; | |
611 | } | |
1a4d82fc | 612 | return nullptr; |
223e47cc LB |
613 | } |
614 | ||
223e47cc LB |
615 | const char *llvm::dwarf::ArrayOrderString(unsigned Order) { |
616 | switch (Order) { | |
617 | case DW_ORD_row_major: return "DW_ORD_row_major"; | |
618 | case DW_ORD_col_major: return "DW_ORD_col_major"; | |
619 | } | |
1a4d82fc | 620 | return nullptr; |
223e47cc LB |
621 | } |
622 | ||
223e47cc LB |
623 | const char *llvm::dwarf::DiscriminantString(unsigned Discriminant) { |
624 | switch (Discriminant) { | |
625 | case DW_DSC_label: return "DW_DSC_label"; | |
626 | case DW_DSC_range: return "DW_DSC_range"; | |
627 | } | |
1a4d82fc | 628 | return nullptr; |
223e47cc LB |
629 | } |
630 | ||
223e47cc LB |
631 | const char *llvm::dwarf::LNStandardString(unsigned Standard) { |
632 | switch (Standard) { | |
633 | case DW_LNS_copy: return "DW_LNS_copy"; | |
634 | case DW_LNS_advance_pc: return "DW_LNS_advance_pc"; | |
635 | case DW_LNS_advance_line: return "DW_LNS_advance_line"; | |
636 | case DW_LNS_set_file: return "DW_LNS_set_file"; | |
637 | case DW_LNS_set_column: return "DW_LNS_set_column"; | |
638 | case DW_LNS_negate_stmt: return "DW_LNS_negate_stmt"; | |
639 | case DW_LNS_set_basic_block: return "DW_LNS_set_basic_block"; | |
640 | case DW_LNS_const_add_pc: return "DW_LNS_const_add_pc"; | |
641 | case DW_LNS_fixed_advance_pc: return "DW_LNS_fixed_advance_pc"; | |
642 | case DW_LNS_set_prologue_end: return "DW_LNS_set_prologue_end"; | |
643 | case DW_LNS_set_epilogue_begin: return "DW_LNS_set_epilogue_begin"; | |
644 | case DW_LNS_set_isa: return "DW_LNS_set_isa"; | |
645 | } | |
1a4d82fc | 646 | return nullptr; |
223e47cc LB |
647 | } |
648 | ||
223e47cc LB |
649 | const char *llvm::dwarf::LNExtendedString(unsigned Encoding) { |
650 | switch (Encoding) { | |
651 | // Line Number Extended Opcode Encodings | |
652 | case DW_LNE_end_sequence: return "DW_LNE_end_sequence"; | |
653 | case DW_LNE_set_address: return "DW_LNE_set_address"; | |
654 | case DW_LNE_define_file: return "DW_LNE_define_file"; | |
655 | case DW_LNE_set_discriminator: return "DW_LNE_set_discriminator"; | |
656 | case DW_LNE_lo_user: return "DW_LNE_lo_user"; | |
657 | case DW_LNE_hi_user: return "DW_LNE_hi_user"; | |
658 | } | |
1a4d82fc | 659 | return nullptr; |
223e47cc LB |
660 | } |
661 | ||
223e47cc LB |
662 | const char *llvm::dwarf::MacinfoString(unsigned Encoding) { |
663 | switch (Encoding) { | |
664 | // Macinfo Type Encodings | |
665 | case DW_MACINFO_define: return "DW_MACINFO_define"; | |
666 | case DW_MACINFO_undef: return "DW_MACINFO_undef"; | |
667 | case DW_MACINFO_start_file: return "DW_MACINFO_start_file"; | |
668 | case DW_MACINFO_end_file: return "DW_MACINFO_end_file"; | |
669 | case DW_MACINFO_vendor_ext: return "DW_MACINFO_vendor_ext"; | |
670 | } | |
1a4d82fc | 671 | return nullptr; |
223e47cc LB |
672 | } |
673 | ||
223e47cc LB |
674 | const char *llvm::dwarf::CallFrameString(unsigned Encoding) { |
675 | switch (Encoding) { | |
970d7e83 | 676 | case DW_CFA_nop: return "DW_CFA_nop"; |
223e47cc LB |
677 | case DW_CFA_advance_loc: return "DW_CFA_advance_loc"; |
678 | case DW_CFA_offset: return "DW_CFA_offset"; | |
679 | case DW_CFA_restore: return "DW_CFA_restore"; | |
680 | case DW_CFA_set_loc: return "DW_CFA_set_loc"; | |
681 | case DW_CFA_advance_loc1: return "DW_CFA_advance_loc1"; | |
682 | case DW_CFA_advance_loc2: return "DW_CFA_advance_loc2"; | |
683 | case DW_CFA_advance_loc4: return "DW_CFA_advance_loc4"; | |
684 | case DW_CFA_offset_extended: return "DW_CFA_offset_extended"; | |
685 | case DW_CFA_restore_extended: return "DW_CFA_restore_extended"; | |
686 | case DW_CFA_undefined: return "DW_CFA_undefined"; | |
687 | case DW_CFA_same_value: return "DW_CFA_same_value"; | |
688 | case DW_CFA_register: return "DW_CFA_register"; | |
689 | case DW_CFA_remember_state: return "DW_CFA_remember_state"; | |
690 | case DW_CFA_restore_state: return "DW_CFA_restore_state"; | |
691 | case DW_CFA_def_cfa: return "DW_CFA_def_cfa"; | |
692 | case DW_CFA_def_cfa_register: return "DW_CFA_def_cfa_register"; | |
693 | case DW_CFA_def_cfa_offset: return "DW_CFA_def_cfa_offset"; | |
694 | case DW_CFA_def_cfa_expression: return "DW_CFA_def_cfa_expression"; | |
695 | case DW_CFA_expression: return "DW_CFA_expression"; | |
696 | case DW_CFA_offset_extended_sf: return "DW_CFA_offset_extended_sf"; | |
697 | case DW_CFA_def_cfa_sf: return "DW_CFA_def_cfa_sf"; | |
698 | case DW_CFA_def_cfa_offset_sf: return "DW_CFA_def_cfa_offset_sf"; | |
699 | case DW_CFA_val_offset: return "DW_CFA_val_offset"; | |
700 | case DW_CFA_val_offset_sf: return "DW_CFA_val_offset_sf"; | |
701 | case DW_CFA_val_expression: return "DW_CFA_val_expression"; | |
702 | case DW_CFA_MIPS_advance_loc8: return "DW_CFA_MIPS_advance_loc8"; | |
703 | case DW_CFA_GNU_window_save: return "DW_CFA_GNU_window_save"; | |
704 | case DW_CFA_GNU_args_size: return "DW_CFA_GNU_args_size"; | |
705 | case DW_CFA_lo_user: return "DW_CFA_lo_user"; | |
706 | case DW_CFA_hi_user: return "DW_CFA_hi_user"; | |
707 | } | |
1a4d82fc JJ |
708 | return nullptr; |
709 | } | |
710 | ||
85aaf69f SL |
711 | const char *llvm::dwarf::ApplePropertyString(unsigned Prop) { |
712 | switch (Prop) { | |
713 | case DW_APPLE_PROPERTY_readonly: | |
714 | return "DW_APPLE_PROPERTY_readonly"; | |
715 | case DW_APPLE_PROPERTY_getter: | |
716 | return "DW_APPLE_PROPERTY_getter"; | |
717 | case DW_APPLE_PROPERTY_assign: | |
718 | return "DW_APPLE_PROPERTY_assign"; | |
719 | case DW_APPLE_PROPERTY_readwrite: | |
720 | return "DW_APPLE_PROPERTY_readwrite"; | |
721 | case DW_APPLE_PROPERTY_retain: | |
722 | return "DW_APPLE_PROPERTY_retain"; | |
723 | case DW_APPLE_PROPERTY_copy: | |
724 | return "DW_APPLE_PROPERTY_copy"; | |
725 | case DW_APPLE_PROPERTY_nonatomic: | |
726 | return "DW_APPLE_PROPERTY_nonatomic"; | |
727 | case DW_APPLE_PROPERTY_setter: | |
728 | return "DW_APPLE_PROPERTY_setter"; | |
729 | case DW_APPLE_PROPERTY_atomic: | |
730 | return "DW_APPLE_PROPERTY_atomic"; | |
731 | case DW_APPLE_PROPERTY_weak: | |
732 | return "DW_APPLE_PROPERTY_weak"; | |
733 | case DW_APPLE_PROPERTY_strong: | |
734 | return "DW_APPLE_PROPERTY_strong"; | |
735 | case DW_APPLE_PROPERTY_unsafe_unretained: | |
736 | return "DW_APPLE_PROPERTY_unsafe_unretained"; | |
737 | } | |
738 | return nullptr; | |
739 | } | |
740 | ||
1a4d82fc JJ |
741 | const char *llvm::dwarf::AtomTypeString(unsigned AT) { |
742 | switch (AT) { | |
743 | case dwarf::DW_ATOM_null: | |
744 | return "DW_ATOM_null"; | |
745 | case dwarf::DW_ATOM_die_offset: | |
746 | return "DW_ATOM_die_offset"; | |
747 | case DW_ATOM_cu_offset: | |
748 | return "DW_ATOM_cu_offset"; | |
749 | case DW_ATOM_die_tag: | |
750 | return "DW_ATOM_die_tag"; | |
751 | case DW_ATOM_type_flags: | |
752 | return "DW_ATOM_type_flags"; | |
753 | } | |
754 | return nullptr; | |
755 | } | |
756 | ||
757 | const char *llvm::dwarf::GDBIndexEntryKindString(GDBIndexEntryKind Kind) { | |
758 | switch (Kind) { | |
759 | case GIEK_NONE: | |
760 | return "NONE"; | |
761 | case GIEK_TYPE: | |
762 | return "TYPE"; | |
763 | case GIEK_VARIABLE: | |
764 | return "VARIABLE"; | |
765 | case GIEK_FUNCTION: | |
766 | return "FUNCTION"; | |
767 | case GIEK_OTHER: | |
768 | return "OTHER"; | |
769 | case GIEK_UNUSED5: | |
770 | return "UNUSED5"; | |
771 | case GIEK_UNUSED6: | |
772 | return "UNUSED6"; | |
773 | case GIEK_UNUSED7: | |
774 | return "UNUSED7"; | |
775 | } | |
776 | llvm_unreachable("Unknown GDBIndexEntryKind value"); | |
777 | } | |
778 | ||
779 | const char *llvm::dwarf::GDBIndexEntryLinkageString(GDBIndexEntryLinkage Linkage) { | |
780 | switch (Linkage) { | |
781 | case GIEL_EXTERNAL: | |
782 | return "EXTERNAL"; | |
783 | case GIEL_STATIC: | |
784 | return "STATIC"; | |
785 | } | |
786 | llvm_unreachable("Unknown GDBIndexEntryLinkage value"); | |
787 | } | |
788 | ||
789 | const char *llvm::dwarf::AttributeValueString(uint16_t Attr, unsigned Val) { | |
790 | switch (Attr) { | |
791 | case DW_AT_accessibility: | |
792 | return AccessibilityString(Val); | |
793 | case DW_AT_virtuality: | |
794 | return VirtualityString(Val); | |
795 | case DW_AT_language: | |
796 | return LanguageString(Val); | |
797 | case DW_AT_encoding: | |
798 | return AttributeEncodingString(Val); | |
799 | case DW_AT_decimal_sign: | |
800 | return DecimalSignString(Val); | |
801 | case DW_AT_endianity: | |
802 | return EndianityString(Val); | |
803 | case DW_AT_visibility: | |
804 | return VisibilityString(Val); | |
805 | case DW_AT_identifier_case: | |
806 | return CaseString(Val); | |
807 | case DW_AT_calling_convention: | |
808 | return ConventionString(Val); | |
809 | case DW_AT_inline: | |
810 | return InlineCodeString(Val); | |
811 | case DW_AT_ordering: | |
812 | return ArrayOrderString(Val); | |
813 | case DW_AT_discr_value: | |
814 | return DiscriminantString(Val); | |
815 | } | |
816 | ||
817 | return nullptr; | |
223e47cc | 818 | } |