dwarf_dump.c revision 276371
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
30276371SemasteELFTC_VCSID("$Id: dwarf_dump.c 3052 2014-05-26 20:36:24Z kaiwang27 $");
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;
265276371Semaste	case DW_AT_GNU_vector:
266276371Semaste		*s = "DW_AT_GNU_vector"; break;
267276371Semaste	case DW_AT_GNU_guarded_by:
268276371Semaste		*s = "DW_AT_GNU_guarded_by"; break;
269276371Semaste	case DW_AT_GNU_pt_guarded_by:
270276371Semaste		*s = "DW_AT_GNU_pt_guarded_by"; break;
271276371Semaste	case DW_AT_GNU_guarded:
272276371Semaste		*s = "DW_AT_GNU_guarded"; break;
273276371Semaste	case DW_AT_GNU_pt_guarded:
274276371Semaste		*s = "DW_AT_GNU_pt_guarded"; break;
275276371Semaste	case DW_AT_GNU_locks_excluded:
276276371Semaste		*s = "DW_AT_GNU_locks_excluded"; break;
277276371Semaste	case DW_AT_GNU_exclusive_locks_required:
278276371Semaste		*s = "DW_AT_GNU_exclusive_locks_required"; break;
279276371Semaste	case DW_AT_GNU_shared_locks_required:
280276371Semaste		*s = "DW_AT_GNU_shared_locks_required"; break;
281276371Semaste	case DW_AT_GNU_odr_signature:
282276371Semaste		*s = "DW_AT_GNU_odr_signature"; break;
283276371Semaste	case DW_AT_GNU_template_name:
284276371Semaste		*s = "DW_AT_GNU_template_name"; break;
285276371Semaste	case DW_AT_GNU_call_site_value:
286276371Semaste		*s = "DW_AT_GNU_call_site_value"; break;
287276371Semaste	case DW_AT_GNU_call_site_data_value:
288276371Semaste		*s = "DW_AT_GNU_call_site_data_value"; break;
289276371Semaste	case DW_AT_GNU_call_site_target:
290276371Semaste		*s = "DW_AT_GNU_call_site_target"; break;
291276371Semaste	case DW_AT_GNU_call_site_target_clobbered:
292276371Semaste		*s = "DW_AT_GNU_call_site_target_clobbered"; break;
293276371Semaste	case DW_AT_GNU_tail_call:
294276371Semaste		*s = "DW_AT_GNU_tail_call"; break;
295276371Semaste	case DW_AT_GNU_all_tail_call_sites:
296276371Semaste		*s = "DW_AT_GNU_all_tail_call_sites"; break;
297276371Semaste	case DW_AT_GNU_all_call_sites:
298276371Semaste		*s = "DW_AT_GNU_all_call_sites"; break;
299276371Semaste	case DW_AT_GNU_all_source_call_sites:
300276371Semaste		*s = "DW_AT_GNU_all_source_call_sites"; break;
301260684Skaiw	default:
302260684Skaiw		return (DW_DLV_NO_ENTRY);
303260684Skaiw	}
304260684Skaiw
305260684Skaiw	return (DW_DLV_OK);
306260684Skaiw}
307260684Skaiw
308260684Skaiwint
309260684Skaiwdwarf_get_ATE_name(unsigned ate, const char **s)
310260684Skaiw{
311260684Skaiw
312260684Skaiw	assert(s != NULL);
313260684Skaiw
314260684Skaiw	switch(ate) {
315260684Skaiw	case DW_ATE_address:
316260684Skaiw		*s = "DW_ATE_address"; break;
317260684Skaiw	case DW_ATE_boolean:
318260684Skaiw		*s = "DW_ATE_boolean"; break;
319260684Skaiw	case DW_ATE_complex_float:
320260684Skaiw		*s = "DW_ATE_complex_float"; break;
321260684Skaiw	case DW_ATE_float:
322260684Skaiw		*s = "DW_ATE_float"; break;
323260684Skaiw	case DW_ATE_signed:
324260684Skaiw		*s = "DW_ATE_signed"; break;
325260684Skaiw	case DW_ATE_signed_char:
326260684Skaiw		*s = "DW_ATE_signed_char"; break;
327260684Skaiw	case DW_ATE_unsigned:
328260684Skaiw		*s = "DW_ATE_unsigned"; break;
329260684Skaiw	case DW_ATE_unsigned_char:
330260684Skaiw		*s = "DW_ATE_unsigned_char"; break;
331260684Skaiw	case DW_ATE_imaginary_float:
332260684Skaiw		*s = "DW_ATE_imaginary_float"; break;
333260684Skaiw	case DW_ATE_packed_decimal:
334260684Skaiw		*s = "DW_ATE_packed_decimal"; break;
335260684Skaiw	case DW_ATE_numeric_string:
336260684Skaiw		*s = "DW_ATE_numeric_string"; break;
337260684Skaiw	case DW_ATE_edited:
338260684Skaiw		*s = "DW_ATE_edited"; break;
339260684Skaiw	case DW_ATE_signed_fixed:
340260684Skaiw		*s = "DW_ATE_signed_fixed"; break;
341260684Skaiw	case DW_ATE_unsigned_fixed:
342260684Skaiw		*s = "DW_ATE_unsigned_fixed"; break;
343260684Skaiw	case DW_ATE_decimal_float:
344260684Skaiw		*s = "DW_ATE_decimal_float"; break;
345260684Skaiw	case DW_ATE_lo_user:
346260684Skaiw		*s = "DW_ATE_lo_user"; break;
347260684Skaiw	case DW_ATE_hi_user:
348260684Skaiw		*s = "DW_ATE_hi_user"; break;
349260684Skaiw	default:
350260684Skaiw		return (DW_DLV_NO_ENTRY);
351260684Skaiw	}
352260684Skaiw
353260684Skaiw	return (DW_DLV_OK);
354260684Skaiw}
355260684Skaiw
356260684Skaiwint
357260684Skaiwdwarf_get_CC_name(unsigned cc, const char **s)
358260684Skaiw{
359260684Skaiw
360260684Skaiw	assert(s != NULL);
361260684Skaiw
362260684Skaiw	switch (cc) {
363260684Skaiw	case DW_CC_normal:
364260684Skaiw		*s = "DW_CC_normal"; break;
365260684Skaiw	case DW_CC_program:
366260684Skaiw		*s = "DW_CC_program"; break;
367260684Skaiw	case DW_CC_nocall:
368260684Skaiw		*s = "DW_CC_nocall"; break;
369260684Skaiw	case DW_CC_lo_user:
370260684Skaiw		*s = "DW_CC_lo_user"; break;
371260684Skaiw	case DW_CC_hi_user:
372260684Skaiw		*s = "DW_CC_hi_user"; break;
373260684Skaiw	default:
374260684Skaiw		return (DW_DLV_NO_ENTRY);
375260684Skaiw	}
376260684Skaiw
377260684Skaiw	return (DW_DLV_OK);
378260684Skaiw}
379260684Skaiw
380260684Skaiwint
381260684Skaiwdwarf_get_CFA_name(unsigned cfa, const char **s)
382260684Skaiw{
383260684Skaiw
384260684Skaiw	assert(s != NULL);
385260684Skaiw
386260684Skaiw	switch (cfa) {
387260684Skaiw	case DW_CFA_advance_loc:
388260684Skaiw		*s = "DW_CFA_advance_loc"; break;
389260684Skaiw	case DW_CFA_offset:
390260684Skaiw		*s = "DW_CFA_offset"; break;
391260684Skaiw	case DW_CFA_restore:
392260684Skaiw		*s = "DW_CFA_restore"; break;
393260684Skaiw	case DW_CFA_nop:
394260684Skaiw		*s = "DW_CFA_nop"; break;
395260684Skaiw	case DW_CFA_set_loc:
396260684Skaiw		*s = "DW_CFA_set_loc"; break;
397260684Skaiw	case DW_CFA_advance_loc1:
398260684Skaiw		*s = "DW_CFA_advance_loc1"; break;
399260684Skaiw	case DW_CFA_advance_loc2:
400260684Skaiw		*s = "DW_CFA_advance_loc2"; break;
401260684Skaiw	case DW_CFA_advance_loc4:
402260684Skaiw		*s = "DW_CFA_advance_loc4"; break;
403260684Skaiw	case DW_CFA_offset_extended:
404260684Skaiw		*s = "DW_CFA_offset_extended"; break;
405260684Skaiw	case DW_CFA_restore_extended:
406260684Skaiw		*s = "DW_CFA_restore_extended"; break;
407260684Skaiw	case DW_CFA_undefined:
408260684Skaiw		*s = "DW_CFA_undefined"; break;
409260684Skaiw	case DW_CFA_same_value:
410260684Skaiw		*s = "DW_CFA_same_value"; break;
411260684Skaiw	case DW_CFA_register:
412260684Skaiw		*s = "DW_CFA_register"; break;
413260684Skaiw	case DW_CFA_remember_state:
414260684Skaiw		*s = "DW_CFA_remember_state"; break;
415260684Skaiw	case DW_CFA_restore_state:
416260684Skaiw		*s = "DW_CFA_restore_state"; break;
417260684Skaiw	case DW_CFA_def_cfa:
418260684Skaiw		*s = "DW_CFA_def_cfa"; break;
419260684Skaiw	case DW_CFA_def_cfa_register:
420260684Skaiw		*s = "DW_CFA_def_cfa_register"; break;
421260684Skaiw	case DW_CFA_def_cfa_offset:
422260684Skaiw		*s = "DW_CFA_def_cfa_offset"; break;
423260684Skaiw	case DW_CFA_def_cfa_expression:
424260684Skaiw		*s = "DW_CFA_def_cfa_expression"; break;
425260684Skaiw	case DW_CFA_expression:
426260684Skaiw		*s = "DW_CFA_expression"; break;
427260684Skaiw	case DW_CFA_offset_extended_sf:
428260684Skaiw		*s = "DW_CFA_offset_extended_sf"; break;
429260684Skaiw	case DW_CFA_def_cfa_sf:
430260684Skaiw		*s = "DW_CFA_def_cfa_sf"; break;
431260684Skaiw	case DW_CFA_def_cfa_offset_sf:
432260684Skaiw		*s = "DW_CFA_def_cfa_offset_sf"; break;
433260684Skaiw	case DW_CFA_val_offset:
434260684Skaiw		*s = "DW_CFA_val_offset"; break;
435260684Skaiw	case DW_CFA_val_offset_sf:
436260684Skaiw		*s = "DW_CFA_val_offset_sf"; break;
437260684Skaiw	case DW_CFA_val_expression:
438260684Skaiw		*s = "DW_CFA_val_expression"; break;
439260684Skaiw	case DW_CFA_lo_user:
440260684Skaiw		*s = "DW_CFA_lo_user"; break;
441260684Skaiw	case DW_CFA_high_user:
442260684Skaiw		*s = "DW_CFA_high_user"; break;
443260684Skaiw	default:
444260684Skaiw		return (DW_DLV_NO_ENTRY);
445260684Skaiw	}
446260684Skaiw
447260684Skaiw	return (DW_DLV_OK);
448260684Skaiw}
449260684Skaiw
450260684Skaiwint
451260684Skaiwdwarf_get_CHILDREN_name(unsigned children, const char **s)
452260684Skaiw{
453260684Skaiw
454260684Skaiw	assert(s != NULL);
455260684Skaiw
456260684Skaiw	switch (children) {
457260684Skaiw	case DW_CHILDREN_no:
458260684Skaiw		*s = "DW_CHILDREN_no"; break;
459260684Skaiw	case DW_CHILDREN_yes:
460260684Skaiw		*s = "DW_CHILDREN_yes"; break;
461260684Skaiw	default:
462260684Skaiw		return (DW_DLV_NO_ENTRY);
463260684Skaiw	}
464260684Skaiw
465260684Skaiw	return (DW_DLV_OK);
466260684Skaiw}
467260684Skaiw
468260684Skaiwint
469260684Skaiwdwarf_get_FORM_name(unsigned form, const char **s)
470260684Skaiw{
471260684Skaiw
472260684Skaiw	assert(s != NULL);
473260684Skaiw
474260684Skaiw	switch (form) {
475260684Skaiw	case DW_FORM_addr:
476260684Skaiw		*s = "DW_FORM_addr"; break;
477260684Skaiw	case DW_FORM_block:
478260684Skaiw		*s = "DW_FORM_block"; break;
479260684Skaiw	case DW_FORM_block1:
480260684Skaiw		*s = "DW_FORM_block1"; break;
481260684Skaiw	case DW_FORM_block2:
482260684Skaiw		*s = "DW_FORM_block2"; break;
483260684Skaiw	case DW_FORM_block4:
484260684Skaiw		*s = "DW_FORM_block4"; break;
485260684Skaiw	case DW_FORM_data1:
486260684Skaiw		*s = "DW_FORM_data1"; break;
487260684Skaiw	case DW_FORM_data2:
488260684Skaiw		*s = "DW_FORM_data2"; break;
489260684Skaiw	case DW_FORM_data4:
490260684Skaiw		*s = "DW_FORM_data4"; break;
491260684Skaiw	case DW_FORM_data8:
492260684Skaiw		*s = "DW_FORM_data8"; break;
493260684Skaiw	case DW_FORM_exprloc:
494260684Skaiw		*s = "DW_FORM_exprloc"; break;
495260684Skaiw	case DW_FORM_flag:
496260684Skaiw		*s = "DW_FORM_flag"; break;
497260684Skaiw	case DW_FORM_flag_present:
498260684Skaiw		*s = "DW_FORM_flag_present"; break;
499260684Skaiw	case DW_FORM_indirect:
500260684Skaiw		*s = "DW_FORM_indirect"; break;
501260684Skaiw	case DW_FORM_ref1:
502260684Skaiw		*s = "DW_FORM_ref1"; break;
503260684Skaiw	case DW_FORM_ref2:
504260684Skaiw		*s = "DW_FORM_ref2"; break;
505260684Skaiw	case DW_FORM_ref4:
506260684Skaiw		*s = "DW_FORM_ref4"; break;
507260684Skaiw	case DW_FORM_ref8:
508260684Skaiw		*s = "DW_FORM_ref8"; break;
509260684Skaiw	case DW_FORM_ref_addr:
510260684Skaiw		*s = "DW_FORM_ref_addr"; break;
511260684Skaiw	case DW_FORM_ref_sig8:
512260684Skaiw		*s = "DW_FORM_ref_sig8"; break;
513260684Skaiw	case DW_FORM_ref_udata:
514260684Skaiw		*s = "DW_FORM_ref_udata"; break;
515260684Skaiw	case DW_FORM_sdata:
516260684Skaiw		*s = "DW_FORM_sdata"; break;
517260684Skaiw	case DW_FORM_sec_offset:
518260684Skaiw		*s = "DW_FORM_sec_offset"; break;
519260684Skaiw	case DW_FORM_string:
520260684Skaiw		*s = "DW_FORM_string"; break;
521260684Skaiw	case DW_FORM_strp:
522260684Skaiw		*s = "DW_FORM_strp"; break;
523260684Skaiw	case DW_FORM_udata:
524260684Skaiw		*s = "DW_FORM_udata"; break;
525260684Skaiw	default:
526260684Skaiw		return (DW_DLV_NO_ENTRY);
527260684Skaiw	}
528260684Skaiw
529260684Skaiw	return (DW_DLV_OK);
530260684Skaiw}
531260684Skaiw
532260684Skaiwint
533260684Skaiwdwarf_get_DS_name(unsigned ds, const char **s)
534260684Skaiw{
535260684Skaiw
536260684Skaiw	assert(s != NULL);
537260684Skaiw
538260684Skaiw	switch (ds) {
539260684Skaiw	case DW_DS_unsigned:
540260684Skaiw		*s = "DW_DS_unsigned"; break;
541260684Skaiw	case DW_DS_leading_overpunch:
542260684Skaiw		*s = "DW_DS_leading_overpunch"; break;
543260684Skaiw	case DW_DS_trailing_overpunch:
544260684Skaiw		*s = "DW_DS_trailing_overpunch"; break;
545260684Skaiw	case DW_DS_leading_separate:
546260684Skaiw		*s = "DW_DS_leading_separate"; break;
547260684Skaiw	case DW_DS_trailing_separate:
548260684Skaiw		*s = "DW_DS_trailing_separate";
549260684Skaiw	default:
550260684Skaiw		return (DW_DLV_NO_ENTRY);
551260684Skaiw	}
552260684Skaiw
553260684Skaiw	return (DW_DLV_OK);
554260684Skaiw}
555260684Skaiw
556260684Skaiwint
557260684Skaiwdwarf_get_DSC_name(unsigned dsc, const char **s)
558260684Skaiw{
559260684Skaiw
560260684Skaiw	assert(s != NULL);
561260684Skaiw
562260684Skaiw	switch (dsc) {
563260684Skaiw	case DW_DSC_label:
564260684Skaiw		*s = "DW_DSC_label"; break;
565260684Skaiw	case DW_DSC_range:
566260684Skaiw		*s = "DW_DSC_range"; break;
567260684Skaiw	default:
568260684Skaiw		return (DW_DLV_NO_ENTRY);
569260684Skaiw	}
570260684Skaiw
571260684Skaiw	return (DW_DLV_OK);
572260684Skaiw}
573260684Skaiw
574260684Skaiwint
575260684Skaiwdwarf_get_EH_name(unsigned eh, const char **s)
576260684Skaiw{
577260684Skaiw
578260684Skaiw	assert(s != NULL);
579260684Skaiw
580260684Skaiw	switch (eh) {
581260684Skaiw	case DW_EH_PE_absptr:
582260684Skaiw		*s = "DW_EH_PE_absptr"; break;
583260684Skaiw	case DW_EH_PE_uleb128:
584260684Skaiw		*s = "DW_EH_PE_uleb128"; break;
585260684Skaiw	case DW_EH_PE_udata2:
586260684Skaiw		*s = "DW_EH_PE_udata2"; break;
587260684Skaiw	case DW_EH_PE_udata4:
588260684Skaiw		*s = "DW_EH_PE_udata4"; break;
589260684Skaiw	case DW_EH_PE_udata8:
590260684Skaiw		*s = "DW_EH_PE_udata8"; break;
591260684Skaiw	case DW_EH_PE_sleb128:
592260684Skaiw		*s = "DW_EH_PE_sleb128"; break;
593260684Skaiw	case DW_EH_PE_sdata2:
594260684Skaiw		*s = "DW_EH_PE_sdata2"; break;
595260684Skaiw	case DW_EH_PE_sdata4:
596260684Skaiw		*s = "DW_EH_PE_sdata4"; break;
597260684Skaiw	case DW_EH_PE_sdata8:
598260684Skaiw		*s = "DW_EH_PE_sdata8"; break;
599260684Skaiw	case DW_EH_PE_pcrel:
600260684Skaiw		*s = "DW_EH_PE_pcrel"; break;
601260684Skaiw	case DW_EH_PE_textrel:
602260684Skaiw		*s = "DW_EH_PE_textrel"; break;
603260684Skaiw	case DW_EH_PE_datarel:
604260684Skaiw		*s = "DW_EH_PE_datarel"; break;
605260684Skaiw	case DW_EH_PE_funcrel:
606260684Skaiw		*s = "DW_EH_PE_funcrel"; break;
607260684Skaiw	case DW_EH_PE_aligned:
608260684Skaiw		*s = "DW_EH_PE_aligned"; break;
609260684Skaiw	case DW_EH_PE_omit:
610260684Skaiw		*s = "DW_EH_PE_omit"; break;
611260684Skaiw	default:
612260684Skaiw		return (DW_DLV_NO_ENTRY);
613260684Skaiw	}
614260684Skaiw
615260684Skaiw	return (DW_DLV_OK);
616260684Skaiw}
617260684Skaiw
618260684Skaiwint
619260684Skaiwdwarf_get_END_name(unsigned end, const char **s)
620260684Skaiw{
621260684Skaiw
622260684Skaiw	assert(s != NULL);
623260684Skaiw
624260684Skaiw	switch (end) {
625260684Skaiw	case DW_END_default:
626260684Skaiw		*s = "DW_END_default"; break;
627260684Skaiw	case DW_END_big:
628260684Skaiw		*s = "DW_END_big"; break;
629260684Skaiw	case DW_END_little:
630260684Skaiw		*s = "DW_END_little"; break;
631260684Skaiw	case DW_END_lo_user:
632260684Skaiw		*s = "DW_END_lo_user"; break;
633260684Skaiw	case DW_END_high_user:
634260684Skaiw		*s = "DW_END_high_user"; break;
635260684Skaiw	default:
636260684Skaiw		return (DW_DLV_NO_ENTRY);
637260684Skaiw	}
638260684Skaiw
639260684Skaiw	return (DW_DLV_OK);
640260684Skaiw}
641260684Skaiw
642260684Skaiwint
643260684Skaiwdwarf_get_ID_name(unsigned id, const char **s)
644260684Skaiw{
645260684Skaiw
646260684Skaiw	assert(s != NULL);
647260684Skaiw
648260684Skaiw	switch (id) {
649260684Skaiw	case DW_ID_case_sensitive:
650260684Skaiw		*s = "DW_ID_case_sensitive"; break;
651260684Skaiw	case DW_ID_up_case:
652260684Skaiw		*s = "DW_ID_up_case"; break;
653260684Skaiw	case DW_ID_down_case:
654260684Skaiw		*s = "DW_ID_down_case"; break;
655260684Skaiw	case DW_ID_case_insensitive:
656260684Skaiw		*s = "DW_ID_case_insensitive"; break;
657260684Skaiw	default:
658260684Skaiw		return (DW_DLV_NO_ENTRY);
659260684Skaiw	}
660260684Skaiw
661260684Skaiw	return (DW_DLV_OK);
662260684Skaiw}
663260684Skaiw
664260684Skaiwint
665260684Skaiwdwarf_get_INL_name(unsigned inl, const char **s)
666260684Skaiw{
667260684Skaiw
668260684Skaiw	assert(s != NULL);
669260684Skaiw
670260684Skaiw	switch (inl) {
671260684Skaiw	case DW_INL_not_inlined:
672260684Skaiw		*s = "DW_INL_not_inlined"; break;
673260684Skaiw	case DW_INL_inlined:
674260684Skaiw		*s = "DW_INL_inlined"; break;
675260684Skaiw	case DW_INL_declared_not_inlined:
676260684Skaiw		*s = "DW_INL_declared_not_inlined"; break;
677260684Skaiw	case DW_INL_declared_inlined:
678260684Skaiw		*s = "DW_INL_declared_inlined"; break;
679260684Skaiw	default:
680260684Skaiw		return (DW_DLV_NO_ENTRY);
681260684Skaiw	}
682260684Skaiw
683260684Skaiw	return (DW_DLV_OK);
684260684Skaiw}
685260684Skaiw
686260684Skaiwint
687260684Skaiwdwarf_get_LANG_name(unsigned lang, const char **s)
688260684Skaiw{
689260684Skaiw
690260684Skaiw	assert(s != NULL);
691260684Skaiw
692260684Skaiw	switch (lang) {
693260684Skaiw	case DW_LANG_C89:
694260684Skaiw		*s = "DW_LANG_C89"; break;
695260684Skaiw	case DW_LANG_C:
696260684Skaiw		*s = "DW_LANG_C"; break;
697260684Skaiw	case DW_LANG_Ada83:
698260684Skaiw		*s = "DW_LANG_Ada83"; break;
699260684Skaiw	case DW_LANG_C_plus_plus:
700260684Skaiw		*s = "DW_LANG_C_plus_plus"; break;
701260684Skaiw	case DW_LANG_Cobol74:
702260684Skaiw		*s = "DW_LANG_Cobol74"; break;
703260684Skaiw	case DW_LANG_Cobol85:
704260684Skaiw		*s = "DW_LANG_Cobol85"; break;
705260684Skaiw	case DW_LANG_Fortran77:
706260684Skaiw		*s = "DW_LANG_Fortran77"; break;
707260684Skaiw	case DW_LANG_Fortran90:
708260684Skaiw		*s = "DW_LANG_Fortran90"; break;
709260684Skaiw	case DW_LANG_Pascal83:
710260684Skaiw		*s = "DW_LANG_Pascal83"; break;
711260684Skaiw	case DW_LANG_Modula2:
712260684Skaiw		*s = "DW_LANG_Modula2"; break;
713260684Skaiw	case DW_LANG_Java:
714260684Skaiw		*s = "DW_LANG_Java"; break;
715260684Skaiw	case DW_LANG_C99:
716260684Skaiw		*s = "DW_LANG_C99"; break;
717260684Skaiw	case DW_LANG_Ada95:
718260684Skaiw		*s = "DW_LANG_Ada95"; break;
719260684Skaiw	case DW_LANG_Fortran95:
720260684Skaiw		*s = "DW_LANG_Fortran95"; break;
721260684Skaiw	case DW_LANG_PLI:
722260684Skaiw		*s = "DW_LANG_PLI"; break;
723260684Skaiw	case DW_LANG_ObjC:
724260684Skaiw		*s = "DW_LANG_ObjC"; break;
725260684Skaiw	case DW_LANG_ObjC_plus_plus:
726260684Skaiw		*s = "DW_LANG_ObjC_plus_plus"; break;
727260684Skaiw	case DW_LANG_UPC:
728260684Skaiw		*s = "DW_LANG_UPC"; break;
729260684Skaiw	case DW_LANG_D:
730260684Skaiw		*s = "DW_LANG_D"; break;
731260684Skaiw	case DW_LANG_lo_user:
732260684Skaiw		*s = "DW_LANG_lo_user"; break;
733260684Skaiw	case DW_LANG_hi_user:
734260684Skaiw		*s = "DW_LANG_hi_user"; break;
735260684Skaiw	default:
736260684Skaiw		return (DW_DLV_NO_ENTRY);
737260684Skaiw	}
738260684Skaiw
739260684Skaiw	return (DW_DLV_OK);
740260684Skaiw}
741260684Skaiw
742260684Skaiwint
743260684Skaiwdwarf_get_LNE_name(unsigned lne, const char **s)
744260684Skaiw{
745260684Skaiw
746260684Skaiw	assert(s != NULL);
747260684Skaiw
748260684Skaiw	switch (lne) {
749260684Skaiw	case DW_LNE_end_sequence:
750260684Skaiw		*s = "DW_LNE_end_sequence"; break;
751260684Skaiw	case DW_LNE_set_address:
752260684Skaiw		*s = "DW_LNE_set_address"; break;
753260684Skaiw	case DW_LNE_define_file:
754260684Skaiw		*s = "DW_LNE_define_file"; break;
755260684Skaiw	case DW_LNE_lo_user:
756260684Skaiw		*s = "DW_LNE_lo_user"; break;
757260684Skaiw	case DW_LNE_hi_user:
758260684Skaiw		*s = "DW_LNE_hi_user"; break;
759260684Skaiw	default:
760260684Skaiw		return (DW_DLV_NO_ENTRY);
761260684Skaiw	}
762260684Skaiw
763260684Skaiw	return (DW_DLV_OK);
764260684Skaiw}
765260684Skaiw
766260684Skaiwint
767260684Skaiwdwarf_get_LNS_name(unsigned lns, const char **s)
768260684Skaiw{
769260684Skaiw
770260684Skaiw	assert(s != NULL);
771260684Skaiw
772260684Skaiw	switch (lns) {
773260684Skaiw	case DW_LNS_copy:
774260684Skaiw		*s = "DW_LNS_copy"; break;
775260684Skaiw	case DW_LNS_advance_pc:
776260684Skaiw		*s = "DW_LNS_advance_pc"; break;
777260684Skaiw	case DW_LNS_advance_line:
778260684Skaiw		*s = "DW_LNS_advance_line"; break;
779260684Skaiw	case DW_LNS_set_file:
780260684Skaiw		*s = "DW_LNS_set_file"; break;
781260684Skaiw	case DW_LNS_set_column:
782260684Skaiw		*s = "DW_LNS_set_column"; break;
783260684Skaiw	case DW_LNS_negate_stmt:
784260684Skaiw		*s = "DW_LNS_negate_stmt"; break;
785260684Skaiw	case DW_LNS_set_basic_block:
786260684Skaiw		*s = "DW_LNS_set_basic_block"; break;
787260684Skaiw	case DW_LNS_const_add_pc:
788260684Skaiw		*s = "DW_LNS_const_add_pc"; break;
789260684Skaiw	case DW_LNS_fixed_advance_pc:
790260684Skaiw		*s = "DW_LNS_fixed_advance_pc"; break;
791260684Skaiw	case DW_LNS_set_prologue_end:
792260684Skaiw		*s = "DW_LNS_set_prologue_end"; break;
793260684Skaiw	case DW_LNS_set_epilogue_begin:
794260684Skaiw		*s = "DW_LNS_set_epilogue_begin"; break;
795260684Skaiw	case DW_LNS_set_isa:
796260684Skaiw		*s = "DW_LNS_set_isa"; break;
797260684Skaiw	default:
798260684Skaiw		return (DW_DLV_NO_ENTRY);
799260684Skaiw	}
800260684Skaiw
801260684Skaiw	return (DW_DLV_OK);
802260684Skaiw}
803260684Skaiw
804260684Skaiwint
805260684Skaiwdwarf_get_MACINFO_name(unsigned mi, const char **s)
806260684Skaiw{
807260684Skaiw
808260684Skaiw	assert(s != NULL);
809260684Skaiw
810260684Skaiw	switch (mi) {
811260684Skaiw	case DW_MACINFO_define:
812260684Skaiw		*s = "DW_MACINFO_define"; break;
813260684Skaiw	case DW_MACINFO_undef:
814260684Skaiw		*s = "DW_MACINFO_undef"; break;
815260684Skaiw	case DW_MACINFO_start_file:
816260684Skaiw		*s = "DW_MACINFO_start_file"; break;
817260684Skaiw	case DW_MACINFO_end_file:
818260684Skaiw		*s = "DW_MACINFO_end_file"; break;
819260684Skaiw	case DW_MACINFO_vendor_ext:
820260684Skaiw		*s = "DW_MACINFO_vendor_ext"; break;
821260684Skaiw	default:
822260684Skaiw		return (DW_DLV_NO_ENTRY);
823260684Skaiw	}
824260684Skaiw
825260684Skaiw	return (DW_DLV_OK);
826260684Skaiw}
827260684Skaiw
828260684Skaiwint
829260684Skaiwdwarf_get_OP_name(unsigned op, const char **s)
830260684Skaiw{
831260684Skaiw
832260684Skaiw	assert(s != NULL);
833260684Skaiw
834260684Skaiw	switch (op) {
835260684Skaiw	case DW_OP_deref:
836260684Skaiw		*s = "DW_OP_deref"; break;
837260684Skaiw	case DW_OP_reg0:
838260684Skaiw		*s = "DW_OP_reg0"; break;
839260684Skaiw	case DW_OP_reg1:
840260684Skaiw		*s = "DW_OP_reg1"; break;
841260684Skaiw	case DW_OP_reg2:
842260684Skaiw		*s = "DW_OP_reg2"; break;
843260684Skaiw	case DW_OP_reg3:
844260684Skaiw		*s = "DW_OP_reg3"; break;
845260684Skaiw	case DW_OP_reg4:
846260684Skaiw		*s = "DW_OP_reg4"; break;
847260684Skaiw	case DW_OP_reg5:
848260684Skaiw		*s = "DW_OP_reg5"; break;
849260684Skaiw	case DW_OP_reg6:
850260684Skaiw		*s = "DW_OP_reg6"; break;
851260684Skaiw	case DW_OP_reg7:
852260684Skaiw		*s = "DW_OP_reg7"; break;
853260684Skaiw	case DW_OP_reg8:
854260684Skaiw		*s = "DW_OP_reg8"; break;
855260684Skaiw	case DW_OP_reg9:
856260684Skaiw		*s = "DW_OP_reg9"; break;
857260684Skaiw	case DW_OP_reg10:
858260684Skaiw		*s = "DW_OP_reg10"; break;
859260684Skaiw	case DW_OP_reg11:
860260684Skaiw		*s = "DW_OP_reg11"; break;
861260684Skaiw	case DW_OP_reg12:
862260684Skaiw		*s = "DW_OP_reg12"; break;
863260684Skaiw	case DW_OP_reg13:
864260684Skaiw		*s = "DW_OP_reg13"; break;
865260684Skaiw	case DW_OP_reg14:
866260684Skaiw		*s = "DW_OP_reg14"; break;
867260684Skaiw	case DW_OP_reg15:
868260684Skaiw		*s = "DW_OP_reg15"; break;
869260684Skaiw	case DW_OP_reg16:
870260684Skaiw		*s = "DW_OP_reg16"; break;
871260684Skaiw	case DW_OP_reg17:
872260684Skaiw		*s = "DW_OP_reg17"; break;
873260684Skaiw	case DW_OP_reg18:
874260684Skaiw		*s = "DW_OP_reg18"; break;
875260684Skaiw	case DW_OP_reg19:
876260684Skaiw		*s = "DW_OP_reg19"; break;
877260684Skaiw	case DW_OP_reg20:
878260684Skaiw		*s = "DW_OP_reg20"; break;
879260684Skaiw	case DW_OP_reg21:
880260684Skaiw		*s = "DW_OP_reg21"; break;
881260684Skaiw	case DW_OP_reg22:
882260684Skaiw		*s = "DW_OP_reg22"; break;
883260684Skaiw	case DW_OP_reg23:
884260684Skaiw		*s = "DW_OP_reg23"; break;
885260684Skaiw	case DW_OP_reg24:
886260684Skaiw		*s = "DW_OP_reg24"; break;
887260684Skaiw	case DW_OP_reg25:
888260684Skaiw		*s = "DW_OP_reg25"; break;
889260684Skaiw	case DW_OP_reg26:
890260684Skaiw		*s = "DW_OP_reg26"; break;
891260684Skaiw	case DW_OP_reg27:
892260684Skaiw		*s = "DW_OP_reg27"; break;
893260684Skaiw	case DW_OP_reg28:
894260684Skaiw		*s = "DW_OP_reg28"; break;
895260684Skaiw	case DW_OP_reg29:
896260684Skaiw		*s = "DW_OP_reg29"; break;
897260684Skaiw	case DW_OP_reg30:
898260684Skaiw		*s = "DW_OP_reg30"; break;
899260684Skaiw	case DW_OP_reg31:
900260684Skaiw		*s = "DW_OP_reg31"; break;
901260684Skaiw	case DW_OP_lit0:
902260684Skaiw		*s = "DW_OP_lit0"; break;
903260684Skaiw	case DW_OP_lit1:
904260684Skaiw		*s = "DW_OP_lit1"; break;
905260684Skaiw	case DW_OP_lit2:
906260684Skaiw		*s = "DW_OP_lit2"; break;
907260684Skaiw	case DW_OP_lit3:
908260684Skaiw		*s = "DW_OP_lit3"; break;
909260684Skaiw	case DW_OP_lit4:
910260684Skaiw		*s = "DW_OP_lit4"; break;
911260684Skaiw	case DW_OP_lit5:
912260684Skaiw		*s = "DW_OP_lit5"; break;
913260684Skaiw	case DW_OP_lit6:
914260684Skaiw		*s = "DW_OP_lit6"; break;
915260684Skaiw	case DW_OP_lit7:
916260684Skaiw		*s = "DW_OP_lit7"; break;
917260684Skaiw	case DW_OP_lit8:
918260684Skaiw		*s = "DW_OP_lit8"; break;
919260684Skaiw	case DW_OP_lit9:
920260684Skaiw		*s = "DW_OP_lit9"; break;
921260684Skaiw	case DW_OP_lit10:
922260684Skaiw		*s = "DW_OP_lit10"; break;
923260684Skaiw	case DW_OP_lit11:
924260684Skaiw		*s = "DW_OP_lit11"; break;
925260684Skaiw	case DW_OP_lit12:
926260684Skaiw		*s = "DW_OP_lit12"; break;
927260684Skaiw	case DW_OP_lit13:
928260684Skaiw		*s = "DW_OP_lit13"; break;
929260684Skaiw	case DW_OP_lit14:
930260684Skaiw		*s = "DW_OP_lit14"; break;
931260684Skaiw	case DW_OP_lit15:
932260684Skaiw		*s = "DW_OP_lit15"; break;
933260684Skaiw	case DW_OP_lit16:
934260684Skaiw		*s = "DW_OP_lit16"; break;
935260684Skaiw	case DW_OP_lit17:
936260684Skaiw		*s = "DW_OP_lit17"; break;
937260684Skaiw	case DW_OP_lit18:
938260684Skaiw		*s = "DW_OP_lit18"; break;
939260684Skaiw	case DW_OP_lit19:
940260684Skaiw		*s = "DW_OP_lit19"; break;
941260684Skaiw	case DW_OP_lit20:
942260684Skaiw		*s = "DW_OP_lit20"; break;
943260684Skaiw	case DW_OP_lit21:
944260684Skaiw		*s = "DW_OP_lit21"; break;
945260684Skaiw	case DW_OP_lit22:
946260684Skaiw		*s = "DW_OP_lit22"; break;
947260684Skaiw	case DW_OP_lit23:
948260684Skaiw		*s = "DW_OP_lit23"; break;
949260684Skaiw	case DW_OP_lit24:
950260684Skaiw		*s = "DW_OP_lit24"; break;
951260684Skaiw	case DW_OP_lit25:
952260684Skaiw		*s = "DW_OP_lit25"; break;
953260684Skaiw	case DW_OP_lit26:
954260684Skaiw		*s = "DW_OP_lit26"; break;
955260684Skaiw	case DW_OP_lit27:
956260684Skaiw		*s = "DW_OP_lit27"; break;
957260684Skaiw	case DW_OP_lit28:
958260684Skaiw		*s = "DW_OP_lit28"; break;
959260684Skaiw	case DW_OP_lit29:
960260684Skaiw		*s = "DW_OP_lit29"; break;
961260684Skaiw	case DW_OP_lit30:
962260684Skaiw		*s = "DW_OP_lit30"; break;
963260684Skaiw	case DW_OP_lit31:
964260684Skaiw		*s = "DW_OP_lit31"; break;
965260684Skaiw	case DW_OP_dup:
966260684Skaiw		*s = "DW_OP_dup"; break;
967260684Skaiw	case DW_OP_drop:
968260684Skaiw		*s = "DW_OP_drop"; break;
969260684Skaiw	case DW_OP_over:
970260684Skaiw		*s = "DW_OP_over"; break;
971260684Skaiw	case DW_OP_swap:
972260684Skaiw		*s = "DW_OP_swap"; break;
973260684Skaiw	case DW_OP_rot:
974260684Skaiw		*s = "DW_OP_rot"; break;
975260684Skaiw	case DW_OP_xderef:
976260684Skaiw		*s = "DW_OP_xderef"; break;
977260684Skaiw	case DW_OP_abs:
978260684Skaiw		*s = "DW_OP_abs"; break;
979260684Skaiw	case DW_OP_and:
980260684Skaiw		*s = "DW_OP_and"; break;
981260684Skaiw	case DW_OP_div:
982260684Skaiw		*s = "DW_OP_div"; break;
983260684Skaiw	case DW_OP_minus:
984260684Skaiw		*s = "DW_OP_minus"; break;
985260684Skaiw	case DW_OP_mod:
986260684Skaiw		*s = "DW_OP_mod"; break;
987260684Skaiw	case DW_OP_mul:
988260684Skaiw		*s = "DW_OP_mul"; break;
989260684Skaiw	case DW_OP_neg:
990260684Skaiw		*s = "DW_OP_neg"; break;
991260684Skaiw	case DW_OP_not:
992260684Skaiw		*s = "DW_OP_not"; break;
993260684Skaiw	case DW_OP_or:
994260684Skaiw		*s = "DW_OP_or"; break;
995260684Skaiw	case DW_OP_plus:
996260684Skaiw		*s = "DW_OP_plus"; break;
997260684Skaiw	case DW_OP_shl:
998260684Skaiw		*s = "DW_OP_shl"; break;
999260684Skaiw	case DW_OP_shr:
1000260684Skaiw		*s = "DW_OP_shr"; break;
1001260684Skaiw	case DW_OP_shra:
1002260684Skaiw		*s = "DW_OP_shra"; break;
1003260684Skaiw	case DW_OP_xor:
1004260684Skaiw		*s = "DW_OP_xor"; break;
1005260684Skaiw	case DW_OP_eq:
1006260684Skaiw		*s = "DW_OP_eq"; break;
1007260684Skaiw	case DW_OP_ge:
1008260684Skaiw		*s = "DW_OP_ge"; break;
1009260684Skaiw	case DW_OP_gt:
1010260684Skaiw		*s = "DW_OP_gt"; break;
1011260684Skaiw	case DW_OP_le:
1012260684Skaiw		*s = "DW_OP_le"; break;
1013260684Skaiw	case DW_OP_lt:
1014260684Skaiw		*s = "DW_OP_lt"; break;
1015260684Skaiw	case DW_OP_ne:
1016260684Skaiw		*s = "DW_OP_ne"; break;
1017260684Skaiw	case DW_OP_nop:
1018260684Skaiw		*s = "DW_OP_nop"; break;
1019260684Skaiw	case DW_OP_const1u:
1020260684Skaiw		*s = "DW_OP_const1u"; break;
1021260684Skaiw	case DW_OP_const1s:
1022260684Skaiw		*s = "DW_OP_const1s"; break;
1023260684Skaiw	case DW_OP_pick:
1024260684Skaiw		*s = "DW_OP_pick"; break;
1025260684Skaiw	case DW_OP_deref_size:
1026260684Skaiw		*s = "DW_OP_deref_size"; break;
1027260684Skaiw	case DW_OP_xderef_size:
1028260684Skaiw		*s = "DW_OP_xderef_size"; break;
1029260684Skaiw	case DW_OP_const2u:
1030260684Skaiw		*s = "DW_OP_const2u"; break;
1031260684Skaiw	case DW_OP_const2s:
1032260684Skaiw		*s = "DW_OP_const2s"; break;
1033260684Skaiw	case DW_OP_bra:
1034260684Skaiw		*s = "DW_OP_bra"; break;
1035260684Skaiw	case DW_OP_skip:
1036260684Skaiw		*s = "DW_OP_skip"; break;
1037260684Skaiw	case DW_OP_const4u:
1038260684Skaiw		*s = "DW_OP_const4u"; break;
1039260684Skaiw	case DW_OP_const4s:
1040260684Skaiw		*s = "DW_OP_const4s"; break;
1041260684Skaiw	case DW_OP_const8u:
1042260684Skaiw		*s = "DW_OP_const8u"; break;
1043260684Skaiw	case DW_OP_const8s:
1044260684Skaiw		*s = "DW_OP_const8s"; break;
1045260684Skaiw	case DW_OP_constu:
1046260684Skaiw		*s = "DW_OP_constu"; break;
1047260684Skaiw	case DW_OP_plus_uconst:
1048260684Skaiw		*s = "DW_OP_plus_uconst"; break;
1049260684Skaiw	case DW_OP_regx:
1050260684Skaiw		*s = "DW_OP_regx"; break;
1051260684Skaiw	case DW_OP_piece:
1052260684Skaiw		*s = "DW_OP_piece"; break;
1053260684Skaiw	case DW_OP_consts:
1054260684Skaiw		*s = "DW_OP_consts"; break;
1055260684Skaiw	case DW_OP_breg0:
1056260684Skaiw		*s = "DW_OP_breg0"; break;
1057260684Skaiw	case DW_OP_breg1:
1058260684Skaiw		*s = "DW_OP_breg1"; break;
1059260684Skaiw	case DW_OP_breg2:
1060260684Skaiw		*s = "DW_OP_breg2"; break;
1061260684Skaiw	case DW_OP_breg3:
1062260684Skaiw		*s = "DW_OP_breg3"; break;
1063260684Skaiw	case DW_OP_breg4:
1064260684Skaiw		*s = "DW_OP_breg4"; break;
1065260684Skaiw	case DW_OP_breg5:
1066260684Skaiw		*s = "DW_OP_breg5"; break;
1067260684Skaiw	case DW_OP_breg6:
1068260684Skaiw		*s = "DW_OP_breg6"; break;
1069260684Skaiw	case DW_OP_breg7:
1070260684Skaiw		*s = "DW_OP_breg7"; break;
1071260684Skaiw	case DW_OP_breg8:
1072260684Skaiw		*s = "DW_OP_breg8"; break;
1073260684Skaiw	case DW_OP_breg9:
1074260684Skaiw		*s = "DW_OP_breg9"; break;
1075260684Skaiw	case DW_OP_breg10:
1076260684Skaiw		*s = "DW_OP_breg10"; break;
1077260684Skaiw	case DW_OP_breg11:
1078260684Skaiw		*s = "DW_OP_breg11"; break;
1079260684Skaiw	case DW_OP_breg12:
1080260684Skaiw		*s = "DW_OP_breg12"; break;
1081260684Skaiw	case DW_OP_breg13:
1082260684Skaiw		*s = "DW_OP_breg13"; break;
1083260684Skaiw	case DW_OP_breg14:
1084260684Skaiw		*s = "DW_OP_breg14"; break;
1085260684Skaiw	case DW_OP_breg15:
1086260684Skaiw		*s = "DW_OP_breg15"; break;
1087260684Skaiw	case DW_OP_breg16:
1088260684Skaiw		*s = "DW_OP_breg16"; break;
1089260684Skaiw	case DW_OP_breg17:
1090260684Skaiw		*s = "DW_OP_breg17"; break;
1091260684Skaiw	case DW_OP_breg18:
1092260684Skaiw		*s = "DW_OP_breg18"; break;
1093260684Skaiw	case DW_OP_breg19:
1094260684Skaiw		*s = "DW_OP_breg19"; break;
1095260684Skaiw	case DW_OP_breg20:
1096260684Skaiw		*s = "DW_OP_breg20"; break;
1097260684Skaiw	case DW_OP_breg21:
1098260684Skaiw		*s = "DW_OP_breg21"; break;
1099260684Skaiw	case DW_OP_breg22:
1100260684Skaiw		*s = "DW_OP_breg22"; break;
1101260684Skaiw	case DW_OP_breg23:
1102260684Skaiw		*s = "DW_OP_breg23"; break;
1103260684Skaiw	case DW_OP_breg24:
1104260684Skaiw		*s = "DW_OP_breg24"; break;
1105260684Skaiw	case DW_OP_breg25:
1106260684Skaiw		*s = "DW_OP_breg25"; break;
1107260684Skaiw	case DW_OP_breg26:
1108260684Skaiw		*s = "DW_OP_breg26"; break;
1109260684Skaiw	case DW_OP_breg27:
1110260684Skaiw		*s = "DW_OP_breg27"; break;
1111260684Skaiw	case DW_OP_breg28:
1112260684Skaiw		*s = "DW_OP_breg28"; break;
1113260684Skaiw	case DW_OP_breg29:
1114260684Skaiw		*s = "DW_OP_breg29"; break;
1115260684Skaiw	case DW_OP_breg30:
1116260684Skaiw		*s = "DW_OP_breg30"; break;
1117260684Skaiw	case DW_OP_breg31:
1118260684Skaiw		*s = "DW_OP_breg31"; break;
1119260684Skaiw	case DW_OP_fbreg:
1120260684Skaiw		*s = "DW_OP_fbreg"; break;
1121260684Skaiw	case DW_OP_bregx:
1122260684Skaiw		*s = "DW_OP_bregx"; break;
1123260684Skaiw	case DW_OP_addr:
1124260684Skaiw		*s = "DW_OP_addr"; break;
1125260684Skaiw	case DW_OP_push_object_address:
1126260684Skaiw		*s = "DW_OP_push_object_address"; break;
1127260684Skaiw	case DW_OP_call2:
1128260684Skaiw		*s = "DW_OP_call2"; break;
1129260684Skaiw	case DW_OP_call4:
1130260684Skaiw		*s = "DW_OP_call4"; break;
1131260684Skaiw	case DW_OP_call_ref:
1132260684Skaiw		*s = "DW_OP_call_ref"; break;
1133260684Skaiw	case DW_OP_form_tls_address:
1134260684Skaiw		*s = "DW_OP_form_tls_address"; break;
1135260684Skaiw	case DW_OP_call_frame_cfa:
1136260684Skaiw		*s = "DW_OP_call_frame_cfa"; break;
1137260684Skaiw	case DW_OP_bit_piece:
1138260684Skaiw		*s = "DW_OP_bit_piece"; break;
1139260684Skaiw	case DW_OP_implicit_value:
1140260684Skaiw		*s = "DW_OP_implicit_value"; break;
1141260684Skaiw	case DW_OP_stack_value:
1142260684Skaiw		*s = "DW_OP_stack_value"; break;
1143260684Skaiw	case DW_OP_GNU_push_tls_address:
1144260684Skaiw		*s = "DW_OP_GNU_push_tls_address"; break;
1145276371Semaste	case DW_OP_GNU_uninit:
1146276371Semaste		*s = "DW_OP_GNU_uninit"; break;
1147276371Semaste	case DW_OP_GNU_encoded_addr:
1148276371Semaste		*s = "DW_OP_GNU_encoded_addr"; break;
1149276371Semaste	case DW_OP_GNU_implicit_pointer:
1150276371Semaste		*s = "DW_OP_GNU_implicit_pointer"; break;
1151276371Semaste	case DW_OP_GNU_entry_value:
1152276371Semaste		*s = "DW_OP_GNU_entry_value"; break;
1153276371Semaste	case DW_OP_GNU_const_type:
1154276371Semaste		*s = "DW_OP_GNU_const_type"; break;
1155276371Semaste	case DW_OP_GNU_regval_type:
1156276371Semaste		*s = "DW_OP_GNU_regval_type"; break;
1157276371Semaste	case DW_OP_GNU_deref_type:
1158276371Semaste		*s = "DW_OP_GNU_deref_type"; break;
1159276371Semaste	case DW_OP_GNU_convert:
1160276371Semaste		*s = "DW_OP_GNU_convert"; break;
1161276371Semaste	case DW_OP_GNU_reinterpret:
1162276371Semaste		*s = "DW_OP_GNU_reinterpret"; break;
1163276371Semaste	case DW_OP_GNU_parameter_ref:
1164276371Semaste		*s = "DW_OP_GNU_parameter_ref"; break;
1165276371Semaste	case DW_OP_GNU_addr_index:
1166276371Semaste		*s = "DW_OP_GNU_addr_index"; break;
1167276371Semaste	case DW_OP_GNU_const_index:
1168276371Semaste		*s = "DW_OP_GNU_const_index"; break;
1169260684Skaiw	default:
1170260684Skaiw		return (DW_DLV_NO_ENTRY);
1171260684Skaiw	}
1172260684Skaiw
1173260684Skaiw	return (DW_DLV_OK);
1174260684Skaiw}
1175260684Skaiw
1176260684Skaiwint
1177260684Skaiwdwarf_get_ORD_name(unsigned ord, const char **s)
1178260684Skaiw{
1179260684Skaiw
1180260684Skaiw	assert(s != NULL);
1181260684Skaiw
1182260684Skaiw	switch (ord) {
1183260684Skaiw	case DW_ORD_row_major:
1184260684Skaiw		*s = "DW_ORD_row_major"; break;
1185260684Skaiw	case DW_ORD_col_major:
1186260684Skaiw		*s = "DW_ORD_col_major"; break;
1187260684Skaiw	default:
1188260684Skaiw		return (DW_DLV_NO_ENTRY);
1189260684Skaiw	}
1190260684Skaiw
1191260684Skaiw	return (DW_DLV_OK);
1192260684Skaiw}
1193260684Skaiw
1194260684Skaiwint
1195260684Skaiwdwarf_get_TAG_name(unsigned tag, const char **s)
1196260684Skaiw{
1197260684Skaiw
1198260684Skaiw	assert(s != NULL);
1199260684Skaiw
1200260684Skaiw	switch (tag) {
1201260684Skaiw	case DW_TAG_access_declaration:
1202260684Skaiw		*s = "DW_TAG_access_declaration"; break;
1203260684Skaiw	case DW_TAG_array_type:
1204260684Skaiw		*s = "DW_TAG_array_type"; break;
1205260684Skaiw	case DW_TAG_base_type:
1206260684Skaiw		*s = "DW_TAG_base_type"; break;
1207260684Skaiw	case DW_TAG_catch_block:
1208260684Skaiw		*s = "DW_TAG_catch_block"; break;
1209260684Skaiw	case DW_TAG_class_type:
1210260684Skaiw		*s = "DW_TAG_class_type"; break;
1211260684Skaiw	case DW_TAG_common_block:
1212260684Skaiw		*s = "DW_TAG_common_block"; break;
1213260684Skaiw	case DW_TAG_common_inclusion:
1214260684Skaiw		*s = "DW_TAG_common_inclusion"; break;
1215260684Skaiw	case DW_TAG_compile_unit:
1216260684Skaiw		*s = "DW_TAG_compile_unit"; break;
1217260684Skaiw	case DW_TAG_condition:
1218260684Skaiw		*s = "DW_TAG_condition"; break;
1219260684Skaiw	case DW_TAG_const_type:
1220260684Skaiw		*s = "DW_TAG_const_type"; break;
1221260684Skaiw	case DW_TAG_constant:
1222260684Skaiw		*s = "DW_TAG_constant"; break;
1223260684Skaiw	case DW_TAG_dwarf_procedure:
1224260684Skaiw		*s = "DW_TAG_dwarf_procedure"; break;
1225260684Skaiw	case DW_TAG_entry_point:
1226260684Skaiw		*s = "DW_TAG_entry_point"; break;
1227260684Skaiw	case DW_TAG_enumeration_type:
1228260684Skaiw		*s = "DW_TAG_enumeration_type"; break;
1229260684Skaiw	case DW_TAG_enumerator:
1230260684Skaiw		*s = "DW_TAG_enumerator"; break;
1231260684Skaiw	case DW_TAG_formal_parameter:
1232260684Skaiw		*s = "DW_TAG_formal_parameter"; break;
1233260684Skaiw	case DW_TAG_friend:
1234260684Skaiw		*s = "DW_TAG_friend"; break;
1235260684Skaiw	case DW_TAG_imported_declaration:
1236260684Skaiw		*s = "DW_TAG_imported_declaration"; break;
1237260684Skaiw	case DW_TAG_imported_module:
1238260684Skaiw		*s = "DW_TAG_imported_module"; break;
1239260684Skaiw	case DW_TAG_imported_unit:
1240260684Skaiw		*s = "DW_TAG_imported_unit"; break;
1241260684Skaiw	case DW_TAG_inheritance:
1242260684Skaiw		*s = "DW_TAG_inheritance"; break;
1243260684Skaiw	case DW_TAG_inlined_subroutine:
1244260684Skaiw		*s = "DW_TAG_inlined_subroutine"; break;
1245260684Skaiw	case DW_TAG_interface_type:
1246260684Skaiw		*s = "DW_TAG_interface_type"; break;
1247260684Skaiw	case DW_TAG_label:
1248260684Skaiw		*s = "DW_TAG_label"; break;
1249260684Skaiw	case DW_TAG_lexical_block:
1250260684Skaiw		*s = "DW_TAG_lexical_block"; break;
1251260684Skaiw	case DW_TAG_member:
1252260684Skaiw		*s = "DW_TAG_member"; break;
1253260684Skaiw	case DW_TAG_module:
1254260684Skaiw		*s = "DW_TAG_module"; break;
1255260684Skaiw	case DW_TAG_namelist:
1256260684Skaiw		*s = "DW_TAG_namelist"; break;
1257260684Skaiw	case DW_TAG_namelist_item:
1258260684Skaiw		*s = "DW_TAG_namelist_item"; break;
1259260684Skaiw	case DW_TAG_namespace:
1260260684Skaiw		*s = "DW_TAG_namespace"; break;
1261260684Skaiw	case DW_TAG_packed_type:
1262260684Skaiw		*s = "DW_TAG_packed_type"; break;
1263260684Skaiw	case DW_TAG_partial_unit:
1264260684Skaiw		*s = "DW_TAG_partial_unit"; break;
1265260684Skaiw	case DW_TAG_pointer_type:
1266260684Skaiw		*s = "DW_TAG_pointer_type"; break;
1267260684Skaiw	case DW_TAG_ptr_to_member_type:
1268260684Skaiw		*s = "DW_TAG_ptr_to_member_type"; break;
1269260684Skaiw	case DW_TAG_reference_type:
1270260684Skaiw		*s = "DW_TAG_reference_type"; break;
1271260684Skaiw	case DW_TAG_restrict_type:
1272260684Skaiw		*s = "DW_TAG_restrict_type"; break;
1273260684Skaiw	case DW_TAG_rvalue_reference_type:
1274260684Skaiw		*s = "DW_TAG_rvalue_reference_type"; break;
1275260684Skaiw	case DW_TAG_set_type:
1276260684Skaiw		*s = "DW_TAG_set_type"; break;
1277260684Skaiw	case DW_TAG_shared_type:
1278260684Skaiw		*s = "DW_TAG_shared_type"; break;
1279260684Skaiw	case DW_TAG_string_type:
1280260684Skaiw		*s = "DW_TAG_string_type"; break;
1281260684Skaiw	case DW_TAG_structure_type:
1282260684Skaiw		*s = "DW_TAG_structure_type"; break;
1283260684Skaiw	case DW_TAG_subprogram:
1284260684Skaiw		*s = "DW_TAG_subprogram"; break;
1285260684Skaiw	case DW_TAG_subrange_type:
1286260684Skaiw		*s = "DW_TAG_subrange_type"; break;
1287260684Skaiw	case DW_TAG_subroutine_type:
1288260684Skaiw		*s = "DW_TAG_subroutine_type"; break;
1289260684Skaiw	case DW_TAG_template_alias:
1290260684Skaiw		*s = "DW_TAG_template_alias"; break;
1291260684Skaiw	case DW_TAG_template_type_parameter:
1292260684Skaiw		*s = "DW_TAG_template_type_parameter"; break;
1293260684Skaiw	case DW_TAG_template_value_parameter:
1294260684Skaiw		*s = "DW_TAG_template_value_parameter"; break;
1295260684Skaiw	case DW_TAG_thrown_type:
1296260684Skaiw		*s = "DW_TAG_thrown_type"; break;
1297260684Skaiw	case DW_TAG_try_block:
1298260684Skaiw		*s = "DW_TAG_try_block"; break;
1299260684Skaiw	case DW_TAG_type_unit:
1300260684Skaiw		*s = "DW_TAG_type_unit"; break;
1301260684Skaiw	case DW_TAG_typedef:
1302260684Skaiw		*s = "DW_TAG_typedef"; break;
1303260684Skaiw	case DW_TAG_union_type:
1304260684Skaiw		*s = "DW_TAG_union_type"; break;
1305260684Skaiw	case DW_TAG_unspecified_parameters:
1306260684Skaiw		*s = "DW_TAG_unspecified_parameters"; break;
1307260684Skaiw	case DW_TAG_unspecified_type:
1308260684Skaiw		*s = "DW_TAG_unspecified_type"; break;
1309260684Skaiw	case DW_TAG_variable:
1310260684Skaiw		*s = "DW_TAG_variable"; break;
1311260684Skaiw	case DW_TAG_variant:
1312260684Skaiw		*s = "DW_TAG_variant"; break;
1313260684Skaiw	case DW_TAG_variant_part:
1314260684Skaiw		*s = "DW_TAG_variant_part"; break;
1315260684Skaiw	case DW_TAG_volatile_type:
1316260684Skaiw		*s = "DW_TAG_volatile_type"; break;
1317260684Skaiw	case DW_TAG_with_stmt:
1318260684Skaiw		*s = "DW_TAG_with_stmt"; break;
1319276371Semaste	case DW_TAG_format_label:
1320276371Semaste		*s = "DW_TAG_format_label"; break;
1321276371Semaste	case DW_TAG_function_template:
1322276371Semaste		*s = "DW_TAG_function_template"; break;
1323276371Semaste	case DW_TAG_class_template:
1324276371Semaste		*s = "DW_TAG_class_template"; break;
1325276371Semaste	case DW_TAG_GNU_BINCL:
1326276371Semaste		*s = "DW_TAG_GNU_BINCL"; break;
1327276371Semaste	case DW_TAG_GNU_EINCL:
1328276371Semaste		*s = "DW_TAG_GNU_EINCL"; break;
1329276371Semaste	case DW_TAG_GNU_template_template_param:
1330276371Semaste		*s = "DW_TAG_GNU_template_template_param"; break;
1331276371Semaste	case DW_TAG_GNU_template_parameter_pack:
1332276371Semaste		*s = "DW_TAG_GNU_template_parameter_pack"; break;
1333276371Semaste	case DW_TAG_GNU_formal_parameter_pack:
1334276371Semaste		*s = "DW_TAG_GNU_formal_parameter_pack"; break;
1335276371Semaste	case DW_TAG_GNU_call_site:
1336276371Semaste		*s = "DW_TAG_GNU_call_site"; break;
1337276371Semaste	case DW_TAG_GNU_call_site_parameter:
1338276371Semaste		*s = "DW_TAG_GNU_call_site_parameter"; break;
1339260684Skaiw	default:
1340260684Skaiw		return (DW_DLV_NO_ENTRY);
1341260684Skaiw	}
1342260684Skaiw
1343260684Skaiw	return (DW_DLV_OK);
1344260684Skaiw}
1345260684Skaiw
1346260684Skaiwint
1347260684Skaiwdwarf_get_VIRTUALITY_name(unsigned vir, const char **s)
1348260684Skaiw{
1349260684Skaiw
1350260684Skaiw	assert(s != NULL);
1351260684Skaiw
1352260684Skaiw	switch (vir) {
1353260684Skaiw	case DW_VIRTUALITY_none:
1354260684Skaiw		*s = "DW_VIRTUALITY_none"; break;
1355260684Skaiw	case DW_VIRTUALITY_virtual:
1356260684Skaiw		*s = "DW_VIRTUALITY_virtual"; break;
1357260684Skaiw	case DW_VIRTUALITY_pure_virtual:
1358260684Skaiw		*s = "DW_VIRTUALITY_pure_virtual"; break;
1359260684Skaiw	default:
1360260684Skaiw		return (DW_DLV_NO_ENTRY);
1361260684Skaiw	}
1362260684Skaiw
1363260684Skaiw	return (DW_DLV_OK);
1364260684Skaiw}
1365260684Skaiw
1366260684Skaiwint
1367260684Skaiwdwarf_get_VIS_name(unsigned vis, const char **s)
1368260684Skaiw{
1369260684Skaiw
1370260684Skaiw	assert(s != NULL);
1371260684Skaiw
1372260684Skaiw	switch (vis) {
1373260684Skaiw	case DW_VIS_local:
1374260684Skaiw		*s = "DW_VIS_local"; break;
1375260684Skaiw	case DW_VIS_exported:
1376260684Skaiw		*s = "DW_VIS_exported"; break;
1377260684Skaiw	case DW_VIS_qualified:
1378260684Skaiw		*s = "DW_VIS_qualified"; break;
1379260684Skaiw	default:
1380260684Skaiw		return (DW_DLV_NO_ENTRY);
1381260684Skaiw	}
1382260684Skaiw
1383260684Skaiw	return (DW_DLV_OK);
1384260684Skaiw}
1385