1260684Skaiw/*-
2260684Skaiw * Copyright (c) 2007 John Birrell (jb@freebsd.org)
3260684Skaiw * Copyright (c) 2009 Kai Wang
4260684Skaiw * All rights reserved.
5260684Skaiw *
6260684Skaiw * Redistribution and use in source and binary forms, with or without
7260684Skaiw * modification, are permitted provided that the following conditions
8260684Skaiw * are met:
9260684Skaiw * 1. Redistributions of source code must retain the above copyright
10260684Skaiw *    notice, this list of conditions and the following disclaimer.
11260684Skaiw * 2. Redistributions in binary form must reproduce the above copyright
12260684Skaiw *    notice, this list of conditions and the following disclaimer in the
13260684Skaiw *    documentation and/or other materials provided with the distribution.
14260684Skaiw *
15260684Skaiw * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16260684Skaiw * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17260684Skaiw * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18260684Skaiw * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19260684Skaiw * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20260684Skaiw * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21260684Skaiw * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22260684Skaiw * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23260684Skaiw * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24260684Skaiw * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25260684Skaiw * SUCH DAMAGE.
26260684Skaiw */
27260684Skaiw
28260684Skaiw#include "_libdwarf.h"
29260684Skaiw
30367466SdimELFTC_VCSID("$Id: dwarf_dump.c 3749 2019-06-28 01:10:44Z emaste $");
31260684Skaiw
32260684Skaiwint
33260684Skaiwdwarf_get_ACCESS_name(unsigned access, const char **s)
34260684Skaiw{
35260684Skaiw
36260684Skaiw	assert(s != NULL);
37260684Skaiw
38260684Skaiw	switch (access) {
39260684Skaiw	case DW_ACCESS_public:
40260684Skaiw		*s = "DW_ACCESS_public"; break;
41260684Skaiw	case DW_ACCESS_protected:
42260684Skaiw		*s = "DW_ACCESS_protected"; break;
43260684Skaiw	case DW_ACCESS_private:
44260684Skaiw		*s = "DW_ACCESS_private"; break;
45260684Skaiw	default:
46260684Skaiw		return (DW_DLV_NO_ENTRY);
47260684Skaiw	}
48260684Skaiw
49260684Skaiw	return (DW_DLV_OK);
50260684Skaiw}
51260684Skaiw
52260684Skaiwint
53260684Skaiwdwarf_get_AT_name(unsigned attr, const char **s)
54260684Skaiw{
55260684Skaiw
56260684Skaiw	assert(s != NULL);
57260684Skaiw
58260684Skaiw	switch (attr) {
59260684Skaiw	case DW_AT_abstract_origin:
60260684Skaiw		*s = "DW_AT_abstract_origin"; break;
61260684Skaiw	case DW_AT_accessibility:
62260684Skaiw		*s = "DW_AT_accessibility"; break;
63260684Skaiw	case DW_AT_address_class:
64260684Skaiw		*s = "DW_AT_address_class"; break;
65260684Skaiw	case DW_AT_artificial:
66260684Skaiw		*s = "DW_AT_artificial"; break;
67260684Skaiw	case DW_AT_allocated:
68260684Skaiw		*s = "DW_AT_allocated"; break;
69260684Skaiw	case DW_AT_associated:
70260684Skaiw		*s = "DW_AT_associated"; break;
71260684Skaiw	case DW_AT_base_types:
72260684Skaiw		*s = "DW_AT_base_types"; break;
73260684Skaiw	case DW_AT_binary_scale:
74260684Skaiw		*s = "DW_AT_binary_scale"; break;
75260684Skaiw	case DW_AT_bit_offset:
76260684Skaiw		*s = "DW_AT_bit_offset"; break;
77260684Skaiw	case DW_AT_bit_size:
78260684Skaiw		*s = "DW_AT_bit_size"; break;
79260684Skaiw	case DW_AT_bit_stride:
80260684Skaiw		*s = "DW_AT_bit_stride"; break;
81260684Skaiw	case DW_AT_byte_size:
82260684Skaiw		*s = "DW_AT_byte_size"; break;
83260684Skaiw	case DW_AT_byte_stride:
84260684Skaiw		*s = "DW_AT_byte_stride"; break;
85260684Skaiw	case DW_AT_calling_convention:
86260684Skaiw		*s = "DW_AT_calling_convention"; break;
87260684Skaiw	case DW_AT_common_reference:
88260684Skaiw		*s = "DW_AT_common_reference"; break;
89260684Skaiw	case DW_AT_comp_dir:
90260684Skaiw		*s = "DW_AT_comp_dir"; break;
91260684Skaiw	case DW_AT_const_expr:
92260684Skaiw		*s = "DW_AT_const_expr"; break;
93260684Skaiw	case DW_AT_const_value:
94260684Skaiw		*s = "DW_AT_const_value"; break;
95260684Skaiw	case DW_AT_containing_type:
96260684Skaiw		*s = "DW_AT_containing_type"; break;
97260684Skaiw	case DW_AT_count:
98260684Skaiw		*s = "DW_AT_count"; break;
99260684Skaiw	case DW_AT_call_column:
100260684Skaiw		*s = "DW_AT_call_column"; break;
101260684Skaiw	case DW_AT_call_file:
102260684Skaiw		*s = "DW_AT_call_file"; break;
103260684Skaiw	case DW_AT_call_line:
104260684Skaiw		*s = "DW_AT_call_line"; break;
105260684Skaiw	case DW_AT_data_bit_offset:
106260684Skaiw		*s = "DW_AT_data_bit_offset"; break;
107260684Skaiw	case DW_AT_data_location:
108260684Skaiw		*s = "DW_AT_data_location"; break;
109260684Skaiw	case DW_AT_data_member_location:
110260684Skaiw		*s = "DW_AT_data_member_location"; break;
111260684Skaiw	case DW_AT_decl_column:
112260684Skaiw		*s = "DW_AT_decl_column"; break;
113260684Skaiw	case DW_AT_decl_file:
114260684Skaiw		*s = "DW_AT_decl_file"; break;
115260684Skaiw	case DW_AT_decl_line:
116260684Skaiw		*s = "DW_AT_decl_line"; break;
117260684Skaiw	case DW_AT_declaration:
118260684Skaiw		*s = "DW_AT_declaration"; break;
119260684Skaiw	case DW_AT_default_value:
120260684Skaiw		*s = "DW_AT_default_value"; break;
121260684Skaiw	case DW_AT_decimal_scale:
122260684Skaiw		*s = "DW_AT_decimal_scale"; break;
123260684Skaiw	case DW_AT_decimal_sign:
124260684Skaiw		*s = "DW_AT_decimal_sign"; break;
125260684Skaiw	case DW_AT_description:
126260684Skaiw		*s = "DW_AT_description"; break;
127260684Skaiw	case DW_AT_digit_count:
128260684Skaiw		*s = "DW_AT_digit_count"; break;
129260684Skaiw	case DW_AT_discr:
130260684Skaiw		*s = "DW_AT_discr"; break;
131260684Skaiw	case DW_AT_discr_list:
132260684Skaiw		*s = "DW_AT_discr_list"; break;
133260684Skaiw	case DW_AT_discr_value:
134260684Skaiw		*s = "DW_AT_discr_value"; break;
135260684Skaiw	case DW_AT_element_list:
136260684Skaiw		*s = "DW_AT_element_list"; break;
137260684Skaiw	case DW_AT_encoding:
138260684Skaiw		*s = "DW_AT_encoding"; break;
139260684Skaiw	case DW_AT_enum_class:
140260684Skaiw		*s = "DW_AT_enum_class"; break;
141260684Skaiw	case DW_AT_external:
142260684Skaiw		*s = "DW_AT_external"; break;
143260684Skaiw	case DW_AT_entry_pc:
144260684Skaiw		*s = "DW_AT_entry_pc"; break;
145260684Skaiw	case DW_AT_extension:
146260684Skaiw		*s = "DW_AT_extension"; break;
147260684Skaiw	case DW_AT_explicit:
148260684Skaiw		*s = "DW_AT_explicit"; break;
149260684Skaiw	case DW_AT_endianity:
150260684Skaiw		*s = "DW_AT_endianity"; break;
151260684Skaiw	case DW_AT_elemental:
152260684Skaiw		*s = "DW_AT_elemental"; break;
153260684Skaiw	case DW_AT_frame_base:
154260684Skaiw		*s = "DW_AT_frame_base"; break;
155260684Skaiw	case DW_AT_friend:
156260684Skaiw		*s = "DW_AT_friend"; break;
157260684Skaiw	case DW_AT_high_pc:
158260684Skaiw		*s = "DW_AT_high_pc"; break;
159260684Skaiw	case DW_AT_hi_user:
160260684Skaiw		*s = "DW_AT_hi_user"; break;
161260684Skaiw	case DW_AT_identifier_case:
162260684Skaiw		*s = "DW_AT_identifier_case"; break;
163260684Skaiw	case DW_AT_import:
164260684Skaiw		*s = "DW_AT_import"; break;
165260684Skaiw	case DW_AT_inline:
166260684Skaiw		*s = "DW_AT_inline"; break;
167260684Skaiw	case DW_AT_is_optional:
168260684Skaiw		*s = "DW_AT_is_optional"; break;
169260684Skaiw	case DW_AT_language:
170260684Skaiw		*s = "DW_AT_language"; break;
171260684Skaiw	case DW_AT_linkage_name:
172260684Skaiw		*s = "DW_AT_linkage_name"; break;
173260684Skaiw	case DW_AT_lo_user:
174260684Skaiw		*s = "DW_AT_lo_user"; break;
175260684Skaiw	case DW_AT_location:
176260684Skaiw		*s = "DW_AT_location"; break;
177260684Skaiw	case DW_AT_low_pc:
178260684Skaiw		*s = "DW_AT_low_pc"; break;
179260684Skaiw	case DW_AT_lower_bound:
180260684Skaiw		*s = "DW_AT_lower_bound"; break;
181260684Skaiw	case DW_AT_macro_info:
182260684Skaiw		*s = "DW_AT_macro_info"; break;
183260684Skaiw	case DW_AT_main_subprogram:
184260684Skaiw		*s = "DW_AT_main_subprogram"; break;
185260684Skaiw	case DW_AT_mutable:
186260684Skaiw		*s = "DW_AT_mutable"; break;
187260684Skaiw	case DW_AT_member:
188260684Skaiw		*s = "DW_AT_member"; break;
189260684Skaiw	case DW_AT_name:
190260684Skaiw		*s = "DW_AT_name"; break;
191260684Skaiw	case DW_AT_namelist_item:
192260684Skaiw		*s = "DW_AT_namelist_item"; break;
193260684Skaiw	case DW_AT_ordering:
194260684Skaiw		*s = "DW_AT_ordering"; break;
195260684Skaiw	case DW_AT_object_pointer:
196260684Skaiw		*s = "DW_AT_object_pointer"; break;
197260684Skaiw	case DW_AT_priority:
198260684Skaiw		*s = "DW_AT_priority"; break;
199260684Skaiw	case DW_AT_producer:
200260684Skaiw		*s = "DW_AT_producer"; break;
201260684Skaiw	case DW_AT_prototyped:
202260684Skaiw		*s = "DW_AT_prototyped"; break;
203260684Skaiw	case DW_AT_picture_string:
204260684Skaiw		*s = "DW_AT_picture_string"; break;
205260684Skaiw	case DW_AT_pure:
206260684Skaiw		*s = "DW_AT_pure"; break;
207260684Skaiw	case DW_AT_return_addr:
208260684Skaiw		*s = "DW_AT_return_addr"; break;
209260684Skaiw	case DW_AT_ranges:
210260684Skaiw		*s = "DW_AT_ranges"; break;
211260684Skaiw	case DW_AT_recursive:
212260684Skaiw		*s = "DW_AT_recursive"; break;
213260684Skaiw	case DW_AT_segment:
214260684Skaiw		*s = "DW_AT_segment"; break;
215260684Skaiw	case DW_AT_sibling:
216260684Skaiw		*s = "DW_AT_sibling"; break;
217260684Skaiw	case DW_AT_signature:
218260684Skaiw		*s = "DW_AT_signature"; break;
219260684Skaiw	case DW_AT_specification:
220260684Skaiw		*s = "DW_AT_specification"; break;
221260684Skaiw	case DW_AT_start_scope:
222260684Skaiw		*s = "DW_AT_start_scope"; break;
223260684Skaiw	case DW_AT_static_link:
224260684Skaiw		*s = "DW_AT_static_link"; break;
225260684Skaiw	case DW_AT_stmt_list:
226260684Skaiw		*s = "DW_AT_stmt_list"; break;
227260684Skaiw	case DW_AT_string_length:
228260684Skaiw		*s = "DW_AT_string_length"; break;
229260684Skaiw	case DW_AT_subscr_data:
230260684Skaiw		*s = "DW_AT_subscr_data"; break;
231260684Skaiw	case DW_AT_small:
232260684Skaiw		*s = "DW_AT_small"; break;
233260684Skaiw	case DW_AT_type:
234260684Skaiw		*s = "DW_AT_type"; break;
235260684Skaiw	case DW_AT_trampoline:
236260684Skaiw		*s = "DW_AT_trampoline"; break;
237260684Skaiw	case DW_AT_threads_scaled:
238260684Skaiw		*s = "DW_AT_threads_scaled"; break;
239260684Skaiw	case DW_AT_upper_bound:
240260684Skaiw		*s = "DW_AT_upper_bound"; break;
241260684Skaiw	case DW_AT_use_location:
242260684Skaiw		*s = "DW_AT_use_location"; break;
243260684Skaiw	case DW_AT_use_UTF8:
244260684Skaiw		*s = "DW_AT_use_UTF8"; break;
245260684Skaiw	case DW_AT_variable_parameter:
246260684Skaiw		*s = "DW_AT_variable_parameter"; break;
247260684Skaiw	case DW_AT_virtuality:
248260684Skaiw		*s = "DW_AT_virtuality"; break;
249260684Skaiw	case DW_AT_visibility:
250260684Skaiw		*s = "DW_AT_visibility"; break;
251260684Skaiw	case DW_AT_vtable_elem_location:
252260684Skaiw		*s = "DW_AT_vtable_elem_location"; break;
253276371Semaste	case DW_AT_sf_names:
254276371Semaste		*s = "DW_AT_sf_names"; break;
255276371Semaste	case DW_AT_src_info:
256276371Semaste		*s = "DW_AT_src_info"; break;
257276371Semaste	case DW_AT_mac_info:
258276371Semaste		*s = "DW_AT_mac_info"; break;
259276371Semaste	case DW_AT_src_coords:
260276371Semaste		*s = "DW_AT_src_coords"; break;
261276371Semaste	case DW_AT_body_begin:
262276371Semaste		*s = "DW_AT_body_begin"; break;
263276371Semaste	case DW_AT_body_end:
264276371Semaste		*s = "DW_AT_body_end"; break;
265317623Semaste	case DW_AT_MIPS_fde:
266317623Semaste		*s = "DW_AT_MIPS_fde"; break;
267317623Semaste	case DW_AT_MIPS_loop_begin:
268317623Semaste		*s = "DW_AT_MIPS_loop_begin"; break;
269317623Semaste	case DW_AT_MIPS_tail_loop_begin:
270317623Semaste		*s = "DW_AT_MIPS_tail_loop_begin"; break;
271317623Semaste	case DW_AT_MIPS_epilog_begin:
272317623Semaste		*s = "DW_AT_MIPS_epilog_begin"; break;
273317623Semaste	case DW_AT_MIPS_loop_unroll_factor:
274317623Semaste		*s = "DW_AT_MIPS_loop_unroll_factor"; break;
275317623Semaste	case DW_AT_MIPS_software_pipeline_depth:
276317623Semaste		*s = "DW_AT_MIPS_software_pipeline_depth"; break;
277317623Semaste	case DW_AT_MIPS_linkage_name:
278317623Semaste		*s = "DW_AT_MIPS_linkage_name"; break;
279317623Semaste	case DW_AT_MIPS_stride:
280317623Semaste		*s = "DW_AT_MIPS_stride"; break;
281317623Semaste	case DW_AT_MIPS_abstract_name:
282317623Semaste		*s = "DW_AT_MIPS_abstract_name"; break;
283317623Semaste	case DW_AT_MIPS_clone_origin:
284317623Semaste		*s = "DW_AT_MIPS_clone_origin"; break;
285317623Semaste	case DW_AT_MIPS_has_inlines:
286317623Semaste		*s = "DW_AT_MIPS_has_inlines"; break;
287317623Semaste	case DW_AT_MIPS_stride_byte:
288317623Semaste		*s = "DW_AT_MIPS_stride_byte"; break;
289317623Semaste	case DW_AT_MIPS_stride_elem:
290317623Semaste		*s = "DW_AT_MIPS_stride_elem"; break;
291317623Semaste	case DW_AT_MIPS_ptr_dopetype:
292317623Semaste		*s = "DW_AT_MIPS_ptr_dopetype"; break;
293317623Semaste	case DW_AT_MIPS_allocatable_dopetype:
294317623Semaste		*s = "DW_AT_MIPS_allocatable_dopetype"; break;
295317623Semaste	case DW_AT_MIPS_assumed_shape_dopetype:
296317623Semaste		*s = "DW_AT_MIPS_assumed_shape_dopetype"; break;
297317623Semaste	case DW_AT_MIPS_assumed_size:
298317623Semaste		*s = "DW_AT_MIPS_assumed_size"; break;
299276371Semaste	case DW_AT_GNU_vector:
300276371Semaste		*s = "DW_AT_GNU_vector"; break;
301276371Semaste	case DW_AT_GNU_guarded_by:
302276371Semaste		*s = "DW_AT_GNU_guarded_by"; break;
303276371Semaste	case DW_AT_GNU_pt_guarded_by:
304276371Semaste		*s = "DW_AT_GNU_pt_guarded_by"; break;
305276371Semaste	case DW_AT_GNU_guarded:
306276371Semaste		*s = "DW_AT_GNU_guarded"; break;
307276371Semaste	case DW_AT_GNU_pt_guarded:
308276371Semaste		*s = "DW_AT_GNU_pt_guarded"; break;
309276371Semaste	case DW_AT_GNU_locks_excluded:
310276371Semaste		*s = "DW_AT_GNU_locks_excluded"; break;
311276371Semaste	case DW_AT_GNU_exclusive_locks_required:
312276371Semaste		*s = "DW_AT_GNU_exclusive_locks_required"; break;
313276371Semaste	case DW_AT_GNU_shared_locks_required:
314276371Semaste		*s = "DW_AT_GNU_shared_locks_required"; break;
315276371Semaste	case DW_AT_GNU_odr_signature:
316276371Semaste		*s = "DW_AT_GNU_odr_signature"; break;
317276371Semaste	case DW_AT_GNU_template_name:
318276371Semaste		*s = "DW_AT_GNU_template_name"; break;
319276371Semaste	case DW_AT_GNU_call_site_value:
320276371Semaste		*s = "DW_AT_GNU_call_site_value"; break;
321276371Semaste	case DW_AT_GNU_call_site_data_value:
322276371Semaste		*s = "DW_AT_GNU_call_site_data_value"; break;
323276371Semaste	case DW_AT_GNU_call_site_target:
324276371Semaste		*s = "DW_AT_GNU_call_site_target"; break;
325276371Semaste	case DW_AT_GNU_call_site_target_clobbered:
326276371Semaste		*s = "DW_AT_GNU_call_site_target_clobbered"; break;
327276371Semaste	case DW_AT_GNU_tail_call:
328276371Semaste		*s = "DW_AT_GNU_tail_call"; break;
329276371Semaste	case DW_AT_GNU_all_tail_call_sites:
330276371Semaste		*s = "DW_AT_GNU_all_tail_call_sites"; break;
331276371Semaste	case DW_AT_GNU_all_call_sites:
332276371Semaste		*s = "DW_AT_GNU_all_call_sites"; break;
333276371Semaste	case DW_AT_GNU_all_source_call_sites:
334276371Semaste		*s = "DW_AT_GNU_all_source_call_sites"; break;
335306372Smarkj	case DW_AT_APPLE_optimized:
336306372Smarkj		*s = "DW_AT_APPLE_optimized"; break;
337306372Smarkj	case DW_AT_APPLE_flags:
338306372Smarkj		*s = "DW_AT_APPLE_flags"; break;
339306372Smarkj	case DW_AT_APPLE_isa:
340306372Smarkj		*s = "DW_AT_APPLE_isa"; break;
341306372Smarkj	case DW_AT_APPLE_block:
342306372Smarkj		*s = "DW_AT_APPLE_block"; break;
343306372Smarkj	case DW_AT_APPLE_major_runtime_vers:
344306372Smarkj		*s = "DW_AT_APPLE_major_runtime_vers"; break;
345306372Smarkj	case DW_AT_APPLE_runtime_class:
346306372Smarkj		*s = "DW_AT_APPLE_runtime_class"; break;
347306372Smarkj	case DW_AT_APPLE_omit_frame_ptr:
348306372Smarkj		*s = "DW_AT_APPLE_omit_frame_ptr"; break;
349306372Smarkj	case DW_AT_APPLE_property_name:
350306372Smarkj		*s = "DW_AT_APPLE_property_name"; break;
351306372Smarkj	case DW_AT_APPLE_property_getter:
352306372Smarkj		*s = "DW_AT_APPLE_property_getter"; break;
353306372Smarkj	case DW_AT_APPLE_property_setter:
354306372Smarkj		*s = "DW_AT_APPLE_property_setter"; break;
355306372Smarkj	case DW_AT_APPLE_property_attribute:
356306372Smarkj		*s = "DW_AT_APPLE_property_attribute"; break;
357306372Smarkj	case DW_AT_APPLE_objc_complete_type:
358306372Smarkj		*s = "DW_AT_APPLE_objc_complete_type"; break;
359306372Smarkj	case DW_AT_APPLE_property:
360306372Smarkj		*s = "DW_AT_APPLE_property"; break;
361260684Skaiw	default:
362260684Skaiw		return (DW_DLV_NO_ENTRY);
363260684Skaiw	}
364260684Skaiw
365260684Skaiw	return (DW_DLV_OK);
366260684Skaiw}
367260684Skaiw
368260684Skaiwint
369260684Skaiwdwarf_get_ATE_name(unsigned ate, const char **s)
370260684Skaiw{
371260684Skaiw
372260684Skaiw	assert(s != NULL);
373260684Skaiw
374260684Skaiw	switch(ate) {
375260684Skaiw	case DW_ATE_address:
376260684Skaiw		*s = "DW_ATE_address"; break;
377260684Skaiw	case DW_ATE_boolean:
378260684Skaiw		*s = "DW_ATE_boolean"; break;
379260684Skaiw	case DW_ATE_complex_float:
380260684Skaiw		*s = "DW_ATE_complex_float"; break;
381260684Skaiw	case DW_ATE_float:
382260684Skaiw		*s = "DW_ATE_float"; break;
383260684Skaiw	case DW_ATE_signed:
384260684Skaiw		*s = "DW_ATE_signed"; break;
385260684Skaiw	case DW_ATE_signed_char:
386260684Skaiw		*s = "DW_ATE_signed_char"; break;
387260684Skaiw	case DW_ATE_unsigned:
388260684Skaiw		*s = "DW_ATE_unsigned"; break;
389260684Skaiw	case DW_ATE_unsigned_char:
390260684Skaiw		*s = "DW_ATE_unsigned_char"; break;
391260684Skaiw	case DW_ATE_imaginary_float:
392260684Skaiw		*s = "DW_ATE_imaginary_float"; break;
393260684Skaiw	case DW_ATE_packed_decimal:
394260684Skaiw		*s = "DW_ATE_packed_decimal"; break;
395260684Skaiw	case DW_ATE_numeric_string:
396260684Skaiw		*s = "DW_ATE_numeric_string"; break;
397260684Skaiw	case DW_ATE_edited:
398260684Skaiw		*s = "DW_ATE_edited"; break;
399260684Skaiw	case DW_ATE_signed_fixed:
400260684Skaiw		*s = "DW_ATE_signed_fixed"; break;
401260684Skaiw	case DW_ATE_unsigned_fixed:
402260684Skaiw		*s = "DW_ATE_unsigned_fixed"; break;
403260684Skaiw	case DW_ATE_decimal_float:
404260684Skaiw		*s = "DW_ATE_decimal_float"; break;
405260684Skaiw	case DW_ATE_lo_user:
406260684Skaiw		*s = "DW_ATE_lo_user"; break;
407260684Skaiw	case DW_ATE_hi_user:
408260684Skaiw		*s = "DW_ATE_hi_user"; break;
409260684Skaiw	default:
410260684Skaiw		return (DW_DLV_NO_ENTRY);
411260684Skaiw	}
412260684Skaiw
413260684Skaiw	return (DW_DLV_OK);
414260684Skaiw}
415260684Skaiw
416260684Skaiwint
417260684Skaiwdwarf_get_CC_name(unsigned cc, const char **s)
418260684Skaiw{
419260684Skaiw
420260684Skaiw	assert(s != NULL);
421260684Skaiw
422260684Skaiw	switch (cc) {
423260684Skaiw	case DW_CC_normal:
424260684Skaiw		*s = "DW_CC_normal"; break;
425260684Skaiw	case DW_CC_program:
426260684Skaiw		*s = "DW_CC_program"; break;
427260684Skaiw	case DW_CC_nocall:
428260684Skaiw		*s = "DW_CC_nocall"; break;
429260684Skaiw	case DW_CC_lo_user:
430260684Skaiw		*s = "DW_CC_lo_user"; break;
431260684Skaiw	case DW_CC_hi_user:
432260684Skaiw		*s = "DW_CC_hi_user"; break;
433260684Skaiw	default:
434260684Skaiw		return (DW_DLV_NO_ENTRY);
435260684Skaiw	}
436260684Skaiw
437260684Skaiw	return (DW_DLV_OK);
438260684Skaiw}
439260684Skaiw
440260684Skaiwint
441260684Skaiwdwarf_get_CFA_name(unsigned cfa, const char **s)
442260684Skaiw{
443260684Skaiw
444260684Skaiw	assert(s != NULL);
445260684Skaiw
446260684Skaiw	switch (cfa) {
447260684Skaiw	case DW_CFA_advance_loc:
448260684Skaiw		*s = "DW_CFA_advance_loc"; break;
449260684Skaiw	case DW_CFA_offset:
450260684Skaiw		*s = "DW_CFA_offset"; break;
451260684Skaiw	case DW_CFA_restore:
452260684Skaiw		*s = "DW_CFA_restore"; break;
453260684Skaiw	case DW_CFA_nop:
454260684Skaiw		*s = "DW_CFA_nop"; break;
455260684Skaiw	case DW_CFA_set_loc:
456260684Skaiw		*s = "DW_CFA_set_loc"; break;
457260684Skaiw	case DW_CFA_advance_loc1:
458260684Skaiw		*s = "DW_CFA_advance_loc1"; break;
459260684Skaiw	case DW_CFA_advance_loc2:
460260684Skaiw		*s = "DW_CFA_advance_loc2"; break;
461260684Skaiw	case DW_CFA_advance_loc4:
462260684Skaiw		*s = "DW_CFA_advance_loc4"; break;
463260684Skaiw	case DW_CFA_offset_extended:
464260684Skaiw		*s = "DW_CFA_offset_extended"; break;
465260684Skaiw	case DW_CFA_restore_extended:
466260684Skaiw		*s = "DW_CFA_restore_extended"; break;
467260684Skaiw	case DW_CFA_undefined:
468260684Skaiw		*s = "DW_CFA_undefined"; break;
469260684Skaiw	case DW_CFA_same_value:
470260684Skaiw		*s = "DW_CFA_same_value"; break;
471260684Skaiw	case DW_CFA_register:
472260684Skaiw		*s = "DW_CFA_register"; break;
473260684Skaiw	case DW_CFA_remember_state:
474260684Skaiw		*s = "DW_CFA_remember_state"; break;
475260684Skaiw	case DW_CFA_restore_state:
476260684Skaiw		*s = "DW_CFA_restore_state"; break;
477260684Skaiw	case DW_CFA_def_cfa:
478260684Skaiw		*s = "DW_CFA_def_cfa"; break;
479260684Skaiw	case DW_CFA_def_cfa_register:
480260684Skaiw		*s = "DW_CFA_def_cfa_register"; break;
481260684Skaiw	case DW_CFA_def_cfa_offset:
482260684Skaiw		*s = "DW_CFA_def_cfa_offset"; break;
483260684Skaiw	case DW_CFA_def_cfa_expression:
484260684Skaiw		*s = "DW_CFA_def_cfa_expression"; break;
485260684Skaiw	case DW_CFA_expression:
486260684Skaiw		*s = "DW_CFA_expression"; break;
487260684Skaiw	case DW_CFA_offset_extended_sf:
488260684Skaiw		*s = "DW_CFA_offset_extended_sf"; break;
489260684Skaiw	case DW_CFA_def_cfa_sf:
490260684Skaiw		*s = "DW_CFA_def_cfa_sf"; break;
491260684Skaiw	case DW_CFA_def_cfa_offset_sf:
492260684Skaiw		*s = "DW_CFA_def_cfa_offset_sf"; break;
493260684Skaiw	case DW_CFA_val_offset:
494260684Skaiw		*s = "DW_CFA_val_offset"; break;
495260684Skaiw	case DW_CFA_val_offset_sf:
496260684Skaiw		*s = "DW_CFA_val_offset_sf"; break;
497260684Skaiw	case DW_CFA_val_expression:
498260684Skaiw		*s = "DW_CFA_val_expression"; break;
499260684Skaiw	case DW_CFA_lo_user:
500260684Skaiw		*s = "DW_CFA_lo_user"; break;
501260684Skaiw	case DW_CFA_high_user:
502260684Skaiw		*s = "DW_CFA_high_user"; break;
503260684Skaiw	default:
504260684Skaiw		return (DW_DLV_NO_ENTRY);
505260684Skaiw	}
506260684Skaiw
507260684Skaiw	return (DW_DLV_OK);
508260684Skaiw}
509260684Skaiw
510260684Skaiwint
511260684Skaiwdwarf_get_CHILDREN_name(unsigned children, const char **s)
512260684Skaiw{
513260684Skaiw
514260684Skaiw	assert(s != NULL);
515260684Skaiw
516260684Skaiw	switch (children) {
517260684Skaiw	case DW_CHILDREN_no:
518260684Skaiw		*s = "DW_CHILDREN_no"; break;
519260684Skaiw	case DW_CHILDREN_yes:
520260684Skaiw		*s = "DW_CHILDREN_yes"; break;
521260684Skaiw	default:
522260684Skaiw		return (DW_DLV_NO_ENTRY);
523260684Skaiw	}
524260684Skaiw
525260684Skaiw	return (DW_DLV_OK);
526260684Skaiw}
527260684Skaiw
528260684Skaiwint
529260684Skaiwdwarf_get_FORM_name(unsigned form, const char **s)
530260684Skaiw{
531260684Skaiw
532260684Skaiw	assert(s != NULL);
533260684Skaiw
534260684Skaiw	switch (form) {
535260684Skaiw	case DW_FORM_addr:
536260684Skaiw		*s = "DW_FORM_addr"; break;
537260684Skaiw	case DW_FORM_block:
538260684Skaiw		*s = "DW_FORM_block"; break;
539260684Skaiw	case DW_FORM_block1:
540260684Skaiw		*s = "DW_FORM_block1"; break;
541260684Skaiw	case DW_FORM_block2:
542260684Skaiw		*s = "DW_FORM_block2"; break;
543260684Skaiw	case DW_FORM_block4:
544260684Skaiw		*s = "DW_FORM_block4"; break;
545260684Skaiw	case DW_FORM_data1:
546260684Skaiw		*s = "DW_FORM_data1"; break;
547260684Skaiw	case DW_FORM_data2:
548260684Skaiw		*s = "DW_FORM_data2"; break;
549260684Skaiw	case DW_FORM_data4:
550260684Skaiw		*s = "DW_FORM_data4"; break;
551260684Skaiw	case DW_FORM_data8:
552260684Skaiw		*s = "DW_FORM_data8"; break;
553260684Skaiw	case DW_FORM_exprloc:
554260684Skaiw		*s = "DW_FORM_exprloc"; break;
555260684Skaiw	case DW_FORM_flag:
556260684Skaiw		*s = "DW_FORM_flag"; break;
557260684Skaiw	case DW_FORM_flag_present:
558260684Skaiw		*s = "DW_FORM_flag_present"; break;
559260684Skaiw	case DW_FORM_indirect:
560260684Skaiw		*s = "DW_FORM_indirect"; break;
561260684Skaiw	case DW_FORM_ref1:
562260684Skaiw		*s = "DW_FORM_ref1"; break;
563260684Skaiw	case DW_FORM_ref2:
564260684Skaiw		*s = "DW_FORM_ref2"; break;
565260684Skaiw	case DW_FORM_ref4:
566260684Skaiw		*s = "DW_FORM_ref4"; break;
567260684Skaiw	case DW_FORM_ref8:
568260684Skaiw		*s = "DW_FORM_ref8"; break;
569260684Skaiw	case DW_FORM_ref_addr:
570260684Skaiw		*s = "DW_FORM_ref_addr"; break;
571260684Skaiw	case DW_FORM_ref_sig8:
572260684Skaiw		*s = "DW_FORM_ref_sig8"; break;
573260684Skaiw	case DW_FORM_ref_udata:
574260684Skaiw		*s = "DW_FORM_ref_udata"; break;
575260684Skaiw	case DW_FORM_sdata:
576260684Skaiw		*s = "DW_FORM_sdata"; break;
577260684Skaiw	case DW_FORM_sec_offset:
578260684Skaiw		*s = "DW_FORM_sec_offset"; break;
579260684Skaiw	case DW_FORM_string:
580260684Skaiw		*s = "DW_FORM_string"; break;
581260684Skaiw	case DW_FORM_strp:
582260684Skaiw		*s = "DW_FORM_strp"; break;
583260684Skaiw	case DW_FORM_udata:
584260684Skaiw		*s = "DW_FORM_udata"; break;
585260684Skaiw	default:
586260684Skaiw		return (DW_DLV_NO_ENTRY);
587260684Skaiw	}
588260684Skaiw
589260684Skaiw	return (DW_DLV_OK);
590260684Skaiw}
591260684Skaiw
592260684Skaiwint
593260684Skaiwdwarf_get_DS_name(unsigned ds, const char **s)
594260684Skaiw{
595260684Skaiw
596260684Skaiw	assert(s != NULL);
597260684Skaiw
598260684Skaiw	switch (ds) {
599260684Skaiw	case DW_DS_unsigned:
600260684Skaiw		*s = "DW_DS_unsigned"; break;
601260684Skaiw	case DW_DS_leading_overpunch:
602260684Skaiw		*s = "DW_DS_leading_overpunch"; break;
603260684Skaiw	case DW_DS_trailing_overpunch:
604260684Skaiw		*s = "DW_DS_trailing_overpunch"; break;
605260684Skaiw	case DW_DS_leading_separate:
606260684Skaiw		*s = "DW_DS_leading_separate"; break;
607260684Skaiw	case DW_DS_trailing_separate:
608367466Sdim		*s = "DW_DS_trailing_separate"; break;
609260684Skaiw	default:
610260684Skaiw		return (DW_DLV_NO_ENTRY);
611260684Skaiw	}
612260684Skaiw
613260684Skaiw	return (DW_DLV_OK);
614260684Skaiw}
615260684Skaiw
616260684Skaiwint
617260684Skaiwdwarf_get_DSC_name(unsigned dsc, const char **s)
618260684Skaiw{
619260684Skaiw
620260684Skaiw	assert(s != NULL);
621260684Skaiw
622260684Skaiw	switch (dsc) {
623260684Skaiw	case DW_DSC_label:
624260684Skaiw		*s = "DW_DSC_label"; break;
625260684Skaiw	case DW_DSC_range:
626260684Skaiw		*s = "DW_DSC_range"; break;
627260684Skaiw	default:
628260684Skaiw		return (DW_DLV_NO_ENTRY);
629260684Skaiw	}
630260684Skaiw
631260684Skaiw	return (DW_DLV_OK);
632260684Skaiw}
633260684Skaiw
634260684Skaiwint
635260684Skaiwdwarf_get_EH_name(unsigned eh, const char **s)
636260684Skaiw{
637260684Skaiw
638260684Skaiw	assert(s != NULL);
639260684Skaiw
640260684Skaiw	switch (eh) {
641260684Skaiw	case DW_EH_PE_absptr:
642260684Skaiw		*s = "DW_EH_PE_absptr"; break;
643260684Skaiw	case DW_EH_PE_uleb128:
644260684Skaiw		*s = "DW_EH_PE_uleb128"; break;
645260684Skaiw	case DW_EH_PE_udata2:
646260684Skaiw		*s = "DW_EH_PE_udata2"; break;
647260684Skaiw	case DW_EH_PE_udata4:
648260684Skaiw		*s = "DW_EH_PE_udata4"; break;
649260684Skaiw	case DW_EH_PE_udata8:
650260684Skaiw		*s = "DW_EH_PE_udata8"; break;
651260684Skaiw	case DW_EH_PE_sleb128:
652260684Skaiw		*s = "DW_EH_PE_sleb128"; break;
653260684Skaiw	case DW_EH_PE_sdata2:
654260684Skaiw		*s = "DW_EH_PE_sdata2"; break;
655260684Skaiw	case DW_EH_PE_sdata4:
656260684Skaiw		*s = "DW_EH_PE_sdata4"; break;
657260684Skaiw	case DW_EH_PE_sdata8:
658260684Skaiw		*s = "DW_EH_PE_sdata8"; break;
659260684Skaiw	case DW_EH_PE_pcrel:
660260684Skaiw		*s = "DW_EH_PE_pcrel"; break;
661260684Skaiw	case DW_EH_PE_textrel:
662260684Skaiw		*s = "DW_EH_PE_textrel"; break;
663260684Skaiw	case DW_EH_PE_datarel:
664260684Skaiw		*s = "DW_EH_PE_datarel"; break;
665260684Skaiw	case DW_EH_PE_funcrel:
666260684Skaiw		*s = "DW_EH_PE_funcrel"; break;
667260684Skaiw	case DW_EH_PE_aligned:
668260684Skaiw		*s = "DW_EH_PE_aligned"; break;
669260684Skaiw	case DW_EH_PE_omit:
670260684Skaiw		*s = "DW_EH_PE_omit"; break;
671260684Skaiw	default:
672260684Skaiw		return (DW_DLV_NO_ENTRY);
673260684Skaiw	}
674260684Skaiw
675260684Skaiw	return (DW_DLV_OK);
676260684Skaiw}
677260684Skaiw
678260684Skaiwint
679260684Skaiwdwarf_get_END_name(unsigned end, const char **s)
680260684Skaiw{
681260684Skaiw
682260684Skaiw	assert(s != NULL);
683260684Skaiw
684260684Skaiw	switch (end) {
685260684Skaiw	case DW_END_default:
686260684Skaiw		*s = "DW_END_default"; break;
687260684Skaiw	case DW_END_big:
688260684Skaiw		*s = "DW_END_big"; break;
689260684Skaiw	case DW_END_little:
690260684Skaiw		*s = "DW_END_little"; break;
691260684Skaiw	case DW_END_lo_user:
692260684Skaiw		*s = "DW_END_lo_user"; break;
693260684Skaiw	case DW_END_high_user:
694260684Skaiw		*s = "DW_END_high_user"; break;
695260684Skaiw	default:
696260684Skaiw		return (DW_DLV_NO_ENTRY);
697260684Skaiw	}
698260684Skaiw
699260684Skaiw	return (DW_DLV_OK);
700260684Skaiw}
701260684Skaiw
702260684Skaiwint
703260684Skaiwdwarf_get_ID_name(unsigned id, const char **s)
704260684Skaiw{
705260684Skaiw
706260684Skaiw	assert(s != NULL);
707260684Skaiw
708260684Skaiw	switch (id) {
709260684Skaiw	case DW_ID_case_sensitive:
710260684Skaiw		*s = "DW_ID_case_sensitive"; break;
711260684Skaiw	case DW_ID_up_case:
712260684Skaiw		*s = "DW_ID_up_case"; break;
713260684Skaiw	case DW_ID_down_case:
714260684Skaiw		*s = "DW_ID_down_case"; break;
715260684Skaiw	case DW_ID_case_insensitive:
716260684Skaiw		*s = "DW_ID_case_insensitive"; break;
717260684Skaiw	default:
718260684Skaiw		return (DW_DLV_NO_ENTRY);
719260684Skaiw	}
720260684Skaiw
721260684Skaiw	return (DW_DLV_OK);
722260684Skaiw}
723260684Skaiw
724260684Skaiwint
725260684Skaiwdwarf_get_INL_name(unsigned inl, const char **s)
726260684Skaiw{
727260684Skaiw
728260684Skaiw	assert(s != NULL);
729260684Skaiw
730260684Skaiw	switch (inl) {
731260684Skaiw	case DW_INL_not_inlined:
732260684Skaiw		*s = "DW_INL_not_inlined"; break;
733260684Skaiw	case DW_INL_inlined:
734260684Skaiw		*s = "DW_INL_inlined"; break;
735260684Skaiw	case DW_INL_declared_not_inlined:
736260684Skaiw		*s = "DW_INL_declared_not_inlined"; break;
737260684Skaiw	case DW_INL_declared_inlined:
738260684Skaiw		*s = "DW_INL_declared_inlined"; break;
739260684Skaiw	default:
740260684Skaiw		return (DW_DLV_NO_ENTRY);
741260684Skaiw	}
742260684Skaiw
743260684Skaiw	return (DW_DLV_OK);
744260684Skaiw}
745260684Skaiw
746260684Skaiwint
747260684Skaiwdwarf_get_LANG_name(unsigned lang, const char **s)
748260684Skaiw{
749260684Skaiw
750260684Skaiw	assert(s != NULL);
751260684Skaiw
752260684Skaiw	switch (lang) {
753260684Skaiw	case DW_LANG_C89:
754260684Skaiw		*s = "DW_LANG_C89"; break;
755260684Skaiw	case DW_LANG_C:
756260684Skaiw		*s = "DW_LANG_C"; break;
757260684Skaiw	case DW_LANG_Ada83:
758260684Skaiw		*s = "DW_LANG_Ada83"; break;
759260684Skaiw	case DW_LANG_C_plus_plus:
760260684Skaiw		*s = "DW_LANG_C_plus_plus"; break;
761260684Skaiw	case DW_LANG_Cobol74:
762260684Skaiw		*s = "DW_LANG_Cobol74"; break;
763260684Skaiw	case DW_LANG_Cobol85:
764260684Skaiw		*s = "DW_LANG_Cobol85"; break;
765260684Skaiw	case DW_LANG_Fortran77:
766260684Skaiw		*s = "DW_LANG_Fortran77"; break;
767260684Skaiw	case DW_LANG_Fortran90:
768260684Skaiw		*s = "DW_LANG_Fortran90"; break;
769260684Skaiw	case DW_LANG_Pascal83:
770260684Skaiw		*s = "DW_LANG_Pascal83"; break;
771260684Skaiw	case DW_LANG_Modula2:
772260684Skaiw		*s = "DW_LANG_Modula2"; break;
773260684Skaiw	case DW_LANG_Java:
774260684Skaiw		*s = "DW_LANG_Java"; break;
775260684Skaiw	case DW_LANG_C99:
776260684Skaiw		*s = "DW_LANG_C99"; break;
777260684Skaiw	case DW_LANG_Ada95:
778260684Skaiw		*s = "DW_LANG_Ada95"; break;
779260684Skaiw	case DW_LANG_Fortran95:
780260684Skaiw		*s = "DW_LANG_Fortran95"; break;
781260684Skaiw	case DW_LANG_PLI:
782260684Skaiw		*s = "DW_LANG_PLI"; break;
783260684Skaiw	case DW_LANG_ObjC:
784260684Skaiw		*s = "DW_LANG_ObjC"; break;
785260684Skaiw	case DW_LANG_ObjC_plus_plus:
786260684Skaiw		*s = "DW_LANG_ObjC_plus_plus"; break;
787260684Skaiw	case DW_LANG_UPC:
788260684Skaiw		*s = "DW_LANG_UPC"; break;
789260684Skaiw	case DW_LANG_D:
790260684Skaiw		*s = "DW_LANG_D"; break;
791335630Smarkj	case DW_LANG_Python:
792335630Smarkj		*s = "DW_LANG_Python"; break;
793335630Smarkj	case DW_LANG_OpenCL:
794335630Smarkj		*s = "DW_LANG_OpenCL"; break;
795335630Smarkj	case DW_LANG_Go:
796335630Smarkj		*s = "DW_LANG_Go"; break;
797335630Smarkj	case DW_LANG_Modula3:
798335630Smarkj		*s = "DW_LANG_Modula3"; break;
799335630Smarkj	case DW_LANG_Haskell:
800335630Smarkj		*s = "DW_LANG_Haskell"; break;
801335630Smarkj	case DW_LANG_C_plus_plus_03:
802335630Smarkj		*s = "DW_LANG_C_plus_plus_03"; break;
803335630Smarkj	case DW_LANG_C_plus_plus_11:
804335630Smarkj		*s = "DW_LANG_C_plus_plus_11"; break;
805335630Smarkj	case DW_LANG_OCaml:
806335630Smarkj		*s = "DW_LANG_OCaml"; break;
807335630Smarkj	case DW_LANG_Rust:
808335630Smarkj		*s = "DW_LANG_Rust"; break;
809335630Smarkj	case DW_LANG_C11:
810335630Smarkj		*s = "DW_LANG_C11"; break;
811335630Smarkj	case DW_LANG_Swift:
812335630Smarkj		*s = "DW_LANG_Swift"; break;
813335630Smarkj	case DW_LANG_Julia:
814335630Smarkj		*s = "DW_LANG_Julia"; break;
815335630Smarkj	case DW_LANG_Dylan:
816335630Smarkj		*s = "DW_LANG_Dylan"; break;
817335630Smarkj	case DW_LANG_C_plus_plus_14:
818335630Smarkj		*s = "DW_LANG_C_plus_plus_14"; break;
819335630Smarkj	case DW_LANG_Fortran03:
820335630Smarkj		*s = "DW_LANG_Fortran03"; break;
821335630Smarkj	case DW_LANG_Fortran08:
822335630Smarkj		*s = "DW_LANG_Fortran08"; break;
823335630Smarkj	case DW_LANG_RenderScript:
824335630Smarkj		*s = "DW_LANG_RenderScript"; break;
825335630Smarkj	case DW_LANG_BLISS:
826335630Smarkj		*s = "DW_LANG_BLISS"; break;
827260684Skaiw	case DW_LANG_lo_user:
828260684Skaiw		*s = "DW_LANG_lo_user"; break;
829317623Semaste	case DW_LANG_Mips_Assembler:
830317623Semaste		*s = "DW_LANG_Mips_Assembler"; break;
831260684Skaiw	case DW_LANG_hi_user:
832260684Skaiw		*s = "DW_LANG_hi_user"; break;
833260684Skaiw	default:
834260684Skaiw		return (DW_DLV_NO_ENTRY);
835260684Skaiw	}
836260684Skaiw
837260684Skaiw	return (DW_DLV_OK);
838260684Skaiw}
839260684Skaiw
840260684Skaiwint
841260684Skaiwdwarf_get_LNE_name(unsigned lne, const char **s)
842260684Skaiw{
843260684Skaiw
844260684Skaiw	assert(s != NULL);
845260684Skaiw
846260684Skaiw	switch (lne) {
847260684Skaiw	case DW_LNE_end_sequence:
848260684Skaiw		*s = "DW_LNE_end_sequence"; break;
849260684Skaiw	case DW_LNE_set_address:
850260684Skaiw		*s = "DW_LNE_set_address"; break;
851260684Skaiw	case DW_LNE_define_file:
852260684Skaiw		*s = "DW_LNE_define_file"; break;
853260684Skaiw	case DW_LNE_lo_user:
854260684Skaiw		*s = "DW_LNE_lo_user"; break;
855260684Skaiw	case DW_LNE_hi_user:
856260684Skaiw		*s = "DW_LNE_hi_user"; break;
857260684Skaiw	default:
858260684Skaiw		return (DW_DLV_NO_ENTRY);
859260684Skaiw	}
860260684Skaiw
861260684Skaiw	return (DW_DLV_OK);
862260684Skaiw}
863260684Skaiw
864260684Skaiwint
865260684Skaiwdwarf_get_LNS_name(unsigned lns, const char **s)
866260684Skaiw{
867260684Skaiw
868260684Skaiw	assert(s != NULL);
869260684Skaiw
870260684Skaiw	switch (lns) {
871260684Skaiw	case DW_LNS_copy:
872260684Skaiw		*s = "DW_LNS_copy"; break;
873260684Skaiw	case DW_LNS_advance_pc:
874260684Skaiw		*s = "DW_LNS_advance_pc"; break;
875260684Skaiw	case DW_LNS_advance_line:
876260684Skaiw		*s = "DW_LNS_advance_line"; break;
877260684Skaiw	case DW_LNS_set_file:
878260684Skaiw		*s = "DW_LNS_set_file"; break;
879260684Skaiw	case DW_LNS_set_column:
880260684Skaiw		*s = "DW_LNS_set_column"; break;
881260684Skaiw	case DW_LNS_negate_stmt:
882260684Skaiw		*s = "DW_LNS_negate_stmt"; break;
883260684Skaiw	case DW_LNS_set_basic_block:
884260684Skaiw		*s = "DW_LNS_set_basic_block"; break;
885260684Skaiw	case DW_LNS_const_add_pc:
886260684Skaiw		*s = "DW_LNS_const_add_pc"; break;
887260684Skaiw	case DW_LNS_fixed_advance_pc:
888260684Skaiw		*s = "DW_LNS_fixed_advance_pc"; break;
889260684Skaiw	case DW_LNS_set_prologue_end:
890260684Skaiw		*s = "DW_LNS_set_prologue_end"; break;
891260684Skaiw	case DW_LNS_set_epilogue_begin:
892260684Skaiw		*s = "DW_LNS_set_epilogue_begin"; break;
893260684Skaiw	case DW_LNS_set_isa:
894260684Skaiw		*s = "DW_LNS_set_isa"; break;
895260684Skaiw	default:
896260684Skaiw		return (DW_DLV_NO_ENTRY);
897260684Skaiw	}
898260684Skaiw
899260684Skaiw	return (DW_DLV_OK);
900260684Skaiw}
901260684Skaiw
902260684Skaiwint
903260684Skaiwdwarf_get_MACINFO_name(unsigned mi, const char **s)
904260684Skaiw{
905260684Skaiw
906260684Skaiw	assert(s != NULL);
907260684Skaiw
908260684Skaiw	switch (mi) {
909260684Skaiw	case DW_MACINFO_define:
910260684Skaiw		*s = "DW_MACINFO_define"; break;
911260684Skaiw	case DW_MACINFO_undef:
912260684Skaiw		*s = "DW_MACINFO_undef"; break;
913260684Skaiw	case DW_MACINFO_start_file:
914260684Skaiw		*s = "DW_MACINFO_start_file"; break;
915260684Skaiw	case DW_MACINFO_end_file:
916260684Skaiw		*s = "DW_MACINFO_end_file"; break;
917260684Skaiw	case DW_MACINFO_vendor_ext:
918260684Skaiw		*s = "DW_MACINFO_vendor_ext"; break;
919260684Skaiw	default:
920260684Skaiw		return (DW_DLV_NO_ENTRY);
921260684Skaiw	}
922260684Skaiw
923260684Skaiw	return (DW_DLV_OK);
924260684Skaiw}
925260684Skaiw
926260684Skaiwint
927260684Skaiwdwarf_get_OP_name(unsigned op, const char **s)
928260684Skaiw{
929260684Skaiw
930260684Skaiw	assert(s != NULL);
931260684Skaiw
932260684Skaiw	switch (op) {
933260684Skaiw	case DW_OP_deref:
934260684Skaiw		*s = "DW_OP_deref"; break;
935260684Skaiw	case DW_OP_reg0:
936260684Skaiw		*s = "DW_OP_reg0"; break;
937260684Skaiw	case DW_OP_reg1:
938260684Skaiw		*s = "DW_OP_reg1"; break;
939260684Skaiw	case DW_OP_reg2:
940260684Skaiw		*s = "DW_OP_reg2"; break;
941260684Skaiw	case DW_OP_reg3:
942260684Skaiw		*s = "DW_OP_reg3"; break;
943260684Skaiw	case DW_OP_reg4:
944260684Skaiw		*s = "DW_OP_reg4"; break;
945260684Skaiw	case DW_OP_reg5:
946260684Skaiw		*s = "DW_OP_reg5"; break;
947260684Skaiw	case DW_OP_reg6:
948260684Skaiw		*s = "DW_OP_reg6"; break;
949260684Skaiw	case DW_OP_reg7:
950260684Skaiw		*s = "DW_OP_reg7"; break;
951260684Skaiw	case DW_OP_reg8:
952260684Skaiw		*s = "DW_OP_reg8"; break;
953260684Skaiw	case DW_OP_reg9:
954260684Skaiw		*s = "DW_OP_reg9"; break;
955260684Skaiw	case DW_OP_reg10:
956260684Skaiw		*s = "DW_OP_reg10"; break;
957260684Skaiw	case DW_OP_reg11:
958260684Skaiw		*s = "DW_OP_reg11"; break;
959260684Skaiw	case DW_OP_reg12:
960260684Skaiw		*s = "DW_OP_reg12"; break;
961260684Skaiw	case DW_OP_reg13:
962260684Skaiw		*s = "DW_OP_reg13"; break;
963260684Skaiw	case DW_OP_reg14:
964260684Skaiw		*s = "DW_OP_reg14"; break;
965260684Skaiw	case DW_OP_reg15:
966260684Skaiw		*s = "DW_OP_reg15"; break;
967260684Skaiw	case DW_OP_reg16:
968260684Skaiw		*s = "DW_OP_reg16"; break;
969260684Skaiw	case DW_OP_reg17:
970260684Skaiw		*s = "DW_OP_reg17"; break;
971260684Skaiw	case DW_OP_reg18:
972260684Skaiw		*s = "DW_OP_reg18"; break;
973260684Skaiw	case DW_OP_reg19:
974260684Skaiw		*s = "DW_OP_reg19"; break;
975260684Skaiw	case DW_OP_reg20:
976260684Skaiw		*s = "DW_OP_reg20"; break;
977260684Skaiw	case DW_OP_reg21:
978260684Skaiw		*s = "DW_OP_reg21"; break;
979260684Skaiw	case DW_OP_reg22:
980260684Skaiw		*s = "DW_OP_reg22"; break;
981260684Skaiw	case DW_OP_reg23:
982260684Skaiw		*s = "DW_OP_reg23"; break;
983260684Skaiw	case DW_OP_reg24:
984260684Skaiw		*s = "DW_OP_reg24"; break;
985260684Skaiw	case DW_OP_reg25:
986260684Skaiw		*s = "DW_OP_reg25"; break;
987260684Skaiw	case DW_OP_reg26:
988260684Skaiw		*s = "DW_OP_reg26"; break;
989260684Skaiw	case DW_OP_reg27:
990260684Skaiw		*s = "DW_OP_reg27"; break;
991260684Skaiw	case DW_OP_reg28:
992260684Skaiw		*s = "DW_OP_reg28"; break;
993260684Skaiw	case DW_OP_reg29:
994260684Skaiw		*s = "DW_OP_reg29"; break;
995260684Skaiw	case DW_OP_reg30:
996260684Skaiw		*s = "DW_OP_reg30"; break;
997260684Skaiw	case DW_OP_reg31:
998260684Skaiw		*s = "DW_OP_reg31"; break;
999260684Skaiw	case DW_OP_lit0:
1000260684Skaiw		*s = "DW_OP_lit0"; break;
1001260684Skaiw	case DW_OP_lit1:
1002260684Skaiw		*s = "DW_OP_lit1"; break;
1003260684Skaiw	case DW_OP_lit2:
1004260684Skaiw		*s = "DW_OP_lit2"; break;
1005260684Skaiw	case DW_OP_lit3:
1006260684Skaiw		*s = "DW_OP_lit3"; break;
1007260684Skaiw	case DW_OP_lit4:
1008260684Skaiw		*s = "DW_OP_lit4"; break;
1009260684Skaiw	case DW_OP_lit5:
1010260684Skaiw		*s = "DW_OP_lit5"; break;
1011260684Skaiw	case DW_OP_lit6:
1012260684Skaiw		*s = "DW_OP_lit6"; break;
1013260684Skaiw	case DW_OP_lit7:
1014260684Skaiw		*s = "DW_OP_lit7"; break;
1015260684Skaiw	case DW_OP_lit8:
1016260684Skaiw		*s = "DW_OP_lit8"; break;
1017260684Skaiw	case DW_OP_lit9:
1018260684Skaiw		*s = "DW_OP_lit9"; break;
1019260684Skaiw	case DW_OP_lit10:
1020260684Skaiw		*s = "DW_OP_lit10"; break;
1021260684Skaiw	case DW_OP_lit11:
1022260684Skaiw		*s = "DW_OP_lit11"; break;
1023260684Skaiw	case DW_OP_lit12:
1024260684Skaiw		*s = "DW_OP_lit12"; break;
1025260684Skaiw	case DW_OP_lit13:
1026260684Skaiw		*s = "DW_OP_lit13"; break;
1027260684Skaiw	case DW_OP_lit14:
1028260684Skaiw		*s = "DW_OP_lit14"; break;
1029260684Skaiw	case DW_OP_lit15:
1030260684Skaiw		*s = "DW_OP_lit15"; break;
1031260684Skaiw	case DW_OP_lit16:
1032260684Skaiw		*s = "DW_OP_lit16"; break;
1033260684Skaiw	case DW_OP_lit17:
1034260684Skaiw		*s = "DW_OP_lit17"; break;
1035260684Skaiw	case DW_OP_lit18:
1036260684Skaiw		*s = "DW_OP_lit18"; break;
1037260684Skaiw	case DW_OP_lit19:
1038260684Skaiw		*s = "DW_OP_lit19"; break;
1039260684Skaiw	case DW_OP_lit20:
1040260684Skaiw		*s = "DW_OP_lit20"; break;
1041260684Skaiw	case DW_OP_lit21:
1042260684Skaiw		*s = "DW_OP_lit21"; break;
1043260684Skaiw	case DW_OP_lit22:
1044260684Skaiw		*s = "DW_OP_lit22"; break;
1045260684Skaiw	case DW_OP_lit23:
1046260684Skaiw		*s = "DW_OP_lit23"; break;
1047260684Skaiw	case DW_OP_lit24:
1048260684Skaiw		*s = "DW_OP_lit24"; break;
1049260684Skaiw	case DW_OP_lit25:
1050260684Skaiw		*s = "DW_OP_lit25"; break;
1051260684Skaiw	case DW_OP_lit26:
1052260684Skaiw		*s = "DW_OP_lit26"; break;
1053260684Skaiw	case DW_OP_lit27:
1054260684Skaiw		*s = "DW_OP_lit27"; break;
1055260684Skaiw	case DW_OP_lit28:
1056260684Skaiw		*s = "DW_OP_lit28"; break;
1057260684Skaiw	case DW_OP_lit29:
1058260684Skaiw		*s = "DW_OP_lit29"; break;
1059260684Skaiw	case DW_OP_lit30:
1060260684Skaiw		*s = "DW_OP_lit30"; break;
1061260684Skaiw	case DW_OP_lit31:
1062260684Skaiw		*s = "DW_OP_lit31"; break;
1063260684Skaiw	case DW_OP_dup:
1064260684Skaiw		*s = "DW_OP_dup"; break;
1065260684Skaiw	case DW_OP_drop:
1066260684Skaiw		*s = "DW_OP_drop"; break;
1067260684Skaiw	case DW_OP_over:
1068260684Skaiw		*s = "DW_OP_over"; break;
1069260684Skaiw	case DW_OP_swap:
1070260684Skaiw		*s = "DW_OP_swap"; break;
1071260684Skaiw	case DW_OP_rot:
1072260684Skaiw		*s = "DW_OP_rot"; break;
1073260684Skaiw	case DW_OP_xderef:
1074260684Skaiw		*s = "DW_OP_xderef"; break;
1075260684Skaiw	case DW_OP_abs:
1076260684Skaiw		*s = "DW_OP_abs"; break;
1077260684Skaiw	case DW_OP_and:
1078260684Skaiw		*s = "DW_OP_and"; break;
1079260684Skaiw	case DW_OP_div:
1080260684Skaiw		*s = "DW_OP_div"; break;
1081260684Skaiw	case DW_OP_minus:
1082260684Skaiw		*s = "DW_OP_minus"; break;
1083260684Skaiw	case DW_OP_mod:
1084260684Skaiw		*s = "DW_OP_mod"; break;
1085260684Skaiw	case DW_OP_mul:
1086260684Skaiw		*s = "DW_OP_mul"; break;
1087260684Skaiw	case DW_OP_neg:
1088260684Skaiw		*s = "DW_OP_neg"; break;
1089260684Skaiw	case DW_OP_not:
1090260684Skaiw		*s = "DW_OP_not"; break;
1091260684Skaiw	case DW_OP_or:
1092260684Skaiw		*s = "DW_OP_or"; break;
1093260684Skaiw	case DW_OP_plus:
1094260684Skaiw		*s = "DW_OP_plus"; break;
1095260684Skaiw	case DW_OP_shl:
1096260684Skaiw		*s = "DW_OP_shl"; break;
1097260684Skaiw	case DW_OP_shr:
1098260684Skaiw		*s = "DW_OP_shr"; break;
1099260684Skaiw	case DW_OP_shra:
1100260684Skaiw		*s = "DW_OP_shra"; break;
1101260684Skaiw	case DW_OP_xor:
1102260684Skaiw		*s = "DW_OP_xor"; break;
1103260684Skaiw	case DW_OP_eq:
1104260684Skaiw		*s = "DW_OP_eq"; break;
1105260684Skaiw	case DW_OP_ge:
1106260684Skaiw		*s = "DW_OP_ge"; break;
1107260684Skaiw	case DW_OP_gt:
1108260684Skaiw		*s = "DW_OP_gt"; break;
1109260684Skaiw	case DW_OP_le:
1110260684Skaiw		*s = "DW_OP_le"; break;
1111260684Skaiw	case DW_OP_lt:
1112260684Skaiw		*s = "DW_OP_lt"; break;
1113260684Skaiw	case DW_OP_ne:
1114260684Skaiw		*s = "DW_OP_ne"; break;
1115260684Skaiw	case DW_OP_nop:
1116260684Skaiw		*s = "DW_OP_nop"; break;
1117260684Skaiw	case DW_OP_const1u:
1118260684Skaiw		*s = "DW_OP_const1u"; break;
1119260684Skaiw	case DW_OP_const1s:
1120260684Skaiw		*s = "DW_OP_const1s"; break;
1121260684Skaiw	case DW_OP_pick:
1122260684Skaiw		*s = "DW_OP_pick"; break;
1123260684Skaiw	case DW_OP_deref_size:
1124260684Skaiw		*s = "DW_OP_deref_size"; break;
1125260684Skaiw	case DW_OP_xderef_size:
1126260684Skaiw		*s = "DW_OP_xderef_size"; break;
1127260684Skaiw	case DW_OP_const2u:
1128260684Skaiw		*s = "DW_OP_const2u"; break;
1129260684Skaiw	case DW_OP_const2s:
1130260684Skaiw		*s = "DW_OP_const2s"; break;
1131260684Skaiw	case DW_OP_bra:
1132260684Skaiw		*s = "DW_OP_bra"; break;
1133260684Skaiw	case DW_OP_skip:
1134260684Skaiw		*s = "DW_OP_skip"; break;
1135260684Skaiw	case DW_OP_const4u:
1136260684Skaiw		*s = "DW_OP_const4u"; break;
1137260684Skaiw	case DW_OP_const4s:
1138260684Skaiw		*s = "DW_OP_const4s"; break;
1139260684Skaiw	case DW_OP_const8u:
1140260684Skaiw		*s = "DW_OP_const8u"; break;
1141260684Skaiw	case DW_OP_const8s:
1142260684Skaiw		*s = "DW_OP_const8s"; break;
1143260684Skaiw	case DW_OP_constu:
1144260684Skaiw		*s = "DW_OP_constu"; break;
1145260684Skaiw	case DW_OP_plus_uconst:
1146260684Skaiw		*s = "DW_OP_plus_uconst"; break;
1147260684Skaiw	case DW_OP_regx:
1148260684Skaiw		*s = "DW_OP_regx"; break;
1149260684Skaiw	case DW_OP_piece:
1150260684Skaiw		*s = "DW_OP_piece"; break;
1151260684Skaiw	case DW_OP_consts:
1152260684Skaiw		*s = "DW_OP_consts"; break;
1153260684Skaiw	case DW_OP_breg0:
1154260684Skaiw		*s = "DW_OP_breg0"; break;
1155260684Skaiw	case DW_OP_breg1:
1156260684Skaiw		*s = "DW_OP_breg1"; break;
1157260684Skaiw	case DW_OP_breg2:
1158260684Skaiw		*s = "DW_OP_breg2"; break;
1159260684Skaiw	case DW_OP_breg3:
1160260684Skaiw		*s = "DW_OP_breg3"; break;
1161260684Skaiw	case DW_OP_breg4:
1162260684Skaiw		*s = "DW_OP_breg4"; break;
1163260684Skaiw	case DW_OP_breg5:
1164260684Skaiw		*s = "DW_OP_breg5"; break;
1165260684Skaiw	case DW_OP_breg6:
1166260684Skaiw		*s = "DW_OP_breg6"; break;
1167260684Skaiw	case DW_OP_breg7:
1168260684Skaiw		*s = "DW_OP_breg7"; break;
1169260684Skaiw	case DW_OP_breg8:
1170260684Skaiw		*s = "DW_OP_breg8"; break;
1171260684Skaiw	case DW_OP_breg9:
1172260684Skaiw		*s = "DW_OP_breg9"; break;
1173260684Skaiw	case DW_OP_breg10:
1174260684Skaiw		*s = "DW_OP_breg10"; break;
1175260684Skaiw	case DW_OP_breg11:
1176260684Skaiw		*s = "DW_OP_breg11"; break;
1177260684Skaiw	case DW_OP_breg12:
1178260684Skaiw		*s = "DW_OP_breg12"; break;
1179260684Skaiw	case DW_OP_breg13:
1180260684Skaiw		*s = "DW_OP_breg13"; break;
1181260684Skaiw	case DW_OP_breg14:
1182260684Skaiw		*s = "DW_OP_breg14"; break;
1183260684Skaiw	case DW_OP_breg15:
1184260684Skaiw		*s = "DW_OP_breg15"; break;
1185260684Skaiw	case DW_OP_breg16:
1186260684Skaiw		*s = "DW_OP_breg16"; break;
1187260684Skaiw	case DW_OP_breg17:
1188260684Skaiw		*s = "DW_OP_breg17"; break;
1189260684Skaiw	case DW_OP_breg18:
1190260684Skaiw		*s = "DW_OP_breg18"; break;
1191260684Skaiw	case DW_OP_breg19:
1192260684Skaiw		*s = "DW_OP_breg19"; break;
1193260684Skaiw	case DW_OP_breg20:
1194260684Skaiw		*s = "DW_OP_breg20"; break;
1195260684Skaiw	case DW_OP_breg21:
1196260684Skaiw		*s = "DW_OP_breg21"; break;
1197260684Skaiw	case DW_OP_breg22:
1198260684Skaiw		*s = "DW_OP_breg22"; break;
1199260684Skaiw	case DW_OP_breg23:
1200260684Skaiw		*s = "DW_OP_breg23"; break;
1201260684Skaiw	case DW_OP_breg24:
1202260684Skaiw		*s = "DW_OP_breg24"; break;
1203260684Skaiw	case DW_OP_breg25:
1204260684Skaiw		*s = "DW_OP_breg25"; break;
1205260684Skaiw	case DW_OP_breg26:
1206260684Skaiw		*s = "DW_OP_breg26"; break;
1207260684Skaiw	case DW_OP_breg27:
1208260684Skaiw		*s = "DW_OP_breg27"; break;
1209260684Skaiw	case DW_OP_breg28:
1210260684Skaiw		*s = "DW_OP_breg28"; break;
1211260684Skaiw	case DW_OP_breg29:
1212260684Skaiw		*s = "DW_OP_breg29"; break;
1213260684Skaiw	case DW_OP_breg30:
1214260684Skaiw		*s = "DW_OP_breg30"; break;
1215260684Skaiw	case DW_OP_breg31:
1216260684Skaiw		*s = "DW_OP_breg31"; break;
1217260684Skaiw	case DW_OP_fbreg:
1218260684Skaiw		*s = "DW_OP_fbreg"; break;
1219260684Skaiw	case DW_OP_bregx:
1220260684Skaiw		*s = "DW_OP_bregx"; break;
1221260684Skaiw	case DW_OP_addr:
1222260684Skaiw		*s = "DW_OP_addr"; break;
1223260684Skaiw	case DW_OP_push_object_address:
1224260684Skaiw		*s = "DW_OP_push_object_address"; break;
1225260684Skaiw	case DW_OP_call2:
1226260684Skaiw		*s = "DW_OP_call2"; break;
1227260684Skaiw	case DW_OP_call4:
1228260684Skaiw		*s = "DW_OP_call4"; break;
1229260684Skaiw	case DW_OP_call_ref:
1230260684Skaiw		*s = "DW_OP_call_ref"; break;
1231260684Skaiw	case DW_OP_form_tls_address:
1232260684Skaiw		*s = "DW_OP_form_tls_address"; break;
1233260684Skaiw	case DW_OP_call_frame_cfa:
1234260684Skaiw		*s = "DW_OP_call_frame_cfa"; break;
1235260684Skaiw	case DW_OP_bit_piece:
1236260684Skaiw		*s = "DW_OP_bit_piece"; break;
1237260684Skaiw	case DW_OP_implicit_value:
1238260684Skaiw		*s = "DW_OP_implicit_value"; break;
1239260684Skaiw	case DW_OP_stack_value:
1240260684Skaiw		*s = "DW_OP_stack_value"; break;
1241260684Skaiw	case DW_OP_GNU_push_tls_address:
1242260684Skaiw		*s = "DW_OP_GNU_push_tls_address"; break;
1243276371Semaste	case DW_OP_GNU_uninit:
1244276371Semaste		*s = "DW_OP_GNU_uninit"; break;
1245276371Semaste	case DW_OP_GNU_encoded_addr:
1246276371Semaste		*s = "DW_OP_GNU_encoded_addr"; break;
1247276371Semaste	case DW_OP_GNU_implicit_pointer:
1248276371Semaste		*s = "DW_OP_GNU_implicit_pointer"; break;
1249276371Semaste	case DW_OP_GNU_entry_value:
1250276371Semaste		*s = "DW_OP_GNU_entry_value"; break;
1251276371Semaste	case DW_OP_GNU_const_type:
1252276371Semaste		*s = "DW_OP_GNU_const_type"; break;
1253276371Semaste	case DW_OP_GNU_regval_type:
1254276371Semaste		*s = "DW_OP_GNU_regval_type"; break;
1255276371Semaste	case DW_OP_GNU_deref_type:
1256276371Semaste		*s = "DW_OP_GNU_deref_type"; break;
1257276371Semaste	case DW_OP_GNU_convert:
1258276371Semaste		*s = "DW_OP_GNU_convert"; break;
1259276371Semaste	case DW_OP_GNU_reinterpret:
1260276371Semaste		*s = "DW_OP_GNU_reinterpret"; break;
1261276371Semaste	case DW_OP_GNU_parameter_ref:
1262276371Semaste		*s = "DW_OP_GNU_parameter_ref"; break;
1263276371Semaste	case DW_OP_GNU_addr_index:
1264276371Semaste		*s = "DW_OP_GNU_addr_index"; break;
1265276371Semaste	case DW_OP_GNU_const_index:
1266276371Semaste		*s = "DW_OP_GNU_const_index"; break;
1267260684Skaiw	default:
1268260684Skaiw		return (DW_DLV_NO_ENTRY);
1269260684Skaiw	}
1270260684Skaiw
1271260684Skaiw	return (DW_DLV_OK);
1272260684Skaiw}
1273260684Skaiw
1274260684Skaiwint
1275260684Skaiwdwarf_get_ORD_name(unsigned ord, const char **s)
1276260684Skaiw{
1277260684Skaiw
1278260684Skaiw	assert(s != NULL);
1279260684Skaiw
1280260684Skaiw	switch (ord) {
1281260684Skaiw	case DW_ORD_row_major:
1282260684Skaiw		*s = "DW_ORD_row_major"; break;
1283260684Skaiw	case DW_ORD_col_major:
1284260684Skaiw		*s = "DW_ORD_col_major"; break;
1285260684Skaiw	default:
1286260684Skaiw		return (DW_DLV_NO_ENTRY);
1287260684Skaiw	}
1288260684Skaiw
1289260684Skaiw	return (DW_DLV_OK);
1290260684Skaiw}
1291260684Skaiw
1292260684Skaiwint
1293260684Skaiwdwarf_get_TAG_name(unsigned tag, const char **s)
1294260684Skaiw{
1295260684Skaiw
1296260684Skaiw	assert(s != NULL);
1297260684Skaiw
1298260684Skaiw	switch (tag) {
1299260684Skaiw	case DW_TAG_access_declaration:
1300260684Skaiw		*s = "DW_TAG_access_declaration"; break;
1301260684Skaiw	case DW_TAG_array_type:
1302260684Skaiw		*s = "DW_TAG_array_type"; break;
1303260684Skaiw	case DW_TAG_base_type:
1304260684Skaiw		*s = "DW_TAG_base_type"; break;
1305260684Skaiw	case DW_TAG_catch_block:
1306260684Skaiw		*s = "DW_TAG_catch_block"; break;
1307260684Skaiw	case DW_TAG_class_type:
1308260684Skaiw		*s = "DW_TAG_class_type"; break;
1309260684Skaiw	case DW_TAG_common_block:
1310260684Skaiw		*s = "DW_TAG_common_block"; break;
1311260684Skaiw	case DW_TAG_common_inclusion:
1312260684Skaiw		*s = "DW_TAG_common_inclusion"; break;
1313260684Skaiw	case DW_TAG_compile_unit:
1314260684Skaiw		*s = "DW_TAG_compile_unit"; break;
1315260684Skaiw	case DW_TAG_condition:
1316260684Skaiw		*s = "DW_TAG_condition"; break;
1317260684Skaiw	case DW_TAG_const_type:
1318260684Skaiw		*s = "DW_TAG_const_type"; break;
1319260684Skaiw	case DW_TAG_constant:
1320260684Skaiw		*s = "DW_TAG_constant"; break;
1321260684Skaiw	case DW_TAG_dwarf_procedure:
1322260684Skaiw		*s = "DW_TAG_dwarf_procedure"; break;
1323260684Skaiw	case DW_TAG_entry_point:
1324260684Skaiw		*s = "DW_TAG_entry_point"; break;
1325260684Skaiw	case DW_TAG_enumeration_type:
1326260684Skaiw		*s = "DW_TAG_enumeration_type"; break;
1327260684Skaiw	case DW_TAG_enumerator:
1328260684Skaiw		*s = "DW_TAG_enumerator"; break;
1329260684Skaiw	case DW_TAG_formal_parameter:
1330260684Skaiw		*s = "DW_TAG_formal_parameter"; break;
1331260684Skaiw	case DW_TAG_friend:
1332260684Skaiw		*s = "DW_TAG_friend"; break;
1333260684Skaiw	case DW_TAG_imported_declaration:
1334260684Skaiw		*s = "DW_TAG_imported_declaration"; break;
1335260684Skaiw	case DW_TAG_imported_module:
1336260684Skaiw		*s = "DW_TAG_imported_module"; break;
1337260684Skaiw	case DW_TAG_imported_unit:
1338260684Skaiw		*s = "DW_TAG_imported_unit"; break;
1339260684Skaiw	case DW_TAG_inheritance:
1340260684Skaiw		*s = "DW_TAG_inheritance"; break;
1341260684Skaiw	case DW_TAG_inlined_subroutine:
1342260684Skaiw		*s = "DW_TAG_inlined_subroutine"; break;
1343260684Skaiw	case DW_TAG_interface_type:
1344260684Skaiw		*s = "DW_TAG_interface_type"; break;
1345260684Skaiw	case DW_TAG_label:
1346260684Skaiw		*s = "DW_TAG_label"; break;
1347260684Skaiw	case DW_TAG_lexical_block:
1348260684Skaiw		*s = "DW_TAG_lexical_block"; break;
1349260684Skaiw	case DW_TAG_member:
1350260684Skaiw		*s = "DW_TAG_member"; break;
1351260684Skaiw	case DW_TAG_module:
1352260684Skaiw		*s = "DW_TAG_module"; break;
1353260684Skaiw	case DW_TAG_namelist:
1354260684Skaiw		*s = "DW_TAG_namelist"; break;
1355260684Skaiw	case DW_TAG_namelist_item:
1356260684Skaiw		*s = "DW_TAG_namelist_item"; break;
1357260684Skaiw	case DW_TAG_namespace:
1358260684Skaiw		*s = "DW_TAG_namespace"; break;
1359260684Skaiw	case DW_TAG_packed_type:
1360260684Skaiw		*s = "DW_TAG_packed_type"; break;
1361260684Skaiw	case DW_TAG_partial_unit:
1362260684Skaiw		*s = "DW_TAG_partial_unit"; break;
1363260684Skaiw	case DW_TAG_pointer_type:
1364260684Skaiw		*s = "DW_TAG_pointer_type"; break;
1365260684Skaiw	case DW_TAG_ptr_to_member_type:
1366260684Skaiw		*s = "DW_TAG_ptr_to_member_type"; break;
1367260684Skaiw	case DW_TAG_reference_type:
1368260684Skaiw		*s = "DW_TAG_reference_type"; break;
1369260684Skaiw	case DW_TAG_restrict_type:
1370260684Skaiw		*s = "DW_TAG_restrict_type"; break;
1371260684Skaiw	case DW_TAG_rvalue_reference_type:
1372260684Skaiw		*s = "DW_TAG_rvalue_reference_type"; break;
1373260684Skaiw	case DW_TAG_set_type:
1374260684Skaiw		*s = "DW_TAG_set_type"; break;
1375260684Skaiw	case DW_TAG_shared_type:
1376260684Skaiw		*s = "DW_TAG_shared_type"; break;
1377260684Skaiw	case DW_TAG_string_type:
1378260684Skaiw		*s = "DW_TAG_string_type"; break;
1379260684Skaiw	case DW_TAG_structure_type:
1380260684Skaiw		*s = "DW_TAG_structure_type"; break;
1381260684Skaiw	case DW_TAG_subprogram:
1382260684Skaiw		*s = "DW_TAG_subprogram"; break;
1383260684Skaiw	case DW_TAG_subrange_type:
1384260684Skaiw		*s = "DW_TAG_subrange_type"; break;
1385260684Skaiw	case DW_TAG_subroutine_type:
1386260684Skaiw		*s = "DW_TAG_subroutine_type"; break;
1387260684Skaiw	case DW_TAG_template_alias:
1388260684Skaiw		*s = "DW_TAG_template_alias"; break;
1389260684Skaiw	case DW_TAG_template_type_parameter:
1390260684Skaiw		*s = "DW_TAG_template_type_parameter"; break;
1391260684Skaiw	case DW_TAG_template_value_parameter:
1392260684Skaiw		*s = "DW_TAG_template_value_parameter"; break;
1393260684Skaiw	case DW_TAG_thrown_type:
1394260684Skaiw		*s = "DW_TAG_thrown_type"; break;
1395260684Skaiw	case DW_TAG_try_block:
1396260684Skaiw		*s = "DW_TAG_try_block"; break;
1397260684Skaiw	case DW_TAG_type_unit:
1398260684Skaiw		*s = "DW_TAG_type_unit"; break;
1399260684Skaiw	case DW_TAG_typedef:
1400260684Skaiw		*s = "DW_TAG_typedef"; break;
1401260684Skaiw	case DW_TAG_union_type:
1402260684Skaiw		*s = "DW_TAG_union_type"; break;
1403260684Skaiw	case DW_TAG_unspecified_parameters:
1404260684Skaiw		*s = "DW_TAG_unspecified_parameters"; break;
1405260684Skaiw	case DW_TAG_unspecified_type:
1406260684Skaiw		*s = "DW_TAG_unspecified_type"; break;
1407260684Skaiw	case DW_TAG_variable:
1408260684Skaiw		*s = "DW_TAG_variable"; break;
1409260684Skaiw	case DW_TAG_variant:
1410260684Skaiw		*s = "DW_TAG_variant"; break;
1411260684Skaiw	case DW_TAG_variant_part:
1412260684Skaiw		*s = "DW_TAG_variant_part"; break;
1413260684Skaiw	case DW_TAG_volatile_type:
1414260684Skaiw		*s = "DW_TAG_volatile_type"; break;
1415260684Skaiw	case DW_TAG_with_stmt:
1416260684Skaiw		*s = "DW_TAG_with_stmt"; break;
1417276371Semaste	case DW_TAG_format_label:
1418276371Semaste		*s = "DW_TAG_format_label"; break;
1419276371Semaste	case DW_TAG_function_template:
1420276371Semaste		*s = "DW_TAG_function_template"; break;
1421276371Semaste	case DW_TAG_class_template:
1422276371Semaste		*s = "DW_TAG_class_template"; break;
1423276371Semaste	case DW_TAG_GNU_BINCL:
1424276371Semaste		*s = "DW_TAG_GNU_BINCL"; break;
1425276371Semaste	case DW_TAG_GNU_EINCL:
1426276371Semaste		*s = "DW_TAG_GNU_EINCL"; break;
1427276371Semaste	case DW_TAG_GNU_template_template_param:
1428276371Semaste		*s = "DW_TAG_GNU_template_template_param"; break;
1429276371Semaste	case DW_TAG_GNU_template_parameter_pack:
1430276371Semaste		*s = "DW_TAG_GNU_template_parameter_pack"; break;
1431276371Semaste	case DW_TAG_GNU_formal_parameter_pack:
1432276371Semaste		*s = "DW_TAG_GNU_formal_parameter_pack"; break;
1433276371Semaste	case DW_TAG_GNU_call_site:
1434276371Semaste		*s = "DW_TAG_GNU_call_site"; break;
1435276371Semaste	case DW_TAG_GNU_call_site_parameter:
1436276371Semaste		*s = "DW_TAG_GNU_call_site_parameter"; break;
1437260684Skaiw	default:
1438260684Skaiw		return (DW_DLV_NO_ENTRY);
1439260684Skaiw	}
1440260684Skaiw
1441260684Skaiw	return (DW_DLV_OK);
1442260684Skaiw}
1443260684Skaiw
1444260684Skaiwint
1445260684Skaiwdwarf_get_VIRTUALITY_name(unsigned vir, const char **s)
1446260684Skaiw{
1447260684Skaiw
1448260684Skaiw	assert(s != NULL);
1449260684Skaiw
1450260684Skaiw	switch (vir) {
1451260684Skaiw	case DW_VIRTUALITY_none:
1452260684Skaiw		*s = "DW_VIRTUALITY_none"; break;
1453260684Skaiw	case DW_VIRTUALITY_virtual:
1454260684Skaiw		*s = "DW_VIRTUALITY_virtual"; break;
1455260684Skaiw	case DW_VIRTUALITY_pure_virtual:
1456260684Skaiw		*s = "DW_VIRTUALITY_pure_virtual"; break;
1457260684Skaiw	default:
1458260684Skaiw		return (DW_DLV_NO_ENTRY);
1459260684Skaiw	}
1460260684Skaiw
1461260684Skaiw	return (DW_DLV_OK);
1462260684Skaiw}
1463260684Skaiw
1464260684Skaiwint
1465260684Skaiwdwarf_get_VIS_name(unsigned vis, const char **s)
1466260684Skaiw{
1467260684Skaiw
1468260684Skaiw	assert(s != NULL);
1469260684Skaiw
1470260684Skaiw	switch (vis) {
1471260684Skaiw	case DW_VIS_local:
1472260684Skaiw		*s = "DW_VIS_local"; break;
1473260684Skaiw	case DW_VIS_exported:
1474260684Skaiw		*s = "DW_VIS_exported"; break;
1475260684Skaiw	case DW_VIS_qualified:
1476260684Skaiw		*s = "DW_VIS_qualified"; break;
1477260684Skaiw	default:
1478260684Skaiw		return (DW_DLV_NO_ENTRY);
1479260684Skaiw	}
1480260684Skaiw
1481260684Skaiw	return (DW_DLV_OK);
1482260684Skaiw}
1483