xref: /freebsd/contrib/elftoolchain/libdwarf/dwarf_dump.c (revision 2de3b87a120614a3b053be7dd845b72f1e9ce804)
1*2de3b87aSKai Wang /*-
2*2de3b87aSKai Wang  * Copyright (c) 2007 John Birrell (jb@freebsd.org)
3*2de3b87aSKai Wang  * Copyright (c) 2009 Kai Wang
4*2de3b87aSKai Wang  * All rights reserved.
5*2de3b87aSKai Wang  *
6*2de3b87aSKai Wang  * Redistribution and use in source and binary forms, with or without
7*2de3b87aSKai Wang  * modification, are permitted provided that the following conditions
8*2de3b87aSKai Wang  * are met:
9*2de3b87aSKai Wang  * 1. Redistributions of source code must retain the above copyright
10*2de3b87aSKai Wang  *    notice, this list of conditions and the following disclaimer.
11*2de3b87aSKai Wang  * 2. Redistributions in binary form must reproduce the above copyright
12*2de3b87aSKai Wang  *    notice, this list of conditions and the following disclaimer in the
13*2de3b87aSKai Wang  *    documentation and/or other materials provided with the distribution.
14*2de3b87aSKai Wang  *
15*2de3b87aSKai Wang  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16*2de3b87aSKai Wang  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17*2de3b87aSKai Wang  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18*2de3b87aSKai Wang  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19*2de3b87aSKai Wang  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20*2de3b87aSKai Wang  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21*2de3b87aSKai Wang  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22*2de3b87aSKai Wang  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23*2de3b87aSKai Wang  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24*2de3b87aSKai Wang  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25*2de3b87aSKai Wang  * SUCH DAMAGE.
26*2de3b87aSKai Wang  */
27*2de3b87aSKai Wang 
28*2de3b87aSKai Wang #include "_libdwarf.h"
29*2de3b87aSKai Wang 
30*2de3b87aSKai Wang ELFTC_VCSID("$Id: dwarf_dump.c 2073 2011-10-27 03:30:47Z jkoshy $");
31*2de3b87aSKai Wang 
32*2de3b87aSKai Wang int
33*2de3b87aSKai Wang dwarf_get_ACCESS_name(unsigned access, const char **s)
34*2de3b87aSKai Wang {
35*2de3b87aSKai Wang 
36*2de3b87aSKai Wang 	assert(s != NULL);
37*2de3b87aSKai Wang 
38*2de3b87aSKai Wang 	switch (access) {
39*2de3b87aSKai Wang 	case DW_ACCESS_public:
40*2de3b87aSKai Wang 		*s = "DW_ACCESS_public"; break;
41*2de3b87aSKai Wang 	case DW_ACCESS_protected:
42*2de3b87aSKai Wang 		*s = "DW_ACCESS_protected"; break;
43*2de3b87aSKai Wang 	case DW_ACCESS_private:
44*2de3b87aSKai Wang 		*s = "DW_ACCESS_private"; break;
45*2de3b87aSKai Wang 	default:
46*2de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
47*2de3b87aSKai Wang 	}
48*2de3b87aSKai Wang 
49*2de3b87aSKai Wang 	return (DW_DLV_OK);
50*2de3b87aSKai Wang }
51*2de3b87aSKai Wang 
52*2de3b87aSKai Wang int
53*2de3b87aSKai Wang dwarf_get_AT_name(unsigned attr, const char **s)
54*2de3b87aSKai Wang {
55*2de3b87aSKai Wang 
56*2de3b87aSKai Wang 	assert(s != NULL);
57*2de3b87aSKai Wang 
58*2de3b87aSKai Wang 	switch (attr) {
59*2de3b87aSKai Wang 	case DW_AT_abstract_origin:
60*2de3b87aSKai Wang 		*s = "DW_AT_abstract_origin"; break;
61*2de3b87aSKai Wang 	case DW_AT_accessibility:
62*2de3b87aSKai Wang 		*s = "DW_AT_accessibility"; break;
63*2de3b87aSKai Wang 	case DW_AT_address_class:
64*2de3b87aSKai Wang 		*s = "DW_AT_address_class"; break;
65*2de3b87aSKai Wang 	case DW_AT_artificial:
66*2de3b87aSKai Wang 		*s = "DW_AT_artificial"; break;
67*2de3b87aSKai Wang 	case DW_AT_allocated:
68*2de3b87aSKai Wang 		*s = "DW_AT_allocated"; break;
69*2de3b87aSKai Wang 	case DW_AT_associated:
70*2de3b87aSKai Wang 		*s = "DW_AT_associated"; break;
71*2de3b87aSKai Wang 	case DW_AT_base_types:
72*2de3b87aSKai Wang 		*s = "DW_AT_base_types"; break;
73*2de3b87aSKai Wang 	case DW_AT_binary_scale:
74*2de3b87aSKai Wang 		*s = "DW_AT_binary_scale"; break;
75*2de3b87aSKai Wang 	case DW_AT_bit_offset:
76*2de3b87aSKai Wang 		*s = "DW_AT_bit_offset"; break;
77*2de3b87aSKai Wang 	case DW_AT_bit_size:
78*2de3b87aSKai Wang 		*s = "DW_AT_bit_size"; break;
79*2de3b87aSKai Wang 	case DW_AT_bit_stride:
80*2de3b87aSKai Wang 		*s = "DW_AT_bit_stride"; break;
81*2de3b87aSKai Wang 	case DW_AT_byte_size:
82*2de3b87aSKai Wang 		*s = "DW_AT_byte_size"; break;
83*2de3b87aSKai Wang 	case DW_AT_byte_stride:
84*2de3b87aSKai Wang 		*s = "DW_AT_byte_stride"; break;
85*2de3b87aSKai Wang 	case DW_AT_calling_convention:
86*2de3b87aSKai Wang 		*s = "DW_AT_calling_convention"; break;
87*2de3b87aSKai Wang 	case DW_AT_common_reference:
88*2de3b87aSKai Wang 		*s = "DW_AT_common_reference"; break;
89*2de3b87aSKai Wang 	case DW_AT_comp_dir:
90*2de3b87aSKai Wang 		*s = "DW_AT_comp_dir"; break;
91*2de3b87aSKai Wang 	case DW_AT_const_expr:
92*2de3b87aSKai Wang 		*s = "DW_AT_const_expr"; break;
93*2de3b87aSKai Wang 	case DW_AT_const_value:
94*2de3b87aSKai Wang 		*s = "DW_AT_const_value"; break;
95*2de3b87aSKai Wang 	case DW_AT_containing_type:
96*2de3b87aSKai Wang 		*s = "DW_AT_containing_type"; break;
97*2de3b87aSKai Wang 	case DW_AT_count:
98*2de3b87aSKai Wang 		*s = "DW_AT_count"; break;
99*2de3b87aSKai Wang 	case DW_AT_call_column:
100*2de3b87aSKai Wang 		*s = "DW_AT_call_column"; break;
101*2de3b87aSKai Wang 	case DW_AT_call_file:
102*2de3b87aSKai Wang 		*s = "DW_AT_call_file"; break;
103*2de3b87aSKai Wang 	case DW_AT_call_line:
104*2de3b87aSKai Wang 		*s = "DW_AT_call_line"; break;
105*2de3b87aSKai Wang 	case DW_AT_data_bit_offset:
106*2de3b87aSKai Wang 		*s = "DW_AT_data_bit_offset"; break;
107*2de3b87aSKai Wang 	case DW_AT_data_location:
108*2de3b87aSKai Wang 		*s = "DW_AT_data_location"; break;
109*2de3b87aSKai Wang 	case DW_AT_data_member_location:
110*2de3b87aSKai Wang 		*s = "DW_AT_data_member_location"; break;
111*2de3b87aSKai Wang 	case DW_AT_decl_column:
112*2de3b87aSKai Wang 		*s = "DW_AT_decl_column"; break;
113*2de3b87aSKai Wang 	case DW_AT_decl_file:
114*2de3b87aSKai Wang 		*s = "DW_AT_decl_file"; break;
115*2de3b87aSKai Wang 	case DW_AT_decl_line:
116*2de3b87aSKai Wang 		*s = "DW_AT_decl_line"; break;
117*2de3b87aSKai Wang 	case DW_AT_declaration:
118*2de3b87aSKai Wang 		*s = "DW_AT_declaration"; break;
119*2de3b87aSKai Wang 	case DW_AT_default_value:
120*2de3b87aSKai Wang 		*s = "DW_AT_default_value"; break;
121*2de3b87aSKai Wang 	case DW_AT_decimal_scale:
122*2de3b87aSKai Wang 		*s = "DW_AT_decimal_scale"; break;
123*2de3b87aSKai Wang 	case DW_AT_decimal_sign:
124*2de3b87aSKai Wang 		*s = "DW_AT_decimal_sign"; break;
125*2de3b87aSKai Wang 	case DW_AT_description:
126*2de3b87aSKai Wang 		*s = "DW_AT_description"; break;
127*2de3b87aSKai Wang 	case DW_AT_digit_count:
128*2de3b87aSKai Wang 		*s = "DW_AT_digit_count"; break;
129*2de3b87aSKai Wang 	case DW_AT_discr:
130*2de3b87aSKai Wang 		*s = "DW_AT_discr"; break;
131*2de3b87aSKai Wang 	case DW_AT_discr_list:
132*2de3b87aSKai Wang 		*s = "DW_AT_discr_list"; break;
133*2de3b87aSKai Wang 	case DW_AT_discr_value:
134*2de3b87aSKai Wang 		*s = "DW_AT_discr_value"; break;
135*2de3b87aSKai Wang 	case DW_AT_element_list:
136*2de3b87aSKai Wang 		*s = "DW_AT_element_list"; break;
137*2de3b87aSKai Wang 	case DW_AT_encoding:
138*2de3b87aSKai Wang 		*s = "DW_AT_encoding"; break;
139*2de3b87aSKai Wang 	case DW_AT_enum_class:
140*2de3b87aSKai Wang 		*s = "DW_AT_enum_class"; break;
141*2de3b87aSKai Wang 	case DW_AT_external:
142*2de3b87aSKai Wang 		*s = "DW_AT_external"; break;
143*2de3b87aSKai Wang 	case DW_AT_entry_pc:
144*2de3b87aSKai Wang 		*s = "DW_AT_entry_pc"; break;
145*2de3b87aSKai Wang 	case DW_AT_extension:
146*2de3b87aSKai Wang 		*s = "DW_AT_extension"; break;
147*2de3b87aSKai Wang 	case DW_AT_explicit:
148*2de3b87aSKai Wang 		*s = "DW_AT_explicit"; break;
149*2de3b87aSKai Wang 	case DW_AT_endianity:
150*2de3b87aSKai Wang 		*s = "DW_AT_endianity"; break;
151*2de3b87aSKai Wang 	case DW_AT_elemental:
152*2de3b87aSKai Wang 		*s = "DW_AT_elemental"; break;
153*2de3b87aSKai Wang 	case DW_AT_frame_base:
154*2de3b87aSKai Wang 		*s = "DW_AT_frame_base"; break;
155*2de3b87aSKai Wang 	case DW_AT_friend:
156*2de3b87aSKai Wang 		*s = "DW_AT_friend"; break;
157*2de3b87aSKai Wang 	case DW_AT_high_pc:
158*2de3b87aSKai Wang 		*s = "DW_AT_high_pc"; break;
159*2de3b87aSKai Wang 	case DW_AT_hi_user:
160*2de3b87aSKai Wang 		*s = "DW_AT_hi_user"; break;
161*2de3b87aSKai Wang 	case DW_AT_identifier_case:
162*2de3b87aSKai Wang 		*s = "DW_AT_identifier_case"; break;
163*2de3b87aSKai Wang 	case DW_AT_import:
164*2de3b87aSKai Wang 		*s = "DW_AT_import"; break;
165*2de3b87aSKai Wang 	case DW_AT_inline:
166*2de3b87aSKai Wang 		*s = "DW_AT_inline"; break;
167*2de3b87aSKai Wang 	case DW_AT_is_optional:
168*2de3b87aSKai Wang 		*s = "DW_AT_is_optional"; break;
169*2de3b87aSKai Wang 	case DW_AT_language:
170*2de3b87aSKai Wang 		*s = "DW_AT_language"; break;
171*2de3b87aSKai Wang 	case DW_AT_linkage_name:
172*2de3b87aSKai Wang 		*s = "DW_AT_linkage_name"; break;
173*2de3b87aSKai Wang 	case DW_AT_lo_user:
174*2de3b87aSKai Wang 		*s = "DW_AT_lo_user"; break;
175*2de3b87aSKai Wang 	case DW_AT_location:
176*2de3b87aSKai Wang 		*s = "DW_AT_location"; break;
177*2de3b87aSKai Wang 	case DW_AT_low_pc:
178*2de3b87aSKai Wang 		*s = "DW_AT_low_pc"; break;
179*2de3b87aSKai Wang 	case DW_AT_lower_bound:
180*2de3b87aSKai Wang 		*s = "DW_AT_lower_bound"; break;
181*2de3b87aSKai Wang 	case DW_AT_macro_info:
182*2de3b87aSKai Wang 		*s = "DW_AT_macro_info"; break;
183*2de3b87aSKai Wang 	case DW_AT_main_subprogram:
184*2de3b87aSKai Wang 		*s = "DW_AT_main_subprogram"; break;
185*2de3b87aSKai Wang 	case DW_AT_mutable:
186*2de3b87aSKai Wang 		*s = "DW_AT_mutable"; break;
187*2de3b87aSKai Wang 	case DW_AT_member:
188*2de3b87aSKai Wang 		*s = "DW_AT_member"; break;
189*2de3b87aSKai Wang 	case DW_AT_name:
190*2de3b87aSKai Wang 		*s = "DW_AT_name"; break;
191*2de3b87aSKai Wang 	case DW_AT_namelist_item:
192*2de3b87aSKai Wang 		*s = "DW_AT_namelist_item"; break;
193*2de3b87aSKai Wang 	case DW_AT_ordering:
194*2de3b87aSKai Wang 		*s = "DW_AT_ordering"; break;
195*2de3b87aSKai Wang 	case DW_AT_object_pointer:
196*2de3b87aSKai Wang 		*s = "DW_AT_object_pointer"; break;
197*2de3b87aSKai Wang 	case DW_AT_priority:
198*2de3b87aSKai Wang 		*s = "DW_AT_priority"; break;
199*2de3b87aSKai Wang 	case DW_AT_producer:
200*2de3b87aSKai Wang 		*s = "DW_AT_producer"; break;
201*2de3b87aSKai Wang 	case DW_AT_prototyped:
202*2de3b87aSKai Wang 		*s = "DW_AT_prototyped"; break;
203*2de3b87aSKai Wang 	case DW_AT_picture_string:
204*2de3b87aSKai Wang 		*s = "DW_AT_picture_string"; break;
205*2de3b87aSKai Wang 	case DW_AT_pure:
206*2de3b87aSKai Wang 		*s = "DW_AT_pure"; break;
207*2de3b87aSKai Wang 	case DW_AT_return_addr:
208*2de3b87aSKai Wang 		*s = "DW_AT_return_addr"; break;
209*2de3b87aSKai Wang 	case DW_AT_ranges:
210*2de3b87aSKai Wang 		*s = "DW_AT_ranges"; break;
211*2de3b87aSKai Wang 	case DW_AT_recursive:
212*2de3b87aSKai Wang 		*s = "DW_AT_recursive"; break;
213*2de3b87aSKai Wang 	case DW_AT_segment:
214*2de3b87aSKai Wang 		*s = "DW_AT_segment"; break;
215*2de3b87aSKai Wang 	case DW_AT_sibling:
216*2de3b87aSKai Wang 		*s = "DW_AT_sibling"; break;
217*2de3b87aSKai Wang 	case DW_AT_signature:
218*2de3b87aSKai Wang 		*s = "DW_AT_signature"; break;
219*2de3b87aSKai Wang 	case DW_AT_specification:
220*2de3b87aSKai Wang 		*s = "DW_AT_specification"; break;
221*2de3b87aSKai Wang 	case DW_AT_start_scope:
222*2de3b87aSKai Wang 		*s = "DW_AT_start_scope"; break;
223*2de3b87aSKai Wang 	case DW_AT_static_link:
224*2de3b87aSKai Wang 		*s = "DW_AT_static_link"; break;
225*2de3b87aSKai Wang 	case DW_AT_stmt_list:
226*2de3b87aSKai Wang 		*s = "DW_AT_stmt_list"; break;
227*2de3b87aSKai Wang 	case DW_AT_string_length:
228*2de3b87aSKai Wang 		*s = "DW_AT_string_length"; break;
229*2de3b87aSKai Wang 	case DW_AT_subscr_data:
230*2de3b87aSKai Wang 		*s = "DW_AT_subscr_data"; break;
231*2de3b87aSKai Wang 	case DW_AT_small:
232*2de3b87aSKai Wang 		*s = "DW_AT_small"; break;
233*2de3b87aSKai Wang 	case DW_AT_type:
234*2de3b87aSKai Wang 		*s = "DW_AT_type"; break;
235*2de3b87aSKai Wang 	case DW_AT_trampoline:
236*2de3b87aSKai Wang 		*s = "DW_AT_trampoline"; break;
237*2de3b87aSKai Wang 	case DW_AT_threads_scaled:
238*2de3b87aSKai Wang 		*s = "DW_AT_threads_scaled"; break;
239*2de3b87aSKai Wang 	case DW_AT_upper_bound:
240*2de3b87aSKai Wang 		*s = "DW_AT_upper_bound"; break;
241*2de3b87aSKai Wang 	case DW_AT_use_location:
242*2de3b87aSKai Wang 		*s = "DW_AT_use_location"; break;
243*2de3b87aSKai Wang 	case DW_AT_use_UTF8:
244*2de3b87aSKai Wang 		*s = "DW_AT_use_UTF8"; break;
245*2de3b87aSKai Wang 	case DW_AT_variable_parameter:
246*2de3b87aSKai Wang 		*s = "DW_AT_variable_parameter"; break;
247*2de3b87aSKai Wang 	case DW_AT_virtuality:
248*2de3b87aSKai Wang 		*s = "DW_AT_virtuality"; break;
249*2de3b87aSKai Wang 	case DW_AT_visibility:
250*2de3b87aSKai Wang 		*s = "DW_AT_visibility"; break;
251*2de3b87aSKai Wang 	case DW_AT_vtable_elem_location:
252*2de3b87aSKai Wang 		*s = "DW_AT_vtable_elem_location"; break;
253*2de3b87aSKai Wang 	default:
254*2de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
255*2de3b87aSKai Wang 	}
256*2de3b87aSKai Wang 
257*2de3b87aSKai Wang 	return (DW_DLV_OK);
258*2de3b87aSKai Wang }
259*2de3b87aSKai Wang 
260*2de3b87aSKai Wang int
261*2de3b87aSKai Wang dwarf_get_ATE_name(unsigned ate, const char **s)
262*2de3b87aSKai Wang {
263*2de3b87aSKai Wang 
264*2de3b87aSKai Wang 	assert(s != NULL);
265*2de3b87aSKai Wang 
266*2de3b87aSKai Wang 	switch(ate) {
267*2de3b87aSKai Wang 	case DW_ATE_address:
268*2de3b87aSKai Wang 		*s = "DW_ATE_address"; break;
269*2de3b87aSKai Wang 	case DW_ATE_boolean:
270*2de3b87aSKai Wang 		*s = "DW_ATE_boolean"; break;
271*2de3b87aSKai Wang 	case DW_ATE_complex_float:
272*2de3b87aSKai Wang 		*s = "DW_ATE_complex_float"; break;
273*2de3b87aSKai Wang 	case DW_ATE_float:
274*2de3b87aSKai Wang 		*s = "DW_ATE_float"; break;
275*2de3b87aSKai Wang 	case DW_ATE_signed:
276*2de3b87aSKai Wang 		*s = "DW_ATE_signed"; break;
277*2de3b87aSKai Wang 	case DW_ATE_signed_char:
278*2de3b87aSKai Wang 		*s = "DW_ATE_signed_char"; break;
279*2de3b87aSKai Wang 	case DW_ATE_unsigned:
280*2de3b87aSKai Wang 		*s = "DW_ATE_unsigned"; break;
281*2de3b87aSKai Wang 	case DW_ATE_unsigned_char:
282*2de3b87aSKai Wang 		*s = "DW_ATE_unsigned_char"; break;
283*2de3b87aSKai Wang 	case DW_ATE_imaginary_float:
284*2de3b87aSKai Wang 		*s = "DW_ATE_imaginary_float"; break;
285*2de3b87aSKai Wang 	case DW_ATE_packed_decimal:
286*2de3b87aSKai Wang 		*s = "DW_ATE_packed_decimal"; break;
287*2de3b87aSKai Wang 	case DW_ATE_numeric_string:
288*2de3b87aSKai Wang 		*s = "DW_ATE_numeric_string"; break;
289*2de3b87aSKai Wang 	case DW_ATE_edited:
290*2de3b87aSKai Wang 		*s = "DW_ATE_edited"; break;
291*2de3b87aSKai Wang 	case DW_ATE_signed_fixed:
292*2de3b87aSKai Wang 		*s = "DW_ATE_signed_fixed"; break;
293*2de3b87aSKai Wang 	case DW_ATE_unsigned_fixed:
294*2de3b87aSKai Wang 		*s = "DW_ATE_unsigned_fixed"; break;
295*2de3b87aSKai Wang 	case DW_ATE_decimal_float:
296*2de3b87aSKai Wang 		*s = "DW_ATE_decimal_float"; break;
297*2de3b87aSKai Wang 	case DW_ATE_lo_user:
298*2de3b87aSKai Wang 		*s = "DW_ATE_lo_user"; break;
299*2de3b87aSKai Wang 	case DW_ATE_hi_user:
300*2de3b87aSKai Wang 		*s = "DW_ATE_hi_user"; break;
301*2de3b87aSKai Wang 	default:
302*2de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
303*2de3b87aSKai Wang 	}
304*2de3b87aSKai Wang 
305*2de3b87aSKai Wang 	return (DW_DLV_OK);
306*2de3b87aSKai Wang }
307*2de3b87aSKai Wang 
308*2de3b87aSKai Wang int
309*2de3b87aSKai Wang dwarf_get_CC_name(unsigned cc, const char **s)
310*2de3b87aSKai Wang {
311*2de3b87aSKai Wang 
312*2de3b87aSKai Wang 	assert(s != NULL);
313*2de3b87aSKai Wang 
314*2de3b87aSKai Wang 	switch (cc) {
315*2de3b87aSKai Wang 	case DW_CC_normal:
316*2de3b87aSKai Wang 		*s = "DW_CC_normal"; break;
317*2de3b87aSKai Wang 	case DW_CC_program:
318*2de3b87aSKai Wang 		*s = "DW_CC_program"; break;
319*2de3b87aSKai Wang 	case DW_CC_nocall:
320*2de3b87aSKai Wang 		*s = "DW_CC_nocall"; break;
321*2de3b87aSKai Wang 	case DW_CC_lo_user:
322*2de3b87aSKai Wang 		*s = "DW_CC_lo_user"; break;
323*2de3b87aSKai Wang 	case DW_CC_hi_user:
324*2de3b87aSKai Wang 		*s = "DW_CC_hi_user"; break;
325*2de3b87aSKai Wang 	default:
326*2de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
327*2de3b87aSKai Wang 	}
328*2de3b87aSKai Wang 
329*2de3b87aSKai Wang 	return (DW_DLV_OK);
330*2de3b87aSKai Wang }
331*2de3b87aSKai Wang 
332*2de3b87aSKai Wang int
333*2de3b87aSKai Wang dwarf_get_CFA_name(unsigned cfa, const char **s)
334*2de3b87aSKai Wang {
335*2de3b87aSKai Wang 
336*2de3b87aSKai Wang 	assert(s != NULL);
337*2de3b87aSKai Wang 
338*2de3b87aSKai Wang 	switch (cfa) {
339*2de3b87aSKai Wang 	case DW_CFA_advance_loc:
340*2de3b87aSKai Wang 		*s = "DW_CFA_advance_loc"; break;
341*2de3b87aSKai Wang 	case DW_CFA_offset:
342*2de3b87aSKai Wang 		*s = "DW_CFA_offset"; break;
343*2de3b87aSKai Wang 	case DW_CFA_restore:
344*2de3b87aSKai Wang 		*s = "DW_CFA_restore"; break;
345*2de3b87aSKai Wang 	case DW_CFA_nop:
346*2de3b87aSKai Wang 		*s = "DW_CFA_nop"; break;
347*2de3b87aSKai Wang 	case DW_CFA_set_loc:
348*2de3b87aSKai Wang 		*s = "DW_CFA_set_loc"; break;
349*2de3b87aSKai Wang 	case DW_CFA_advance_loc1:
350*2de3b87aSKai Wang 		*s = "DW_CFA_advance_loc1"; break;
351*2de3b87aSKai Wang 	case DW_CFA_advance_loc2:
352*2de3b87aSKai Wang 		*s = "DW_CFA_advance_loc2"; break;
353*2de3b87aSKai Wang 	case DW_CFA_advance_loc4:
354*2de3b87aSKai Wang 		*s = "DW_CFA_advance_loc4"; break;
355*2de3b87aSKai Wang 	case DW_CFA_offset_extended:
356*2de3b87aSKai Wang 		*s = "DW_CFA_offset_extended"; break;
357*2de3b87aSKai Wang 	case DW_CFA_restore_extended:
358*2de3b87aSKai Wang 		*s = "DW_CFA_restore_extended"; break;
359*2de3b87aSKai Wang 	case DW_CFA_undefined:
360*2de3b87aSKai Wang 		*s = "DW_CFA_undefined"; break;
361*2de3b87aSKai Wang 	case DW_CFA_same_value:
362*2de3b87aSKai Wang 		*s = "DW_CFA_same_value"; break;
363*2de3b87aSKai Wang 	case DW_CFA_register:
364*2de3b87aSKai Wang 		*s = "DW_CFA_register"; break;
365*2de3b87aSKai Wang 	case DW_CFA_remember_state:
366*2de3b87aSKai Wang 		*s = "DW_CFA_remember_state"; break;
367*2de3b87aSKai Wang 	case DW_CFA_restore_state:
368*2de3b87aSKai Wang 		*s = "DW_CFA_restore_state"; break;
369*2de3b87aSKai Wang 	case DW_CFA_def_cfa:
370*2de3b87aSKai Wang 		*s = "DW_CFA_def_cfa"; break;
371*2de3b87aSKai Wang 	case DW_CFA_def_cfa_register:
372*2de3b87aSKai Wang 		*s = "DW_CFA_def_cfa_register"; break;
373*2de3b87aSKai Wang 	case DW_CFA_def_cfa_offset:
374*2de3b87aSKai Wang 		*s = "DW_CFA_def_cfa_offset"; break;
375*2de3b87aSKai Wang 	case DW_CFA_def_cfa_expression:
376*2de3b87aSKai Wang 		*s = "DW_CFA_def_cfa_expression"; break;
377*2de3b87aSKai Wang 	case DW_CFA_expression:
378*2de3b87aSKai Wang 		*s = "DW_CFA_expression"; break;
379*2de3b87aSKai Wang 	case DW_CFA_offset_extended_sf:
380*2de3b87aSKai Wang 		*s = "DW_CFA_offset_extended_sf"; break;
381*2de3b87aSKai Wang 	case DW_CFA_def_cfa_sf:
382*2de3b87aSKai Wang 		*s = "DW_CFA_def_cfa_sf"; break;
383*2de3b87aSKai Wang 	case DW_CFA_def_cfa_offset_sf:
384*2de3b87aSKai Wang 		*s = "DW_CFA_def_cfa_offset_sf"; break;
385*2de3b87aSKai Wang 	case DW_CFA_val_offset:
386*2de3b87aSKai Wang 		*s = "DW_CFA_val_offset"; break;
387*2de3b87aSKai Wang 	case DW_CFA_val_offset_sf:
388*2de3b87aSKai Wang 		*s = "DW_CFA_val_offset_sf"; break;
389*2de3b87aSKai Wang 	case DW_CFA_val_expression:
390*2de3b87aSKai Wang 		*s = "DW_CFA_val_expression"; break;
391*2de3b87aSKai Wang 	case DW_CFA_lo_user:
392*2de3b87aSKai Wang 		*s = "DW_CFA_lo_user"; break;
393*2de3b87aSKai Wang 	case DW_CFA_high_user:
394*2de3b87aSKai Wang 		*s = "DW_CFA_high_user"; break;
395*2de3b87aSKai Wang 	default:
396*2de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
397*2de3b87aSKai Wang 	}
398*2de3b87aSKai Wang 
399*2de3b87aSKai Wang 	return (DW_DLV_OK);
400*2de3b87aSKai Wang }
401*2de3b87aSKai Wang 
402*2de3b87aSKai Wang int
403*2de3b87aSKai Wang dwarf_get_CHILDREN_name(unsigned children, const char **s)
404*2de3b87aSKai Wang {
405*2de3b87aSKai Wang 
406*2de3b87aSKai Wang 	assert(s != NULL);
407*2de3b87aSKai Wang 
408*2de3b87aSKai Wang 	switch (children) {
409*2de3b87aSKai Wang 	case DW_CHILDREN_no:
410*2de3b87aSKai Wang 		*s = "DW_CHILDREN_no"; break;
411*2de3b87aSKai Wang 	case DW_CHILDREN_yes:
412*2de3b87aSKai Wang 		*s = "DW_CHILDREN_yes"; break;
413*2de3b87aSKai Wang 	default:
414*2de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
415*2de3b87aSKai Wang 	}
416*2de3b87aSKai Wang 
417*2de3b87aSKai Wang 	return (DW_DLV_OK);
418*2de3b87aSKai Wang }
419*2de3b87aSKai Wang 
420*2de3b87aSKai Wang int
421*2de3b87aSKai Wang dwarf_get_FORM_name(unsigned form, const char **s)
422*2de3b87aSKai Wang {
423*2de3b87aSKai Wang 
424*2de3b87aSKai Wang 	assert(s != NULL);
425*2de3b87aSKai Wang 
426*2de3b87aSKai Wang 	switch (form) {
427*2de3b87aSKai Wang 	case DW_FORM_addr:
428*2de3b87aSKai Wang 		*s = "DW_FORM_addr"; break;
429*2de3b87aSKai Wang 	case DW_FORM_block:
430*2de3b87aSKai Wang 		*s = "DW_FORM_block"; break;
431*2de3b87aSKai Wang 	case DW_FORM_block1:
432*2de3b87aSKai Wang 		*s = "DW_FORM_block1"; break;
433*2de3b87aSKai Wang 	case DW_FORM_block2:
434*2de3b87aSKai Wang 		*s = "DW_FORM_block2"; break;
435*2de3b87aSKai Wang 	case DW_FORM_block4:
436*2de3b87aSKai Wang 		*s = "DW_FORM_block4"; break;
437*2de3b87aSKai Wang 	case DW_FORM_data1:
438*2de3b87aSKai Wang 		*s = "DW_FORM_data1"; break;
439*2de3b87aSKai Wang 	case DW_FORM_data2:
440*2de3b87aSKai Wang 		*s = "DW_FORM_data2"; break;
441*2de3b87aSKai Wang 	case DW_FORM_data4:
442*2de3b87aSKai Wang 		*s = "DW_FORM_data4"; break;
443*2de3b87aSKai Wang 	case DW_FORM_data8:
444*2de3b87aSKai Wang 		*s = "DW_FORM_data8"; break;
445*2de3b87aSKai Wang 	case DW_FORM_exprloc:
446*2de3b87aSKai Wang 		*s = "DW_FORM_exprloc"; break;
447*2de3b87aSKai Wang 	case DW_FORM_flag:
448*2de3b87aSKai Wang 		*s = "DW_FORM_flag"; break;
449*2de3b87aSKai Wang 	case DW_FORM_flag_present:
450*2de3b87aSKai Wang 		*s = "DW_FORM_flag_present"; break;
451*2de3b87aSKai Wang 	case DW_FORM_indirect:
452*2de3b87aSKai Wang 		*s = "DW_FORM_indirect"; break;
453*2de3b87aSKai Wang 	case DW_FORM_ref1:
454*2de3b87aSKai Wang 		*s = "DW_FORM_ref1"; break;
455*2de3b87aSKai Wang 	case DW_FORM_ref2:
456*2de3b87aSKai Wang 		*s = "DW_FORM_ref2"; break;
457*2de3b87aSKai Wang 	case DW_FORM_ref4:
458*2de3b87aSKai Wang 		*s = "DW_FORM_ref4"; break;
459*2de3b87aSKai Wang 	case DW_FORM_ref8:
460*2de3b87aSKai Wang 		*s = "DW_FORM_ref8"; break;
461*2de3b87aSKai Wang 	case DW_FORM_ref_addr:
462*2de3b87aSKai Wang 		*s = "DW_FORM_ref_addr"; break;
463*2de3b87aSKai Wang 	case DW_FORM_ref_sig8:
464*2de3b87aSKai Wang 		*s = "DW_FORM_ref_sig8"; break;
465*2de3b87aSKai Wang 	case DW_FORM_ref_udata:
466*2de3b87aSKai Wang 		*s = "DW_FORM_ref_udata"; break;
467*2de3b87aSKai Wang 	case DW_FORM_sdata:
468*2de3b87aSKai Wang 		*s = "DW_FORM_sdata"; break;
469*2de3b87aSKai Wang 	case DW_FORM_sec_offset:
470*2de3b87aSKai Wang 		*s = "DW_FORM_sec_offset"; break;
471*2de3b87aSKai Wang 	case DW_FORM_string:
472*2de3b87aSKai Wang 		*s = "DW_FORM_string"; break;
473*2de3b87aSKai Wang 	case DW_FORM_strp:
474*2de3b87aSKai Wang 		*s = "DW_FORM_strp"; break;
475*2de3b87aSKai Wang 	case DW_FORM_udata:
476*2de3b87aSKai Wang 		*s = "DW_FORM_udata"; break;
477*2de3b87aSKai Wang 	default:
478*2de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
479*2de3b87aSKai Wang 	}
480*2de3b87aSKai Wang 
481*2de3b87aSKai Wang 	return (DW_DLV_OK);
482*2de3b87aSKai Wang }
483*2de3b87aSKai Wang 
484*2de3b87aSKai Wang int
485*2de3b87aSKai Wang dwarf_get_DS_name(unsigned ds, const char **s)
486*2de3b87aSKai Wang {
487*2de3b87aSKai Wang 
488*2de3b87aSKai Wang 	assert(s != NULL);
489*2de3b87aSKai Wang 
490*2de3b87aSKai Wang 	switch (ds) {
491*2de3b87aSKai Wang 	case DW_DS_unsigned:
492*2de3b87aSKai Wang 		*s = "DW_DS_unsigned"; break;
493*2de3b87aSKai Wang 	case DW_DS_leading_overpunch:
494*2de3b87aSKai Wang 		*s = "DW_DS_leading_overpunch"; break;
495*2de3b87aSKai Wang 	case DW_DS_trailing_overpunch:
496*2de3b87aSKai Wang 		*s = "DW_DS_trailing_overpunch"; break;
497*2de3b87aSKai Wang 	case DW_DS_leading_separate:
498*2de3b87aSKai Wang 		*s = "DW_DS_leading_separate"; break;
499*2de3b87aSKai Wang 	case DW_DS_trailing_separate:
500*2de3b87aSKai Wang 		*s = "DW_DS_trailing_separate";
501*2de3b87aSKai Wang 	default:
502*2de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
503*2de3b87aSKai Wang 	}
504*2de3b87aSKai Wang 
505*2de3b87aSKai Wang 	return (DW_DLV_OK);
506*2de3b87aSKai Wang }
507*2de3b87aSKai Wang 
508*2de3b87aSKai Wang int
509*2de3b87aSKai Wang dwarf_get_DSC_name(unsigned dsc, const char **s)
510*2de3b87aSKai Wang {
511*2de3b87aSKai Wang 
512*2de3b87aSKai Wang 	assert(s != NULL);
513*2de3b87aSKai Wang 
514*2de3b87aSKai Wang 	switch (dsc) {
515*2de3b87aSKai Wang 	case DW_DSC_label:
516*2de3b87aSKai Wang 		*s = "DW_DSC_label"; break;
517*2de3b87aSKai Wang 	case DW_DSC_range:
518*2de3b87aSKai Wang 		*s = "DW_DSC_range"; break;
519*2de3b87aSKai Wang 	default:
520*2de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
521*2de3b87aSKai Wang 	}
522*2de3b87aSKai Wang 
523*2de3b87aSKai Wang 	return (DW_DLV_OK);
524*2de3b87aSKai Wang }
525*2de3b87aSKai Wang 
526*2de3b87aSKai Wang int
527*2de3b87aSKai Wang dwarf_get_EH_name(unsigned eh, const char **s)
528*2de3b87aSKai Wang {
529*2de3b87aSKai Wang 
530*2de3b87aSKai Wang 	assert(s != NULL);
531*2de3b87aSKai Wang 
532*2de3b87aSKai Wang 	switch (eh) {
533*2de3b87aSKai Wang 	case DW_EH_PE_absptr:
534*2de3b87aSKai Wang 		*s = "DW_EH_PE_absptr"; break;
535*2de3b87aSKai Wang 	case DW_EH_PE_uleb128:
536*2de3b87aSKai Wang 		*s = "DW_EH_PE_uleb128"; break;
537*2de3b87aSKai Wang 	case DW_EH_PE_udata2:
538*2de3b87aSKai Wang 		*s = "DW_EH_PE_udata2"; break;
539*2de3b87aSKai Wang 	case DW_EH_PE_udata4:
540*2de3b87aSKai Wang 		*s = "DW_EH_PE_udata4"; break;
541*2de3b87aSKai Wang 	case DW_EH_PE_udata8:
542*2de3b87aSKai Wang 		*s = "DW_EH_PE_udata8"; break;
543*2de3b87aSKai Wang 	case DW_EH_PE_sleb128:
544*2de3b87aSKai Wang 		*s = "DW_EH_PE_sleb128"; break;
545*2de3b87aSKai Wang 	case DW_EH_PE_sdata2:
546*2de3b87aSKai Wang 		*s = "DW_EH_PE_sdata2"; break;
547*2de3b87aSKai Wang 	case DW_EH_PE_sdata4:
548*2de3b87aSKai Wang 		*s = "DW_EH_PE_sdata4"; break;
549*2de3b87aSKai Wang 	case DW_EH_PE_sdata8:
550*2de3b87aSKai Wang 		*s = "DW_EH_PE_sdata8"; break;
551*2de3b87aSKai Wang 	case DW_EH_PE_pcrel:
552*2de3b87aSKai Wang 		*s = "DW_EH_PE_pcrel"; break;
553*2de3b87aSKai Wang 	case DW_EH_PE_textrel:
554*2de3b87aSKai Wang 		*s = "DW_EH_PE_textrel"; break;
555*2de3b87aSKai Wang 	case DW_EH_PE_datarel:
556*2de3b87aSKai Wang 		*s = "DW_EH_PE_datarel"; break;
557*2de3b87aSKai Wang 	case DW_EH_PE_funcrel:
558*2de3b87aSKai Wang 		*s = "DW_EH_PE_funcrel"; break;
559*2de3b87aSKai Wang 	case DW_EH_PE_aligned:
560*2de3b87aSKai Wang 		*s = "DW_EH_PE_aligned"; break;
561*2de3b87aSKai Wang 	case DW_EH_PE_omit:
562*2de3b87aSKai Wang 		*s = "DW_EH_PE_omit"; break;
563*2de3b87aSKai Wang 	default:
564*2de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
565*2de3b87aSKai Wang 	}
566*2de3b87aSKai Wang 
567*2de3b87aSKai Wang 	return (DW_DLV_OK);
568*2de3b87aSKai Wang }
569*2de3b87aSKai Wang 
570*2de3b87aSKai Wang int
571*2de3b87aSKai Wang dwarf_get_END_name(unsigned end, const char **s)
572*2de3b87aSKai Wang {
573*2de3b87aSKai Wang 
574*2de3b87aSKai Wang 	assert(s != NULL);
575*2de3b87aSKai Wang 
576*2de3b87aSKai Wang 	switch (end) {
577*2de3b87aSKai Wang 	case DW_END_default:
578*2de3b87aSKai Wang 		*s = "DW_END_default"; break;
579*2de3b87aSKai Wang 	case DW_END_big:
580*2de3b87aSKai Wang 		*s = "DW_END_big"; break;
581*2de3b87aSKai Wang 	case DW_END_little:
582*2de3b87aSKai Wang 		*s = "DW_END_little"; break;
583*2de3b87aSKai Wang 	case DW_END_lo_user:
584*2de3b87aSKai Wang 		*s = "DW_END_lo_user"; break;
585*2de3b87aSKai Wang 	case DW_END_high_user:
586*2de3b87aSKai Wang 		*s = "DW_END_high_user"; break;
587*2de3b87aSKai Wang 	default:
588*2de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
589*2de3b87aSKai Wang 	}
590*2de3b87aSKai Wang 
591*2de3b87aSKai Wang 	return (DW_DLV_OK);
592*2de3b87aSKai Wang }
593*2de3b87aSKai Wang 
594*2de3b87aSKai Wang int
595*2de3b87aSKai Wang dwarf_get_ID_name(unsigned id, const char **s)
596*2de3b87aSKai Wang {
597*2de3b87aSKai Wang 
598*2de3b87aSKai Wang 	assert(s != NULL);
599*2de3b87aSKai Wang 
600*2de3b87aSKai Wang 	switch (id) {
601*2de3b87aSKai Wang 	case DW_ID_case_sensitive:
602*2de3b87aSKai Wang 		*s = "DW_ID_case_sensitive"; break;
603*2de3b87aSKai Wang 	case DW_ID_up_case:
604*2de3b87aSKai Wang 		*s = "DW_ID_up_case"; break;
605*2de3b87aSKai Wang 	case DW_ID_down_case:
606*2de3b87aSKai Wang 		*s = "DW_ID_down_case"; break;
607*2de3b87aSKai Wang 	case DW_ID_case_insensitive:
608*2de3b87aSKai Wang 		*s = "DW_ID_case_insensitive"; break;
609*2de3b87aSKai Wang 	default:
610*2de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
611*2de3b87aSKai Wang 	}
612*2de3b87aSKai Wang 
613*2de3b87aSKai Wang 	return (DW_DLV_OK);
614*2de3b87aSKai Wang }
615*2de3b87aSKai Wang 
616*2de3b87aSKai Wang int
617*2de3b87aSKai Wang dwarf_get_INL_name(unsigned inl, const char **s)
618*2de3b87aSKai Wang {
619*2de3b87aSKai Wang 
620*2de3b87aSKai Wang 	assert(s != NULL);
621*2de3b87aSKai Wang 
622*2de3b87aSKai Wang 	switch (inl) {
623*2de3b87aSKai Wang 	case DW_INL_not_inlined:
624*2de3b87aSKai Wang 		*s = "DW_INL_not_inlined"; break;
625*2de3b87aSKai Wang 	case DW_INL_inlined:
626*2de3b87aSKai Wang 		*s = "DW_INL_inlined"; break;
627*2de3b87aSKai Wang 	case DW_INL_declared_not_inlined:
628*2de3b87aSKai Wang 		*s = "DW_INL_declared_not_inlined"; break;
629*2de3b87aSKai Wang 	case DW_INL_declared_inlined:
630*2de3b87aSKai Wang 		*s = "DW_INL_declared_inlined"; break;
631*2de3b87aSKai Wang 	default:
632*2de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
633*2de3b87aSKai Wang 	}
634*2de3b87aSKai Wang 
635*2de3b87aSKai Wang 	return (DW_DLV_OK);
636*2de3b87aSKai Wang }
637*2de3b87aSKai Wang 
638*2de3b87aSKai Wang int
639*2de3b87aSKai Wang dwarf_get_LANG_name(unsigned lang, const char **s)
640*2de3b87aSKai Wang {
641*2de3b87aSKai Wang 
642*2de3b87aSKai Wang 	assert(s != NULL);
643*2de3b87aSKai Wang 
644*2de3b87aSKai Wang 	switch (lang) {
645*2de3b87aSKai Wang 	case DW_LANG_C89:
646*2de3b87aSKai Wang 		*s = "DW_LANG_C89"; break;
647*2de3b87aSKai Wang 	case DW_LANG_C:
648*2de3b87aSKai Wang 		*s = "DW_LANG_C"; break;
649*2de3b87aSKai Wang 	case DW_LANG_Ada83:
650*2de3b87aSKai Wang 		*s = "DW_LANG_Ada83"; break;
651*2de3b87aSKai Wang 	case DW_LANG_C_plus_plus:
652*2de3b87aSKai Wang 		*s = "DW_LANG_C_plus_plus"; break;
653*2de3b87aSKai Wang 	case DW_LANG_Cobol74:
654*2de3b87aSKai Wang 		*s = "DW_LANG_Cobol74"; break;
655*2de3b87aSKai Wang 	case DW_LANG_Cobol85:
656*2de3b87aSKai Wang 		*s = "DW_LANG_Cobol85"; break;
657*2de3b87aSKai Wang 	case DW_LANG_Fortran77:
658*2de3b87aSKai Wang 		*s = "DW_LANG_Fortran77"; break;
659*2de3b87aSKai Wang 	case DW_LANG_Fortran90:
660*2de3b87aSKai Wang 		*s = "DW_LANG_Fortran90"; break;
661*2de3b87aSKai Wang 	case DW_LANG_Pascal83:
662*2de3b87aSKai Wang 		*s = "DW_LANG_Pascal83"; break;
663*2de3b87aSKai Wang 	case DW_LANG_Modula2:
664*2de3b87aSKai Wang 		*s = "DW_LANG_Modula2"; break;
665*2de3b87aSKai Wang 	case DW_LANG_Java:
666*2de3b87aSKai Wang 		*s = "DW_LANG_Java"; break;
667*2de3b87aSKai Wang 	case DW_LANG_C99:
668*2de3b87aSKai Wang 		*s = "DW_LANG_C99"; break;
669*2de3b87aSKai Wang 	case DW_LANG_Ada95:
670*2de3b87aSKai Wang 		*s = "DW_LANG_Ada95"; break;
671*2de3b87aSKai Wang 	case DW_LANG_Fortran95:
672*2de3b87aSKai Wang 		*s = "DW_LANG_Fortran95"; break;
673*2de3b87aSKai Wang 	case DW_LANG_PLI:
674*2de3b87aSKai Wang 		*s = "DW_LANG_PLI"; break;
675*2de3b87aSKai Wang 	case DW_LANG_ObjC:
676*2de3b87aSKai Wang 		*s = "DW_LANG_ObjC"; break;
677*2de3b87aSKai Wang 	case DW_LANG_ObjC_plus_plus:
678*2de3b87aSKai Wang 		*s = "DW_LANG_ObjC_plus_plus"; break;
679*2de3b87aSKai Wang 	case DW_LANG_UPC:
680*2de3b87aSKai Wang 		*s = "DW_LANG_UPC"; break;
681*2de3b87aSKai Wang 	case DW_LANG_D:
682*2de3b87aSKai Wang 		*s = "DW_LANG_D"; break;
683*2de3b87aSKai Wang 	case DW_LANG_lo_user:
684*2de3b87aSKai Wang 		*s = "DW_LANG_lo_user"; break;
685*2de3b87aSKai Wang 	case DW_LANG_hi_user:
686*2de3b87aSKai Wang 		*s = "DW_LANG_hi_user"; break;
687*2de3b87aSKai Wang 	default:
688*2de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
689*2de3b87aSKai Wang 	}
690*2de3b87aSKai Wang 
691*2de3b87aSKai Wang 	return (DW_DLV_OK);
692*2de3b87aSKai Wang }
693*2de3b87aSKai Wang 
694*2de3b87aSKai Wang int
695*2de3b87aSKai Wang dwarf_get_LNE_name(unsigned lne, const char **s)
696*2de3b87aSKai Wang {
697*2de3b87aSKai Wang 
698*2de3b87aSKai Wang 	assert(s != NULL);
699*2de3b87aSKai Wang 
700*2de3b87aSKai Wang 	switch (lne) {
701*2de3b87aSKai Wang 	case DW_LNE_end_sequence:
702*2de3b87aSKai Wang 		*s = "DW_LNE_end_sequence"; break;
703*2de3b87aSKai Wang 	case DW_LNE_set_address:
704*2de3b87aSKai Wang 		*s = "DW_LNE_set_address"; break;
705*2de3b87aSKai Wang 	case DW_LNE_define_file:
706*2de3b87aSKai Wang 		*s = "DW_LNE_define_file"; break;
707*2de3b87aSKai Wang 	case DW_LNE_lo_user:
708*2de3b87aSKai Wang 		*s = "DW_LNE_lo_user"; break;
709*2de3b87aSKai Wang 	case DW_LNE_hi_user:
710*2de3b87aSKai Wang 		*s = "DW_LNE_hi_user"; break;
711*2de3b87aSKai Wang 	default:
712*2de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
713*2de3b87aSKai Wang 	}
714*2de3b87aSKai Wang 
715*2de3b87aSKai Wang 	return (DW_DLV_OK);
716*2de3b87aSKai Wang }
717*2de3b87aSKai Wang 
718*2de3b87aSKai Wang int
719*2de3b87aSKai Wang dwarf_get_LNS_name(unsigned lns, const char **s)
720*2de3b87aSKai Wang {
721*2de3b87aSKai Wang 
722*2de3b87aSKai Wang 	assert(s != NULL);
723*2de3b87aSKai Wang 
724*2de3b87aSKai Wang 	switch (lns) {
725*2de3b87aSKai Wang 	case DW_LNS_copy:
726*2de3b87aSKai Wang 		*s = "DW_LNS_copy"; break;
727*2de3b87aSKai Wang 	case DW_LNS_advance_pc:
728*2de3b87aSKai Wang 		*s = "DW_LNS_advance_pc"; break;
729*2de3b87aSKai Wang 	case DW_LNS_advance_line:
730*2de3b87aSKai Wang 		*s = "DW_LNS_advance_line"; break;
731*2de3b87aSKai Wang 	case DW_LNS_set_file:
732*2de3b87aSKai Wang 		*s = "DW_LNS_set_file"; break;
733*2de3b87aSKai Wang 	case DW_LNS_set_column:
734*2de3b87aSKai Wang 		*s = "DW_LNS_set_column"; break;
735*2de3b87aSKai Wang 	case DW_LNS_negate_stmt:
736*2de3b87aSKai Wang 		*s = "DW_LNS_negate_stmt"; break;
737*2de3b87aSKai Wang 	case DW_LNS_set_basic_block:
738*2de3b87aSKai Wang 		*s = "DW_LNS_set_basic_block"; break;
739*2de3b87aSKai Wang 	case DW_LNS_const_add_pc:
740*2de3b87aSKai Wang 		*s = "DW_LNS_const_add_pc"; break;
741*2de3b87aSKai Wang 	case DW_LNS_fixed_advance_pc:
742*2de3b87aSKai Wang 		*s = "DW_LNS_fixed_advance_pc"; break;
743*2de3b87aSKai Wang 	case DW_LNS_set_prologue_end:
744*2de3b87aSKai Wang 		*s = "DW_LNS_set_prologue_end"; break;
745*2de3b87aSKai Wang 	case DW_LNS_set_epilogue_begin:
746*2de3b87aSKai Wang 		*s = "DW_LNS_set_epilogue_begin"; break;
747*2de3b87aSKai Wang 	case DW_LNS_set_isa:
748*2de3b87aSKai Wang 		*s = "DW_LNS_set_isa"; break;
749*2de3b87aSKai Wang 	default:
750*2de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
751*2de3b87aSKai Wang 	}
752*2de3b87aSKai Wang 
753*2de3b87aSKai Wang 	return (DW_DLV_OK);
754*2de3b87aSKai Wang }
755*2de3b87aSKai Wang 
756*2de3b87aSKai Wang int
757*2de3b87aSKai Wang dwarf_get_MACINFO_name(unsigned mi, const char **s)
758*2de3b87aSKai Wang {
759*2de3b87aSKai Wang 
760*2de3b87aSKai Wang 	assert(s != NULL);
761*2de3b87aSKai Wang 
762*2de3b87aSKai Wang 	switch (mi) {
763*2de3b87aSKai Wang 	case DW_MACINFO_define:
764*2de3b87aSKai Wang 		*s = "DW_MACINFO_define"; break;
765*2de3b87aSKai Wang 	case DW_MACINFO_undef:
766*2de3b87aSKai Wang 		*s = "DW_MACINFO_undef"; break;
767*2de3b87aSKai Wang 	case DW_MACINFO_start_file:
768*2de3b87aSKai Wang 		*s = "DW_MACINFO_start_file"; break;
769*2de3b87aSKai Wang 	case DW_MACINFO_end_file:
770*2de3b87aSKai Wang 		*s = "DW_MACINFO_end_file"; break;
771*2de3b87aSKai Wang 	case DW_MACINFO_vendor_ext:
772*2de3b87aSKai Wang 		*s = "DW_MACINFO_vendor_ext"; break;
773*2de3b87aSKai Wang 	default:
774*2de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
775*2de3b87aSKai Wang 	}
776*2de3b87aSKai Wang 
777*2de3b87aSKai Wang 	return (DW_DLV_OK);
778*2de3b87aSKai Wang }
779*2de3b87aSKai Wang 
780*2de3b87aSKai Wang int
781*2de3b87aSKai Wang dwarf_get_OP_name(unsigned op, const char **s)
782*2de3b87aSKai Wang {
783*2de3b87aSKai Wang 
784*2de3b87aSKai Wang 	assert(s != NULL);
785*2de3b87aSKai Wang 
786*2de3b87aSKai Wang 	switch (op) {
787*2de3b87aSKai Wang 	case DW_OP_deref:
788*2de3b87aSKai Wang 		*s = "DW_OP_deref"; break;
789*2de3b87aSKai Wang 	case DW_OP_reg0:
790*2de3b87aSKai Wang 		*s = "DW_OP_reg0"; break;
791*2de3b87aSKai Wang 	case DW_OP_reg1:
792*2de3b87aSKai Wang 		*s = "DW_OP_reg1"; break;
793*2de3b87aSKai Wang 	case DW_OP_reg2:
794*2de3b87aSKai Wang 		*s = "DW_OP_reg2"; break;
795*2de3b87aSKai Wang 	case DW_OP_reg3:
796*2de3b87aSKai Wang 		*s = "DW_OP_reg3"; break;
797*2de3b87aSKai Wang 	case DW_OP_reg4:
798*2de3b87aSKai Wang 		*s = "DW_OP_reg4"; break;
799*2de3b87aSKai Wang 	case DW_OP_reg5:
800*2de3b87aSKai Wang 		*s = "DW_OP_reg5"; break;
801*2de3b87aSKai Wang 	case DW_OP_reg6:
802*2de3b87aSKai Wang 		*s = "DW_OP_reg6"; break;
803*2de3b87aSKai Wang 	case DW_OP_reg7:
804*2de3b87aSKai Wang 		*s = "DW_OP_reg7"; break;
805*2de3b87aSKai Wang 	case DW_OP_reg8:
806*2de3b87aSKai Wang 		*s = "DW_OP_reg8"; break;
807*2de3b87aSKai Wang 	case DW_OP_reg9:
808*2de3b87aSKai Wang 		*s = "DW_OP_reg9"; break;
809*2de3b87aSKai Wang 	case DW_OP_reg10:
810*2de3b87aSKai Wang 		*s = "DW_OP_reg10"; break;
811*2de3b87aSKai Wang 	case DW_OP_reg11:
812*2de3b87aSKai Wang 		*s = "DW_OP_reg11"; break;
813*2de3b87aSKai Wang 	case DW_OP_reg12:
814*2de3b87aSKai Wang 		*s = "DW_OP_reg12"; break;
815*2de3b87aSKai Wang 	case DW_OP_reg13:
816*2de3b87aSKai Wang 		*s = "DW_OP_reg13"; break;
817*2de3b87aSKai Wang 	case DW_OP_reg14:
818*2de3b87aSKai Wang 		*s = "DW_OP_reg14"; break;
819*2de3b87aSKai Wang 	case DW_OP_reg15:
820*2de3b87aSKai Wang 		*s = "DW_OP_reg15"; break;
821*2de3b87aSKai Wang 	case DW_OP_reg16:
822*2de3b87aSKai Wang 		*s = "DW_OP_reg16"; break;
823*2de3b87aSKai Wang 	case DW_OP_reg17:
824*2de3b87aSKai Wang 		*s = "DW_OP_reg17"; break;
825*2de3b87aSKai Wang 	case DW_OP_reg18:
826*2de3b87aSKai Wang 		*s = "DW_OP_reg18"; break;
827*2de3b87aSKai Wang 	case DW_OP_reg19:
828*2de3b87aSKai Wang 		*s = "DW_OP_reg19"; break;
829*2de3b87aSKai Wang 	case DW_OP_reg20:
830*2de3b87aSKai Wang 		*s = "DW_OP_reg20"; break;
831*2de3b87aSKai Wang 	case DW_OP_reg21:
832*2de3b87aSKai Wang 		*s = "DW_OP_reg21"; break;
833*2de3b87aSKai Wang 	case DW_OP_reg22:
834*2de3b87aSKai Wang 		*s = "DW_OP_reg22"; break;
835*2de3b87aSKai Wang 	case DW_OP_reg23:
836*2de3b87aSKai Wang 		*s = "DW_OP_reg23"; break;
837*2de3b87aSKai Wang 	case DW_OP_reg24:
838*2de3b87aSKai Wang 		*s = "DW_OP_reg24"; break;
839*2de3b87aSKai Wang 	case DW_OP_reg25:
840*2de3b87aSKai Wang 		*s = "DW_OP_reg25"; break;
841*2de3b87aSKai Wang 	case DW_OP_reg26:
842*2de3b87aSKai Wang 		*s = "DW_OP_reg26"; break;
843*2de3b87aSKai Wang 	case DW_OP_reg27:
844*2de3b87aSKai Wang 		*s = "DW_OP_reg27"; break;
845*2de3b87aSKai Wang 	case DW_OP_reg28:
846*2de3b87aSKai Wang 		*s = "DW_OP_reg28"; break;
847*2de3b87aSKai Wang 	case DW_OP_reg29:
848*2de3b87aSKai Wang 		*s = "DW_OP_reg29"; break;
849*2de3b87aSKai Wang 	case DW_OP_reg30:
850*2de3b87aSKai Wang 		*s = "DW_OP_reg30"; break;
851*2de3b87aSKai Wang 	case DW_OP_reg31:
852*2de3b87aSKai Wang 		*s = "DW_OP_reg31"; break;
853*2de3b87aSKai Wang 	case DW_OP_lit0:
854*2de3b87aSKai Wang 		*s = "DW_OP_lit0"; break;
855*2de3b87aSKai Wang 	case DW_OP_lit1:
856*2de3b87aSKai Wang 		*s = "DW_OP_lit1"; break;
857*2de3b87aSKai Wang 	case DW_OP_lit2:
858*2de3b87aSKai Wang 		*s = "DW_OP_lit2"; break;
859*2de3b87aSKai Wang 	case DW_OP_lit3:
860*2de3b87aSKai Wang 		*s = "DW_OP_lit3"; break;
861*2de3b87aSKai Wang 	case DW_OP_lit4:
862*2de3b87aSKai Wang 		*s = "DW_OP_lit4"; break;
863*2de3b87aSKai Wang 	case DW_OP_lit5:
864*2de3b87aSKai Wang 		*s = "DW_OP_lit5"; break;
865*2de3b87aSKai Wang 	case DW_OP_lit6:
866*2de3b87aSKai Wang 		*s = "DW_OP_lit6"; break;
867*2de3b87aSKai Wang 	case DW_OP_lit7:
868*2de3b87aSKai Wang 		*s = "DW_OP_lit7"; break;
869*2de3b87aSKai Wang 	case DW_OP_lit8:
870*2de3b87aSKai Wang 		*s = "DW_OP_lit8"; break;
871*2de3b87aSKai Wang 	case DW_OP_lit9:
872*2de3b87aSKai Wang 		*s = "DW_OP_lit9"; break;
873*2de3b87aSKai Wang 	case DW_OP_lit10:
874*2de3b87aSKai Wang 		*s = "DW_OP_lit10"; break;
875*2de3b87aSKai Wang 	case DW_OP_lit11:
876*2de3b87aSKai Wang 		*s = "DW_OP_lit11"; break;
877*2de3b87aSKai Wang 	case DW_OP_lit12:
878*2de3b87aSKai Wang 		*s = "DW_OP_lit12"; break;
879*2de3b87aSKai Wang 	case DW_OP_lit13:
880*2de3b87aSKai Wang 		*s = "DW_OP_lit13"; break;
881*2de3b87aSKai Wang 	case DW_OP_lit14:
882*2de3b87aSKai Wang 		*s = "DW_OP_lit14"; break;
883*2de3b87aSKai Wang 	case DW_OP_lit15:
884*2de3b87aSKai Wang 		*s = "DW_OP_lit15"; break;
885*2de3b87aSKai Wang 	case DW_OP_lit16:
886*2de3b87aSKai Wang 		*s = "DW_OP_lit16"; break;
887*2de3b87aSKai Wang 	case DW_OP_lit17:
888*2de3b87aSKai Wang 		*s = "DW_OP_lit17"; break;
889*2de3b87aSKai Wang 	case DW_OP_lit18:
890*2de3b87aSKai Wang 		*s = "DW_OP_lit18"; break;
891*2de3b87aSKai Wang 	case DW_OP_lit19:
892*2de3b87aSKai Wang 		*s = "DW_OP_lit19"; break;
893*2de3b87aSKai Wang 	case DW_OP_lit20:
894*2de3b87aSKai Wang 		*s = "DW_OP_lit20"; break;
895*2de3b87aSKai Wang 	case DW_OP_lit21:
896*2de3b87aSKai Wang 		*s = "DW_OP_lit21"; break;
897*2de3b87aSKai Wang 	case DW_OP_lit22:
898*2de3b87aSKai Wang 		*s = "DW_OP_lit22"; break;
899*2de3b87aSKai Wang 	case DW_OP_lit23:
900*2de3b87aSKai Wang 		*s = "DW_OP_lit23"; break;
901*2de3b87aSKai Wang 	case DW_OP_lit24:
902*2de3b87aSKai Wang 		*s = "DW_OP_lit24"; break;
903*2de3b87aSKai Wang 	case DW_OP_lit25:
904*2de3b87aSKai Wang 		*s = "DW_OP_lit25"; break;
905*2de3b87aSKai Wang 	case DW_OP_lit26:
906*2de3b87aSKai Wang 		*s = "DW_OP_lit26"; break;
907*2de3b87aSKai Wang 	case DW_OP_lit27:
908*2de3b87aSKai Wang 		*s = "DW_OP_lit27"; break;
909*2de3b87aSKai Wang 	case DW_OP_lit28:
910*2de3b87aSKai Wang 		*s = "DW_OP_lit28"; break;
911*2de3b87aSKai Wang 	case DW_OP_lit29:
912*2de3b87aSKai Wang 		*s = "DW_OP_lit29"; break;
913*2de3b87aSKai Wang 	case DW_OP_lit30:
914*2de3b87aSKai Wang 		*s = "DW_OP_lit30"; break;
915*2de3b87aSKai Wang 	case DW_OP_lit31:
916*2de3b87aSKai Wang 		*s = "DW_OP_lit31"; break;
917*2de3b87aSKai Wang 	case DW_OP_dup:
918*2de3b87aSKai Wang 		*s = "DW_OP_dup"; break;
919*2de3b87aSKai Wang 	case DW_OP_drop:
920*2de3b87aSKai Wang 		*s = "DW_OP_drop"; break;
921*2de3b87aSKai Wang 	case DW_OP_over:
922*2de3b87aSKai Wang 		*s = "DW_OP_over"; break;
923*2de3b87aSKai Wang 	case DW_OP_swap:
924*2de3b87aSKai Wang 		*s = "DW_OP_swap"; break;
925*2de3b87aSKai Wang 	case DW_OP_rot:
926*2de3b87aSKai Wang 		*s = "DW_OP_rot"; break;
927*2de3b87aSKai Wang 	case DW_OP_xderef:
928*2de3b87aSKai Wang 		*s = "DW_OP_xderef"; break;
929*2de3b87aSKai Wang 	case DW_OP_abs:
930*2de3b87aSKai Wang 		*s = "DW_OP_abs"; break;
931*2de3b87aSKai Wang 	case DW_OP_and:
932*2de3b87aSKai Wang 		*s = "DW_OP_and"; break;
933*2de3b87aSKai Wang 	case DW_OP_div:
934*2de3b87aSKai Wang 		*s = "DW_OP_div"; break;
935*2de3b87aSKai Wang 	case DW_OP_minus:
936*2de3b87aSKai Wang 		*s = "DW_OP_minus"; break;
937*2de3b87aSKai Wang 	case DW_OP_mod:
938*2de3b87aSKai Wang 		*s = "DW_OP_mod"; break;
939*2de3b87aSKai Wang 	case DW_OP_mul:
940*2de3b87aSKai Wang 		*s = "DW_OP_mul"; break;
941*2de3b87aSKai Wang 	case DW_OP_neg:
942*2de3b87aSKai Wang 		*s = "DW_OP_neg"; break;
943*2de3b87aSKai Wang 	case DW_OP_not:
944*2de3b87aSKai Wang 		*s = "DW_OP_not"; break;
945*2de3b87aSKai Wang 	case DW_OP_or:
946*2de3b87aSKai Wang 		*s = "DW_OP_or"; break;
947*2de3b87aSKai Wang 	case DW_OP_plus:
948*2de3b87aSKai Wang 		*s = "DW_OP_plus"; break;
949*2de3b87aSKai Wang 	case DW_OP_shl:
950*2de3b87aSKai Wang 		*s = "DW_OP_shl"; break;
951*2de3b87aSKai Wang 	case DW_OP_shr:
952*2de3b87aSKai Wang 		*s = "DW_OP_shr"; break;
953*2de3b87aSKai Wang 	case DW_OP_shra:
954*2de3b87aSKai Wang 		*s = "DW_OP_shra"; break;
955*2de3b87aSKai Wang 	case DW_OP_xor:
956*2de3b87aSKai Wang 		*s = "DW_OP_xor"; break;
957*2de3b87aSKai Wang 	case DW_OP_eq:
958*2de3b87aSKai Wang 		*s = "DW_OP_eq"; break;
959*2de3b87aSKai Wang 	case DW_OP_ge:
960*2de3b87aSKai Wang 		*s = "DW_OP_ge"; break;
961*2de3b87aSKai Wang 	case DW_OP_gt:
962*2de3b87aSKai Wang 		*s = "DW_OP_gt"; break;
963*2de3b87aSKai Wang 	case DW_OP_le:
964*2de3b87aSKai Wang 		*s = "DW_OP_le"; break;
965*2de3b87aSKai Wang 	case DW_OP_lt:
966*2de3b87aSKai Wang 		*s = "DW_OP_lt"; break;
967*2de3b87aSKai Wang 	case DW_OP_ne:
968*2de3b87aSKai Wang 		*s = "DW_OP_ne"; break;
969*2de3b87aSKai Wang 	case DW_OP_nop:
970*2de3b87aSKai Wang 		*s = "DW_OP_nop"; break;
971*2de3b87aSKai Wang 	case DW_OP_const1u:
972*2de3b87aSKai Wang 		*s = "DW_OP_const1u"; break;
973*2de3b87aSKai Wang 	case DW_OP_const1s:
974*2de3b87aSKai Wang 		*s = "DW_OP_const1s"; break;
975*2de3b87aSKai Wang 	case DW_OP_pick:
976*2de3b87aSKai Wang 		*s = "DW_OP_pick"; break;
977*2de3b87aSKai Wang 	case DW_OP_deref_size:
978*2de3b87aSKai Wang 		*s = "DW_OP_deref_size"; break;
979*2de3b87aSKai Wang 	case DW_OP_xderef_size:
980*2de3b87aSKai Wang 		*s = "DW_OP_xderef_size"; break;
981*2de3b87aSKai Wang 	case DW_OP_const2u:
982*2de3b87aSKai Wang 		*s = "DW_OP_const2u"; break;
983*2de3b87aSKai Wang 	case DW_OP_const2s:
984*2de3b87aSKai Wang 		*s = "DW_OP_const2s"; break;
985*2de3b87aSKai Wang 	case DW_OP_bra:
986*2de3b87aSKai Wang 		*s = "DW_OP_bra"; break;
987*2de3b87aSKai Wang 	case DW_OP_skip:
988*2de3b87aSKai Wang 		*s = "DW_OP_skip"; break;
989*2de3b87aSKai Wang 	case DW_OP_const4u:
990*2de3b87aSKai Wang 		*s = "DW_OP_const4u"; break;
991*2de3b87aSKai Wang 	case DW_OP_const4s:
992*2de3b87aSKai Wang 		*s = "DW_OP_const4s"; break;
993*2de3b87aSKai Wang 	case DW_OP_const8u:
994*2de3b87aSKai Wang 		*s = "DW_OP_const8u"; break;
995*2de3b87aSKai Wang 	case DW_OP_const8s:
996*2de3b87aSKai Wang 		*s = "DW_OP_const8s"; break;
997*2de3b87aSKai Wang 	case DW_OP_constu:
998*2de3b87aSKai Wang 		*s = "DW_OP_constu"; break;
999*2de3b87aSKai Wang 	case DW_OP_plus_uconst:
1000*2de3b87aSKai Wang 		*s = "DW_OP_plus_uconst"; break;
1001*2de3b87aSKai Wang 	case DW_OP_regx:
1002*2de3b87aSKai Wang 		*s = "DW_OP_regx"; break;
1003*2de3b87aSKai Wang 	case DW_OP_piece:
1004*2de3b87aSKai Wang 		*s = "DW_OP_piece"; break;
1005*2de3b87aSKai Wang 	case DW_OP_consts:
1006*2de3b87aSKai Wang 		*s = "DW_OP_consts"; break;
1007*2de3b87aSKai Wang 	case DW_OP_breg0:
1008*2de3b87aSKai Wang 		*s = "DW_OP_breg0"; break;
1009*2de3b87aSKai Wang 	case DW_OP_breg1:
1010*2de3b87aSKai Wang 		*s = "DW_OP_breg1"; break;
1011*2de3b87aSKai Wang 	case DW_OP_breg2:
1012*2de3b87aSKai Wang 		*s = "DW_OP_breg2"; break;
1013*2de3b87aSKai Wang 	case DW_OP_breg3:
1014*2de3b87aSKai Wang 		*s = "DW_OP_breg3"; break;
1015*2de3b87aSKai Wang 	case DW_OP_breg4:
1016*2de3b87aSKai Wang 		*s = "DW_OP_breg4"; break;
1017*2de3b87aSKai Wang 	case DW_OP_breg5:
1018*2de3b87aSKai Wang 		*s = "DW_OP_breg5"; break;
1019*2de3b87aSKai Wang 	case DW_OP_breg6:
1020*2de3b87aSKai Wang 		*s = "DW_OP_breg6"; break;
1021*2de3b87aSKai Wang 	case DW_OP_breg7:
1022*2de3b87aSKai Wang 		*s = "DW_OP_breg7"; break;
1023*2de3b87aSKai Wang 	case DW_OP_breg8:
1024*2de3b87aSKai Wang 		*s = "DW_OP_breg8"; break;
1025*2de3b87aSKai Wang 	case DW_OP_breg9:
1026*2de3b87aSKai Wang 		*s = "DW_OP_breg9"; break;
1027*2de3b87aSKai Wang 	case DW_OP_breg10:
1028*2de3b87aSKai Wang 		*s = "DW_OP_breg10"; break;
1029*2de3b87aSKai Wang 	case DW_OP_breg11:
1030*2de3b87aSKai Wang 		*s = "DW_OP_breg11"; break;
1031*2de3b87aSKai Wang 	case DW_OP_breg12:
1032*2de3b87aSKai Wang 		*s = "DW_OP_breg12"; break;
1033*2de3b87aSKai Wang 	case DW_OP_breg13:
1034*2de3b87aSKai Wang 		*s = "DW_OP_breg13"; break;
1035*2de3b87aSKai Wang 	case DW_OP_breg14:
1036*2de3b87aSKai Wang 		*s = "DW_OP_breg14"; break;
1037*2de3b87aSKai Wang 	case DW_OP_breg15:
1038*2de3b87aSKai Wang 		*s = "DW_OP_breg15"; break;
1039*2de3b87aSKai Wang 	case DW_OP_breg16:
1040*2de3b87aSKai Wang 		*s = "DW_OP_breg16"; break;
1041*2de3b87aSKai Wang 	case DW_OP_breg17:
1042*2de3b87aSKai Wang 		*s = "DW_OP_breg17"; break;
1043*2de3b87aSKai Wang 	case DW_OP_breg18:
1044*2de3b87aSKai Wang 		*s = "DW_OP_breg18"; break;
1045*2de3b87aSKai Wang 	case DW_OP_breg19:
1046*2de3b87aSKai Wang 		*s = "DW_OP_breg19"; break;
1047*2de3b87aSKai Wang 	case DW_OP_breg20:
1048*2de3b87aSKai Wang 		*s = "DW_OP_breg20"; break;
1049*2de3b87aSKai Wang 	case DW_OP_breg21:
1050*2de3b87aSKai Wang 		*s = "DW_OP_breg21"; break;
1051*2de3b87aSKai Wang 	case DW_OP_breg22:
1052*2de3b87aSKai Wang 		*s = "DW_OP_breg22"; break;
1053*2de3b87aSKai Wang 	case DW_OP_breg23:
1054*2de3b87aSKai Wang 		*s = "DW_OP_breg23"; break;
1055*2de3b87aSKai Wang 	case DW_OP_breg24:
1056*2de3b87aSKai Wang 		*s = "DW_OP_breg24"; break;
1057*2de3b87aSKai Wang 	case DW_OP_breg25:
1058*2de3b87aSKai Wang 		*s = "DW_OP_breg25"; break;
1059*2de3b87aSKai Wang 	case DW_OP_breg26:
1060*2de3b87aSKai Wang 		*s = "DW_OP_breg26"; break;
1061*2de3b87aSKai Wang 	case DW_OP_breg27:
1062*2de3b87aSKai Wang 		*s = "DW_OP_breg27"; break;
1063*2de3b87aSKai Wang 	case DW_OP_breg28:
1064*2de3b87aSKai Wang 		*s = "DW_OP_breg28"; break;
1065*2de3b87aSKai Wang 	case DW_OP_breg29:
1066*2de3b87aSKai Wang 		*s = "DW_OP_breg29"; break;
1067*2de3b87aSKai Wang 	case DW_OP_breg30:
1068*2de3b87aSKai Wang 		*s = "DW_OP_breg30"; break;
1069*2de3b87aSKai Wang 	case DW_OP_breg31:
1070*2de3b87aSKai Wang 		*s = "DW_OP_breg31"; break;
1071*2de3b87aSKai Wang 	case DW_OP_fbreg:
1072*2de3b87aSKai Wang 		*s = "DW_OP_fbreg"; break;
1073*2de3b87aSKai Wang 	case DW_OP_bregx:
1074*2de3b87aSKai Wang 		*s = "DW_OP_bregx"; break;
1075*2de3b87aSKai Wang 	case DW_OP_addr:
1076*2de3b87aSKai Wang 		*s = "DW_OP_addr"; break;
1077*2de3b87aSKai Wang 	case DW_OP_push_object_address:
1078*2de3b87aSKai Wang 		*s = "DW_OP_push_object_address"; break;
1079*2de3b87aSKai Wang 	case DW_OP_call2:
1080*2de3b87aSKai Wang 		*s = "DW_OP_call2"; break;
1081*2de3b87aSKai Wang 	case DW_OP_call4:
1082*2de3b87aSKai Wang 		*s = "DW_OP_call4"; break;
1083*2de3b87aSKai Wang 	case DW_OP_call_ref:
1084*2de3b87aSKai Wang 		*s = "DW_OP_call_ref"; break;
1085*2de3b87aSKai Wang 	case DW_OP_form_tls_address:
1086*2de3b87aSKai Wang 		*s = "DW_OP_form_tls_address"; break;
1087*2de3b87aSKai Wang 	case DW_OP_call_frame_cfa:
1088*2de3b87aSKai Wang 		*s = "DW_OP_call_frame_cfa"; break;
1089*2de3b87aSKai Wang 	case DW_OP_bit_piece:
1090*2de3b87aSKai Wang 		*s = "DW_OP_bit_piece"; break;
1091*2de3b87aSKai Wang 	case DW_OP_implicit_value:
1092*2de3b87aSKai Wang 		*s = "DW_OP_implicit_value"; break;
1093*2de3b87aSKai Wang 	case DW_OP_stack_value:
1094*2de3b87aSKai Wang 		*s = "DW_OP_stack_value"; break;
1095*2de3b87aSKai Wang 	case DW_OP_GNU_push_tls_address:
1096*2de3b87aSKai Wang 		*s = "DW_OP_GNU_push_tls_address"; break;
1097*2de3b87aSKai Wang 	default:
1098*2de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
1099*2de3b87aSKai Wang 	}
1100*2de3b87aSKai Wang 
1101*2de3b87aSKai Wang 	return (DW_DLV_OK);
1102*2de3b87aSKai Wang }
1103*2de3b87aSKai Wang 
1104*2de3b87aSKai Wang int
1105*2de3b87aSKai Wang dwarf_get_ORD_name(unsigned ord, const char **s)
1106*2de3b87aSKai Wang {
1107*2de3b87aSKai Wang 
1108*2de3b87aSKai Wang 	assert(s != NULL);
1109*2de3b87aSKai Wang 
1110*2de3b87aSKai Wang 	switch (ord) {
1111*2de3b87aSKai Wang 	case DW_ORD_row_major:
1112*2de3b87aSKai Wang 		*s = "DW_ORD_row_major"; break;
1113*2de3b87aSKai Wang 	case DW_ORD_col_major:
1114*2de3b87aSKai Wang 		*s = "DW_ORD_col_major"; break;
1115*2de3b87aSKai Wang 	default:
1116*2de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
1117*2de3b87aSKai Wang 	}
1118*2de3b87aSKai Wang 
1119*2de3b87aSKai Wang 	return (DW_DLV_OK);
1120*2de3b87aSKai Wang }
1121*2de3b87aSKai Wang 
1122*2de3b87aSKai Wang int
1123*2de3b87aSKai Wang dwarf_get_TAG_name(unsigned tag, const char **s)
1124*2de3b87aSKai Wang {
1125*2de3b87aSKai Wang 
1126*2de3b87aSKai Wang 	assert(s != NULL);
1127*2de3b87aSKai Wang 
1128*2de3b87aSKai Wang 	switch (tag) {
1129*2de3b87aSKai Wang 	case DW_TAG_access_declaration:
1130*2de3b87aSKai Wang 		*s = "DW_TAG_access_declaration"; break;
1131*2de3b87aSKai Wang 	case DW_TAG_array_type:
1132*2de3b87aSKai Wang 		*s = "DW_TAG_array_type"; break;
1133*2de3b87aSKai Wang 	case DW_TAG_base_type:
1134*2de3b87aSKai Wang 		*s = "DW_TAG_base_type"; break;
1135*2de3b87aSKai Wang 	case DW_TAG_catch_block:
1136*2de3b87aSKai Wang 		*s = "DW_TAG_catch_block"; break;
1137*2de3b87aSKai Wang 	case DW_TAG_class_type:
1138*2de3b87aSKai Wang 		*s = "DW_TAG_class_type"; break;
1139*2de3b87aSKai Wang 	case DW_TAG_common_block:
1140*2de3b87aSKai Wang 		*s = "DW_TAG_common_block"; break;
1141*2de3b87aSKai Wang 	case DW_TAG_common_inclusion:
1142*2de3b87aSKai Wang 		*s = "DW_TAG_common_inclusion"; break;
1143*2de3b87aSKai Wang 	case DW_TAG_compile_unit:
1144*2de3b87aSKai Wang 		*s = "DW_TAG_compile_unit"; break;
1145*2de3b87aSKai Wang 	case DW_TAG_condition:
1146*2de3b87aSKai Wang 		*s = "DW_TAG_condition"; break;
1147*2de3b87aSKai Wang 	case DW_TAG_const_type:
1148*2de3b87aSKai Wang 		*s = "DW_TAG_const_type"; break;
1149*2de3b87aSKai Wang 	case DW_TAG_constant:
1150*2de3b87aSKai Wang 		*s = "DW_TAG_constant"; break;
1151*2de3b87aSKai Wang 	case DW_TAG_dwarf_procedure:
1152*2de3b87aSKai Wang 		*s = "DW_TAG_dwarf_procedure"; break;
1153*2de3b87aSKai Wang 	case DW_TAG_entry_point:
1154*2de3b87aSKai Wang 		*s = "DW_TAG_entry_point"; break;
1155*2de3b87aSKai Wang 	case DW_TAG_enumeration_type:
1156*2de3b87aSKai Wang 		*s = "DW_TAG_enumeration_type"; break;
1157*2de3b87aSKai Wang 	case DW_TAG_enumerator:
1158*2de3b87aSKai Wang 		*s = "DW_TAG_enumerator"; break;
1159*2de3b87aSKai Wang 	case DW_TAG_formal_parameter:
1160*2de3b87aSKai Wang 		*s = "DW_TAG_formal_parameter"; break;
1161*2de3b87aSKai Wang 	case DW_TAG_friend:
1162*2de3b87aSKai Wang 		*s = "DW_TAG_friend"; break;
1163*2de3b87aSKai Wang 	case DW_TAG_imported_declaration:
1164*2de3b87aSKai Wang 		*s = "DW_TAG_imported_declaration"; break;
1165*2de3b87aSKai Wang 	case DW_TAG_imported_module:
1166*2de3b87aSKai Wang 		*s = "DW_TAG_imported_module"; break;
1167*2de3b87aSKai Wang 	case DW_TAG_imported_unit:
1168*2de3b87aSKai Wang 		*s = "DW_TAG_imported_unit"; break;
1169*2de3b87aSKai Wang 	case DW_TAG_inheritance:
1170*2de3b87aSKai Wang 		*s = "DW_TAG_inheritance"; break;
1171*2de3b87aSKai Wang 	case DW_TAG_inlined_subroutine:
1172*2de3b87aSKai Wang 		*s = "DW_TAG_inlined_subroutine"; break;
1173*2de3b87aSKai Wang 	case DW_TAG_interface_type:
1174*2de3b87aSKai Wang 		*s = "DW_TAG_interface_type"; break;
1175*2de3b87aSKai Wang 	case DW_TAG_label:
1176*2de3b87aSKai Wang 		*s = "DW_TAG_label"; break;
1177*2de3b87aSKai Wang 	case DW_TAG_lexical_block:
1178*2de3b87aSKai Wang 		*s = "DW_TAG_lexical_block"; break;
1179*2de3b87aSKai Wang 	case DW_TAG_member:
1180*2de3b87aSKai Wang 		*s = "DW_TAG_member"; break;
1181*2de3b87aSKai Wang 	case DW_TAG_module:
1182*2de3b87aSKai Wang 		*s = "DW_TAG_module"; break;
1183*2de3b87aSKai Wang 	case DW_TAG_namelist:
1184*2de3b87aSKai Wang 		*s = "DW_TAG_namelist"; break;
1185*2de3b87aSKai Wang 	case DW_TAG_namelist_item:
1186*2de3b87aSKai Wang 		*s = "DW_TAG_namelist_item"; break;
1187*2de3b87aSKai Wang 	case DW_TAG_namespace:
1188*2de3b87aSKai Wang 		*s = "DW_TAG_namespace"; break;
1189*2de3b87aSKai Wang 	case DW_TAG_packed_type:
1190*2de3b87aSKai Wang 		*s = "DW_TAG_packed_type"; break;
1191*2de3b87aSKai Wang 	case DW_TAG_partial_unit:
1192*2de3b87aSKai Wang 		*s = "DW_TAG_partial_unit"; break;
1193*2de3b87aSKai Wang 	case DW_TAG_pointer_type:
1194*2de3b87aSKai Wang 		*s = "DW_TAG_pointer_type"; break;
1195*2de3b87aSKai Wang 	case DW_TAG_ptr_to_member_type:
1196*2de3b87aSKai Wang 		*s = "DW_TAG_ptr_to_member_type"; break;
1197*2de3b87aSKai Wang 	case DW_TAG_reference_type:
1198*2de3b87aSKai Wang 		*s = "DW_TAG_reference_type"; break;
1199*2de3b87aSKai Wang 	case DW_TAG_restrict_type:
1200*2de3b87aSKai Wang 		*s = "DW_TAG_restrict_type"; break;
1201*2de3b87aSKai Wang 	case DW_TAG_rvalue_reference_type:
1202*2de3b87aSKai Wang 		*s = "DW_TAG_rvalue_reference_type"; break;
1203*2de3b87aSKai Wang 	case DW_TAG_set_type:
1204*2de3b87aSKai Wang 		*s = "DW_TAG_set_type"; break;
1205*2de3b87aSKai Wang 	case DW_TAG_shared_type:
1206*2de3b87aSKai Wang 		*s = "DW_TAG_shared_type"; break;
1207*2de3b87aSKai Wang 	case DW_TAG_string_type:
1208*2de3b87aSKai Wang 		*s = "DW_TAG_string_type"; break;
1209*2de3b87aSKai Wang 	case DW_TAG_structure_type:
1210*2de3b87aSKai Wang 		*s = "DW_TAG_structure_type"; break;
1211*2de3b87aSKai Wang 	case DW_TAG_subprogram:
1212*2de3b87aSKai Wang 		*s = "DW_TAG_subprogram"; break;
1213*2de3b87aSKai Wang 	case DW_TAG_subrange_type:
1214*2de3b87aSKai Wang 		*s = "DW_TAG_subrange_type"; break;
1215*2de3b87aSKai Wang 	case DW_TAG_subroutine_type:
1216*2de3b87aSKai Wang 		*s = "DW_TAG_subroutine_type"; break;
1217*2de3b87aSKai Wang 	case DW_TAG_template_alias:
1218*2de3b87aSKai Wang 		*s = "DW_TAG_template_alias"; break;
1219*2de3b87aSKai Wang 	case DW_TAG_template_type_parameter:
1220*2de3b87aSKai Wang 		*s = "DW_TAG_template_type_parameter"; break;
1221*2de3b87aSKai Wang 	case DW_TAG_template_value_parameter:
1222*2de3b87aSKai Wang 		*s = "DW_TAG_template_value_parameter"; break;
1223*2de3b87aSKai Wang 	case DW_TAG_thrown_type:
1224*2de3b87aSKai Wang 		*s = "DW_TAG_thrown_type"; break;
1225*2de3b87aSKai Wang 	case DW_TAG_try_block:
1226*2de3b87aSKai Wang 		*s = "DW_TAG_try_block"; break;
1227*2de3b87aSKai Wang 	case DW_TAG_type_unit:
1228*2de3b87aSKai Wang 		*s = "DW_TAG_type_unit"; break;
1229*2de3b87aSKai Wang 	case DW_TAG_typedef:
1230*2de3b87aSKai Wang 		*s = "DW_TAG_typedef"; break;
1231*2de3b87aSKai Wang 	case DW_TAG_union_type:
1232*2de3b87aSKai Wang 		*s = "DW_TAG_union_type"; break;
1233*2de3b87aSKai Wang 	case DW_TAG_unspecified_parameters:
1234*2de3b87aSKai Wang 		*s = "DW_TAG_unspecified_parameters"; break;
1235*2de3b87aSKai Wang 	case DW_TAG_unspecified_type:
1236*2de3b87aSKai Wang 		*s = "DW_TAG_unspecified_type"; break;
1237*2de3b87aSKai Wang 	case DW_TAG_variable:
1238*2de3b87aSKai Wang 		*s = "DW_TAG_variable"; break;
1239*2de3b87aSKai Wang 	case DW_TAG_variant:
1240*2de3b87aSKai Wang 		*s = "DW_TAG_variant"; break;
1241*2de3b87aSKai Wang 	case DW_TAG_variant_part:
1242*2de3b87aSKai Wang 		*s = "DW_TAG_variant_part"; break;
1243*2de3b87aSKai Wang 	case DW_TAG_volatile_type:
1244*2de3b87aSKai Wang 		*s = "DW_TAG_volatile_type"; break;
1245*2de3b87aSKai Wang 	case DW_TAG_with_stmt:
1246*2de3b87aSKai Wang 		*s = "DW_TAG_with_stmt"; break;
1247*2de3b87aSKai Wang 	default:
1248*2de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
1249*2de3b87aSKai Wang 	}
1250*2de3b87aSKai Wang 
1251*2de3b87aSKai Wang 	return (DW_DLV_OK);
1252*2de3b87aSKai Wang }
1253*2de3b87aSKai Wang 
1254*2de3b87aSKai Wang int
1255*2de3b87aSKai Wang dwarf_get_VIRTUALITY_name(unsigned vir, const char **s)
1256*2de3b87aSKai Wang {
1257*2de3b87aSKai Wang 
1258*2de3b87aSKai Wang 	assert(s != NULL);
1259*2de3b87aSKai Wang 
1260*2de3b87aSKai Wang 	switch (vir) {
1261*2de3b87aSKai Wang 	case DW_VIRTUALITY_none:
1262*2de3b87aSKai Wang 		*s = "DW_VIRTUALITY_none"; break;
1263*2de3b87aSKai Wang 	case DW_VIRTUALITY_virtual:
1264*2de3b87aSKai Wang 		*s = "DW_VIRTUALITY_virtual"; break;
1265*2de3b87aSKai Wang 	case DW_VIRTUALITY_pure_virtual:
1266*2de3b87aSKai Wang 		*s = "DW_VIRTUALITY_pure_virtual"; break;
1267*2de3b87aSKai Wang 	default:
1268*2de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
1269*2de3b87aSKai Wang 	}
1270*2de3b87aSKai Wang 
1271*2de3b87aSKai Wang 	return (DW_DLV_OK);
1272*2de3b87aSKai Wang }
1273*2de3b87aSKai Wang 
1274*2de3b87aSKai Wang int
1275*2de3b87aSKai Wang dwarf_get_VIS_name(unsigned vis, const char **s)
1276*2de3b87aSKai Wang {
1277*2de3b87aSKai Wang 
1278*2de3b87aSKai Wang 	assert(s != NULL);
1279*2de3b87aSKai Wang 
1280*2de3b87aSKai Wang 	switch (vis) {
1281*2de3b87aSKai Wang 	case DW_VIS_local:
1282*2de3b87aSKai Wang 		*s = "DW_VIS_local"; break;
1283*2de3b87aSKai Wang 	case DW_VIS_exported:
1284*2de3b87aSKai Wang 		*s = "DW_VIS_exported"; break;
1285*2de3b87aSKai Wang 	case DW_VIS_qualified:
1286*2de3b87aSKai Wang 		*s = "DW_VIS_qualified"; break;
1287*2de3b87aSKai Wang 	default:
1288*2de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
1289*2de3b87aSKai Wang 	}
1290*2de3b87aSKai Wang 
1291*2de3b87aSKai Wang 	return (DW_DLV_OK);
1292*2de3b87aSKai Wang }
1293