xref: /freebsd/contrib/elftoolchain/libdwarf/dwarf_dump.c (revision d003e0d7fe0d3a9b4b2c5835bb3f0f6faf3ab538)
12de3b87aSKai Wang /*-
22de3b87aSKai Wang  * Copyright (c) 2007 John Birrell (jb@freebsd.org)
32de3b87aSKai Wang  * Copyright (c) 2009 Kai Wang
42de3b87aSKai Wang  * All rights reserved.
52de3b87aSKai Wang  *
62de3b87aSKai Wang  * Redistribution and use in source and binary forms, with or without
72de3b87aSKai Wang  * modification, are permitted provided that the following conditions
82de3b87aSKai Wang  * are met:
92de3b87aSKai Wang  * 1. Redistributions of source code must retain the above copyright
102de3b87aSKai Wang  *    notice, this list of conditions and the following disclaimer.
112de3b87aSKai Wang  * 2. Redistributions in binary form must reproduce the above copyright
122de3b87aSKai Wang  *    notice, this list of conditions and the following disclaimer in the
132de3b87aSKai Wang  *    documentation and/or other materials provided with the distribution.
142de3b87aSKai Wang  *
152de3b87aSKai Wang  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
162de3b87aSKai Wang  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
172de3b87aSKai Wang  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
182de3b87aSKai Wang  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
192de3b87aSKai Wang  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
202de3b87aSKai Wang  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
212de3b87aSKai Wang  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
222de3b87aSKai Wang  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
232de3b87aSKai Wang  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
242de3b87aSKai Wang  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
252de3b87aSKai Wang  * SUCH DAMAGE.
262de3b87aSKai Wang  */
272de3b87aSKai Wang 
282de3b87aSKai Wang #include "_libdwarf.h"
292de3b87aSKai Wang 
30*d003e0d7SEd Maste ELFTC_VCSID("$Id: dwarf_dump.c 3749 2019-06-28 01:10:44Z emaste $");
312de3b87aSKai Wang 
322de3b87aSKai Wang int
332de3b87aSKai Wang dwarf_get_ACCESS_name(unsigned access, const char **s)
342de3b87aSKai Wang {
352de3b87aSKai Wang 
362de3b87aSKai Wang 	assert(s != NULL);
372de3b87aSKai Wang 
382de3b87aSKai Wang 	switch (access) {
392de3b87aSKai Wang 	case DW_ACCESS_public:
402de3b87aSKai Wang 		*s = "DW_ACCESS_public"; break;
412de3b87aSKai Wang 	case DW_ACCESS_protected:
422de3b87aSKai Wang 		*s = "DW_ACCESS_protected"; break;
432de3b87aSKai Wang 	case DW_ACCESS_private:
442de3b87aSKai Wang 		*s = "DW_ACCESS_private"; break;
452de3b87aSKai Wang 	default:
462de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
472de3b87aSKai Wang 	}
482de3b87aSKai Wang 
492de3b87aSKai Wang 	return (DW_DLV_OK);
502de3b87aSKai Wang }
512de3b87aSKai Wang 
522de3b87aSKai Wang int
532de3b87aSKai Wang dwarf_get_AT_name(unsigned attr, const char **s)
542de3b87aSKai Wang {
552de3b87aSKai Wang 
562de3b87aSKai Wang 	assert(s != NULL);
572de3b87aSKai Wang 
582de3b87aSKai Wang 	switch (attr) {
592de3b87aSKai Wang 	case DW_AT_abstract_origin:
602de3b87aSKai Wang 		*s = "DW_AT_abstract_origin"; break;
612de3b87aSKai Wang 	case DW_AT_accessibility:
622de3b87aSKai Wang 		*s = "DW_AT_accessibility"; break;
632de3b87aSKai Wang 	case DW_AT_address_class:
642de3b87aSKai Wang 		*s = "DW_AT_address_class"; break;
652de3b87aSKai Wang 	case DW_AT_artificial:
662de3b87aSKai Wang 		*s = "DW_AT_artificial"; break;
672de3b87aSKai Wang 	case DW_AT_allocated:
682de3b87aSKai Wang 		*s = "DW_AT_allocated"; break;
692de3b87aSKai Wang 	case DW_AT_associated:
702de3b87aSKai Wang 		*s = "DW_AT_associated"; break;
712de3b87aSKai Wang 	case DW_AT_base_types:
722de3b87aSKai Wang 		*s = "DW_AT_base_types"; break;
732de3b87aSKai Wang 	case DW_AT_binary_scale:
742de3b87aSKai Wang 		*s = "DW_AT_binary_scale"; break;
752de3b87aSKai Wang 	case DW_AT_bit_offset:
762de3b87aSKai Wang 		*s = "DW_AT_bit_offset"; break;
772de3b87aSKai Wang 	case DW_AT_bit_size:
782de3b87aSKai Wang 		*s = "DW_AT_bit_size"; break;
792de3b87aSKai Wang 	case DW_AT_bit_stride:
802de3b87aSKai Wang 		*s = "DW_AT_bit_stride"; break;
812de3b87aSKai Wang 	case DW_AT_byte_size:
822de3b87aSKai Wang 		*s = "DW_AT_byte_size"; break;
832de3b87aSKai Wang 	case DW_AT_byte_stride:
842de3b87aSKai Wang 		*s = "DW_AT_byte_stride"; break;
852de3b87aSKai Wang 	case DW_AT_calling_convention:
862de3b87aSKai Wang 		*s = "DW_AT_calling_convention"; break;
872de3b87aSKai Wang 	case DW_AT_common_reference:
882de3b87aSKai Wang 		*s = "DW_AT_common_reference"; break;
892de3b87aSKai Wang 	case DW_AT_comp_dir:
902de3b87aSKai Wang 		*s = "DW_AT_comp_dir"; break;
912de3b87aSKai Wang 	case DW_AT_const_expr:
922de3b87aSKai Wang 		*s = "DW_AT_const_expr"; break;
932de3b87aSKai Wang 	case DW_AT_const_value:
942de3b87aSKai Wang 		*s = "DW_AT_const_value"; break;
952de3b87aSKai Wang 	case DW_AT_containing_type:
962de3b87aSKai Wang 		*s = "DW_AT_containing_type"; break;
972de3b87aSKai Wang 	case DW_AT_count:
982de3b87aSKai Wang 		*s = "DW_AT_count"; break;
992de3b87aSKai Wang 	case DW_AT_call_column:
1002de3b87aSKai Wang 		*s = "DW_AT_call_column"; break;
1012de3b87aSKai Wang 	case DW_AT_call_file:
1022de3b87aSKai Wang 		*s = "DW_AT_call_file"; break;
1032de3b87aSKai Wang 	case DW_AT_call_line:
1042de3b87aSKai Wang 		*s = "DW_AT_call_line"; break;
1052de3b87aSKai Wang 	case DW_AT_data_bit_offset:
1062de3b87aSKai Wang 		*s = "DW_AT_data_bit_offset"; break;
1072de3b87aSKai Wang 	case DW_AT_data_location:
1082de3b87aSKai Wang 		*s = "DW_AT_data_location"; break;
1092de3b87aSKai Wang 	case DW_AT_data_member_location:
1102de3b87aSKai Wang 		*s = "DW_AT_data_member_location"; break;
1112de3b87aSKai Wang 	case DW_AT_decl_column:
1122de3b87aSKai Wang 		*s = "DW_AT_decl_column"; break;
1132de3b87aSKai Wang 	case DW_AT_decl_file:
1142de3b87aSKai Wang 		*s = "DW_AT_decl_file"; break;
1152de3b87aSKai Wang 	case DW_AT_decl_line:
1162de3b87aSKai Wang 		*s = "DW_AT_decl_line"; break;
1172de3b87aSKai Wang 	case DW_AT_declaration:
1182de3b87aSKai Wang 		*s = "DW_AT_declaration"; break;
1192de3b87aSKai Wang 	case DW_AT_default_value:
1202de3b87aSKai Wang 		*s = "DW_AT_default_value"; break;
1212de3b87aSKai Wang 	case DW_AT_decimal_scale:
1222de3b87aSKai Wang 		*s = "DW_AT_decimal_scale"; break;
1232de3b87aSKai Wang 	case DW_AT_decimal_sign:
1242de3b87aSKai Wang 		*s = "DW_AT_decimal_sign"; break;
1252de3b87aSKai Wang 	case DW_AT_description:
1262de3b87aSKai Wang 		*s = "DW_AT_description"; break;
1272de3b87aSKai Wang 	case DW_AT_digit_count:
1282de3b87aSKai Wang 		*s = "DW_AT_digit_count"; break;
1292de3b87aSKai Wang 	case DW_AT_discr:
1302de3b87aSKai Wang 		*s = "DW_AT_discr"; break;
1312de3b87aSKai Wang 	case DW_AT_discr_list:
1322de3b87aSKai Wang 		*s = "DW_AT_discr_list"; break;
1332de3b87aSKai Wang 	case DW_AT_discr_value:
1342de3b87aSKai Wang 		*s = "DW_AT_discr_value"; break;
1352de3b87aSKai Wang 	case DW_AT_element_list:
1362de3b87aSKai Wang 		*s = "DW_AT_element_list"; break;
1372de3b87aSKai Wang 	case DW_AT_encoding:
1382de3b87aSKai Wang 		*s = "DW_AT_encoding"; break;
1392de3b87aSKai Wang 	case DW_AT_enum_class:
1402de3b87aSKai Wang 		*s = "DW_AT_enum_class"; break;
1412de3b87aSKai Wang 	case DW_AT_external:
1422de3b87aSKai Wang 		*s = "DW_AT_external"; break;
1432de3b87aSKai Wang 	case DW_AT_entry_pc:
1442de3b87aSKai Wang 		*s = "DW_AT_entry_pc"; break;
1452de3b87aSKai Wang 	case DW_AT_extension:
1462de3b87aSKai Wang 		*s = "DW_AT_extension"; break;
1472de3b87aSKai Wang 	case DW_AT_explicit:
1482de3b87aSKai Wang 		*s = "DW_AT_explicit"; break;
1492de3b87aSKai Wang 	case DW_AT_endianity:
1502de3b87aSKai Wang 		*s = "DW_AT_endianity"; break;
1512de3b87aSKai Wang 	case DW_AT_elemental:
1522de3b87aSKai Wang 		*s = "DW_AT_elemental"; break;
1532de3b87aSKai Wang 	case DW_AT_frame_base:
1542de3b87aSKai Wang 		*s = "DW_AT_frame_base"; break;
1552de3b87aSKai Wang 	case DW_AT_friend:
1562de3b87aSKai Wang 		*s = "DW_AT_friend"; break;
1572de3b87aSKai Wang 	case DW_AT_high_pc:
1582de3b87aSKai Wang 		*s = "DW_AT_high_pc"; break;
1592de3b87aSKai Wang 	case DW_AT_hi_user:
1602de3b87aSKai Wang 		*s = "DW_AT_hi_user"; break;
1612de3b87aSKai Wang 	case DW_AT_identifier_case:
1622de3b87aSKai Wang 		*s = "DW_AT_identifier_case"; break;
1632de3b87aSKai Wang 	case DW_AT_import:
1642de3b87aSKai Wang 		*s = "DW_AT_import"; break;
1652de3b87aSKai Wang 	case DW_AT_inline:
1662de3b87aSKai Wang 		*s = "DW_AT_inline"; break;
1672de3b87aSKai Wang 	case DW_AT_is_optional:
1682de3b87aSKai Wang 		*s = "DW_AT_is_optional"; break;
1692de3b87aSKai Wang 	case DW_AT_language:
1702de3b87aSKai Wang 		*s = "DW_AT_language"; break;
1712de3b87aSKai Wang 	case DW_AT_linkage_name:
1722de3b87aSKai Wang 		*s = "DW_AT_linkage_name"; break;
1732de3b87aSKai Wang 	case DW_AT_lo_user:
1742de3b87aSKai Wang 		*s = "DW_AT_lo_user"; break;
1752de3b87aSKai Wang 	case DW_AT_location:
1762de3b87aSKai Wang 		*s = "DW_AT_location"; break;
1772de3b87aSKai Wang 	case DW_AT_low_pc:
1782de3b87aSKai Wang 		*s = "DW_AT_low_pc"; break;
1792de3b87aSKai Wang 	case DW_AT_lower_bound:
1802de3b87aSKai Wang 		*s = "DW_AT_lower_bound"; break;
1812de3b87aSKai Wang 	case DW_AT_macro_info:
1822de3b87aSKai Wang 		*s = "DW_AT_macro_info"; break;
1832de3b87aSKai Wang 	case DW_AT_main_subprogram:
1842de3b87aSKai Wang 		*s = "DW_AT_main_subprogram"; break;
1852de3b87aSKai Wang 	case DW_AT_mutable:
1862de3b87aSKai Wang 		*s = "DW_AT_mutable"; break;
1872de3b87aSKai Wang 	case DW_AT_member:
1882de3b87aSKai Wang 		*s = "DW_AT_member"; break;
1892de3b87aSKai Wang 	case DW_AT_name:
1902de3b87aSKai Wang 		*s = "DW_AT_name"; break;
1912de3b87aSKai Wang 	case DW_AT_namelist_item:
1922de3b87aSKai Wang 		*s = "DW_AT_namelist_item"; break;
1932de3b87aSKai Wang 	case DW_AT_ordering:
1942de3b87aSKai Wang 		*s = "DW_AT_ordering"; break;
1952de3b87aSKai Wang 	case DW_AT_object_pointer:
1962de3b87aSKai Wang 		*s = "DW_AT_object_pointer"; break;
1972de3b87aSKai Wang 	case DW_AT_priority:
1982de3b87aSKai Wang 		*s = "DW_AT_priority"; break;
1992de3b87aSKai Wang 	case DW_AT_producer:
2002de3b87aSKai Wang 		*s = "DW_AT_producer"; break;
2012de3b87aSKai Wang 	case DW_AT_prototyped:
2022de3b87aSKai Wang 		*s = "DW_AT_prototyped"; break;
2032de3b87aSKai Wang 	case DW_AT_picture_string:
2042de3b87aSKai Wang 		*s = "DW_AT_picture_string"; break;
2052de3b87aSKai Wang 	case DW_AT_pure:
2062de3b87aSKai Wang 		*s = "DW_AT_pure"; break;
2072de3b87aSKai Wang 	case DW_AT_return_addr:
2082de3b87aSKai Wang 		*s = "DW_AT_return_addr"; break;
2092de3b87aSKai Wang 	case DW_AT_ranges:
2102de3b87aSKai Wang 		*s = "DW_AT_ranges"; break;
2112de3b87aSKai Wang 	case DW_AT_recursive:
2122de3b87aSKai Wang 		*s = "DW_AT_recursive"; break;
2132de3b87aSKai Wang 	case DW_AT_segment:
2142de3b87aSKai Wang 		*s = "DW_AT_segment"; break;
2152de3b87aSKai Wang 	case DW_AT_sibling:
2162de3b87aSKai Wang 		*s = "DW_AT_sibling"; break;
2172de3b87aSKai Wang 	case DW_AT_signature:
2182de3b87aSKai Wang 		*s = "DW_AT_signature"; break;
2192de3b87aSKai Wang 	case DW_AT_specification:
2202de3b87aSKai Wang 		*s = "DW_AT_specification"; break;
2212de3b87aSKai Wang 	case DW_AT_start_scope:
2222de3b87aSKai Wang 		*s = "DW_AT_start_scope"; break;
2232de3b87aSKai Wang 	case DW_AT_static_link:
2242de3b87aSKai Wang 		*s = "DW_AT_static_link"; break;
2252de3b87aSKai Wang 	case DW_AT_stmt_list:
2262de3b87aSKai Wang 		*s = "DW_AT_stmt_list"; break;
2272de3b87aSKai Wang 	case DW_AT_string_length:
2282de3b87aSKai Wang 		*s = "DW_AT_string_length"; break;
2292de3b87aSKai Wang 	case DW_AT_subscr_data:
2302de3b87aSKai Wang 		*s = "DW_AT_subscr_data"; break;
2312de3b87aSKai Wang 	case DW_AT_small:
2322de3b87aSKai Wang 		*s = "DW_AT_small"; break;
2332de3b87aSKai Wang 	case DW_AT_type:
2342de3b87aSKai Wang 		*s = "DW_AT_type"; break;
2352de3b87aSKai Wang 	case DW_AT_trampoline:
2362de3b87aSKai Wang 		*s = "DW_AT_trampoline"; break;
2372de3b87aSKai Wang 	case DW_AT_threads_scaled:
2382de3b87aSKai Wang 		*s = "DW_AT_threads_scaled"; break;
2392de3b87aSKai Wang 	case DW_AT_upper_bound:
2402de3b87aSKai Wang 		*s = "DW_AT_upper_bound"; break;
2412de3b87aSKai Wang 	case DW_AT_use_location:
2422de3b87aSKai Wang 		*s = "DW_AT_use_location"; break;
2432de3b87aSKai Wang 	case DW_AT_use_UTF8:
2442de3b87aSKai Wang 		*s = "DW_AT_use_UTF8"; break;
2452de3b87aSKai Wang 	case DW_AT_variable_parameter:
2462de3b87aSKai Wang 		*s = "DW_AT_variable_parameter"; break;
2472de3b87aSKai Wang 	case DW_AT_virtuality:
2482de3b87aSKai Wang 		*s = "DW_AT_virtuality"; break;
2492de3b87aSKai Wang 	case DW_AT_visibility:
2502de3b87aSKai Wang 		*s = "DW_AT_visibility"; break;
2512de3b87aSKai Wang 	case DW_AT_vtable_elem_location:
2522de3b87aSKai Wang 		*s = "DW_AT_vtable_elem_location"; break;
253cf781b2eSEd Maste 	case DW_AT_sf_names:
254cf781b2eSEd Maste 		*s = "DW_AT_sf_names"; break;
255cf781b2eSEd Maste 	case DW_AT_src_info:
256cf781b2eSEd Maste 		*s = "DW_AT_src_info"; break;
257cf781b2eSEd Maste 	case DW_AT_mac_info:
258cf781b2eSEd Maste 		*s = "DW_AT_mac_info"; break;
259cf781b2eSEd Maste 	case DW_AT_src_coords:
260cf781b2eSEd Maste 		*s = "DW_AT_src_coords"; break;
261cf781b2eSEd Maste 	case DW_AT_body_begin:
262cf781b2eSEd Maste 		*s = "DW_AT_body_begin"; break;
263cf781b2eSEd Maste 	case DW_AT_body_end:
264cf781b2eSEd Maste 		*s = "DW_AT_body_end"; break;
265bee2765cSEd Maste 	case DW_AT_MIPS_fde:
266bee2765cSEd Maste 		*s = "DW_AT_MIPS_fde"; break;
267bee2765cSEd Maste 	case DW_AT_MIPS_loop_begin:
268bee2765cSEd Maste 		*s = "DW_AT_MIPS_loop_begin"; break;
269bee2765cSEd Maste 	case DW_AT_MIPS_tail_loop_begin:
270bee2765cSEd Maste 		*s = "DW_AT_MIPS_tail_loop_begin"; break;
271bee2765cSEd Maste 	case DW_AT_MIPS_epilog_begin:
272bee2765cSEd Maste 		*s = "DW_AT_MIPS_epilog_begin"; break;
273bee2765cSEd Maste 	case DW_AT_MIPS_loop_unroll_factor:
274bee2765cSEd Maste 		*s = "DW_AT_MIPS_loop_unroll_factor"; break;
275bee2765cSEd Maste 	case DW_AT_MIPS_software_pipeline_depth:
276bee2765cSEd Maste 		*s = "DW_AT_MIPS_software_pipeline_depth"; break;
277bee2765cSEd Maste 	case DW_AT_MIPS_linkage_name:
278bee2765cSEd Maste 		*s = "DW_AT_MIPS_linkage_name"; break;
279bee2765cSEd Maste 	case DW_AT_MIPS_stride:
280bee2765cSEd Maste 		*s = "DW_AT_MIPS_stride"; break;
281bee2765cSEd Maste 	case DW_AT_MIPS_abstract_name:
282bee2765cSEd Maste 		*s = "DW_AT_MIPS_abstract_name"; break;
283bee2765cSEd Maste 	case DW_AT_MIPS_clone_origin:
284bee2765cSEd Maste 		*s = "DW_AT_MIPS_clone_origin"; break;
285bee2765cSEd Maste 	case DW_AT_MIPS_has_inlines:
286bee2765cSEd Maste 		*s = "DW_AT_MIPS_has_inlines"; break;
287bee2765cSEd Maste 	case DW_AT_MIPS_stride_byte:
288bee2765cSEd Maste 		*s = "DW_AT_MIPS_stride_byte"; break;
289bee2765cSEd Maste 	case DW_AT_MIPS_stride_elem:
290bee2765cSEd Maste 		*s = "DW_AT_MIPS_stride_elem"; break;
291bee2765cSEd Maste 	case DW_AT_MIPS_ptr_dopetype:
292bee2765cSEd Maste 		*s = "DW_AT_MIPS_ptr_dopetype"; break;
293bee2765cSEd Maste 	case DW_AT_MIPS_allocatable_dopetype:
294bee2765cSEd Maste 		*s = "DW_AT_MIPS_allocatable_dopetype"; break;
295bee2765cSEd Maste 	case DW_AT_MIPS_assumed_shape_dopetype:
296bee2765cSEd Maste 		*s = "DW_AT_MIPS_assumed_shape_dopetype"; break;
297bee2765cSEd Maste 	case DW_AT_MIPS_assumed_size:
298bee2765cSEd Maste 		*s = "DW_AT_MIPS_assumed_size"; break;
299cf781b2eSEd Maste 	case DW_AT_GNU_vector:
300cf781b2eSEd Maste 		*s = "DW_AT_GNU_vector"; break;
301cf781b2eSEd Maste 	case DW_AT_GNU_guarded_by:
302cf781b2eSEd Maste 		*s = "DW_AT_GNU_guarded_by"; break;
303cf781b2eSEd Maste 	case DW_AT_GNU_pt_guarded_by:
304cf781b2eSEd Maste 		*s = "DW_AT_GNU_pt_guarded_by"; break;
305cf781b2eSEd Maste 	case DW_AT_GNU_guarded:
306cf781b2eSEd Maste 		*s = "DW_AT_GNU_guarded"; break;
307cf781b2eSEd Maste 	case DW_AT_GNU_pt_guarded:
308cf781b2eSEd Maste 		*s = "DW_AT_GNU_pt_guarded"; break;
309cf781b2eSEd Maste 	case DW_AT_GNU_locks_excluded:
310cf781b2eSEd Maste 		*s = "DW_AT_GNU_locks_excluded"; break;
311cf781b2eSEd Maste 	case DW_AT_GNU_exclusive_locks_required:
312cf781b2eSEd Maste 		*s = "DW_AT_GNU_exclusive_locks_required"; break;
313cf781b2eSEd Maste 	case DW_AT_GNU_shared_locks_required:
314cf781b2eSEd Maste 		*s = "DW_AT_GNU_shared_locks_required"; break;
315cf781b2eSEd Maste 	case DW_AT_GNU_odr_signature:
316cf781b2eSEd Maste 		*s = "DW_AT_GNU_odr_signature"; break;
317cf781b2eSEd Maste 	case DW_AT_GNU_template_name:
318cf781b2eSEd Maste 		*s = "DW_AT_GNU_template_name"; break;
319cf781b2eSEd Maste 	case DW_AT_GNU_call_site_value:
320cf781b2eSEd Maste 		*s = "DW_AT_GNU_call_site_value"; break;
321cf781b2eSEd Maste 	case DW_AT_GNU_call_site_data_value:
322cf781b2eSEd Maste 		*s = "DW_AT_GNU_call_site_data_value"; break;
323cf781b2eSEd Maste 	case DW_AT_GNU_call_site_target:
324cf781b2eSEd Maste 		*s = "DW_AT_GNU_call_site_target"; break;
325cf781b2eSEd Maste 	case DW_AT_GNU_call_site_target_clobbered:
326cf781b2eSEd Maste 		*s = "DW_AT_GNU_call_site_target_clobbered"; break;
327cf781b2eSEd Maste 	case DW_AT_GNU_tail_call:
328cf781b2eSEd Maste 		*s = "DW_AT_GNU_tail_call"; break;
329cf781b2eSEd Maste 	case DW_AT_GNU_all_tail_call_sites:
330cf781b2eSEd Maste 		*s = "DW_AT_GNU_all_tail_call_sites"; break;
331cf781b2eSEd Maste 	case DW_AT_GNU_all_call_sites:
332cf781b2eSEd Maste 		*s = "DW_AT_GNU_all_call_sites"; break;
333cf781b2eSEd Maste 	case DW_AT_GNU_all_source_call_sites:
334cf781b2eSEd Maste 		*s = "DW_AT_GNU_all_source_call_sites"; break;
335feba6b41SMark Johnston 	case DW_AT_APPLE_optimized:
336feba6b41SMark Johnston 		*s = "DW_AT_APPLE_optimized"; break;
337feba6b41SMark Johnston 	case DW_AT_APPLE_flags:
338feba6b41SMark Johnston 		*s = "DW_AT_APPLE_flags"; break;
339feba6b41SMark Johnston 	case DW_AT_APPLE_isa:
340feba6b41SMark Johnston 		*s = "DW_AT_APPLE_isa"; break;
341feba6b41SMark Johnston 	case DW_AT_APPLE_block:
342feba6b41SMark Johnston 		*s = "DW_AT_APPLE_block"; break;
343feba6b41SMark Johnston 	case DW_AT_APPLE_major_runtime_vers:
344feba6b41SMark Johnston 		*s = "DW_AT_APPLE_major_runtime_vers"; break;
345feba6b41SMark Johnston 	case DW_AT_APPLE_runtime_class:
346feba6b41SMark Johnston 		*s = "DW_AT_APPLE_runtime_class"; break;
347feba6b41SMark Johnston 	case DW_AT_APPLE_omit_frame_ptr:
348feba6b41SMark Johnston 		*s = "DW_AT_APPLE_omit_frame_ptr"; break;
349feba6b41SMark Johnston 	case DW_AT_APPLE_property_name:
350feba6b41SMark Johnston 		*s = "DW_AT_APPLE_property_name"; break;
351feba6b41SMark Johnston 	case DW_AT_APPLE_property_getter:
352feba6b41SMark Johnston 		*s = "DW_AT_APPLE_property_getter"; break;
353feba6b41SMark Johnston 	case DW_AT_APPLE_property_setter:
354feba6b41SMark Johnston 		*s = "DW_AT_APPLE_property_setter"; break;
355feba6b41SMark Johnston 	case DW_AT_APPLE_property_attribute:
356feba6b41SMark Johnston 		*s = "DW_AT_APPLE_property_attribute"; break;
357feba6b41SMark Johnston 	case DW_AT_APPLE_objc_complete_type:
358feba6b41SMark Johnston 		*s = "DW_AT_APPLE_objc_complete_type"; break;
359feba6b41SMark Johnston 	case DW_AT_APPLE_property:
360feba6b41SMark Johnston 		*s = "DW_AT_APPLE_property"; break;
3612de3b87aSKai Wang 	default:
3622de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
3632de3b87aSKai Wang 	}
3642de3b87aSKai Wang 
3652de3b87aSKai Wang 	return (DW_DLV_OK);
3662de3b87aSKai Wang }
3672de3b87aSKai Wang 
3682de3b87aSKai Wang int
3692de3b87aSKai Wang dwarf_get_ATE_name(unsigned ate, const char **s)
3702de3b87aSKai Wang {
3712de3b87aSKai Wang 
3722de3b87aSKai Wang 	assert(s != NULL);
3732de3b87aSKai Wang 
3742de3b87aSKai Wang 	switch(ate) {
3752de3b87aSKai Wang 	case DW_ATE_address:
3762de3b87aSKai Wang 		*s = "DW_ATE_address"; break;
3772de3b87aSKai Wang 	case DW_ATE_boolean:
3782de3b87aSKai Wang 		*s = "DW_ATE_boolean"; break;
3792de3b87aSKai Wang 	case DW_ATE_complex_float:
3802de3b87aSKai Wang 		*s = "DW_ATE_complex_float"; break;
3812de3b87aSKai Wang 	case DW_ATE_float:
3822de3b87aSKai Wang 		*s = "DW_ATE_float"; break;
3832de3b87aSKai Wang 	case DW_ATE_signed:
3842de3b87aSKai Wang 		*s = "DW_ATE_signed"; break;
3852de3b87aSKai Wang 	case DW_ATE_signed_char:
3862de3b87aSKai Wang 		*s = "DW_ATE_signed_char"; break;
3872de3b87aSKai Wang 	case DW_ATE_unsigned:
3882de3b87aSKai Wang 		*s = "DW_ATE_unsigned"; break;
3892de3b87aSKai Wang 	case DW_ATE_unsigned_char:
3902de3b87aSKai Wang 		*s = "DW_ATE_unsigned_char"; break;
3912de3b87aSKai Wang 	case DW_ATE_imaginary_float:
3922de3b87aSKai Wang 		*s = "DW_ATE_imaginary_float"; break;
3932de3b87aSKai Wang 	case DW_ATE_packed_decimal:
3942de3b87aSKai Wang 		*s = "DW_ATE_packed_decimal"; break;
3952de3b87aSKai Wang 	case DW_ATE_numeric_string:
3962de3b87aSKai Wang 		*s = "DW_ATE_numeric_string"; break;
3972de3b87aSKai Wang 	case DW_ATE_edited:
3982de3b87aSKai Wang 		*s = "DW_ATE_edited"; break;
3992de3b87aSKai Wang 	case DW_ATE_signed_fixed:
4002de3b87aSKai Wang 		*s = "DW_ATE_signed_fixed"; break;
4012de3b87aSKai Wang 	case DW_ATE_unsigned_fixed:
4022de3b87aSKai Wang 		*s = "DW_ATE_unsigned_fixed"; break;
4032de3b87aSKai Wang 	case DW_ATE_decimal_float:
4042de3b87aSKai Wang 		*s = "DW_ATE_decimal_float"; break;
4052de3b87aSKai Wang 	case DW_ATE_lo_user:
4062de3b87aSKai Wang 		*s = "DW_ATE_lo_user"; break;
4072de3b87aSKai Wang 	case DW_ATE_hi_user:
4082de3b87aSKai Wang 		*s = "DW_ATE_hi_user"; break;
4092de3b87aSKai Wang 	default:
4102de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
4112de3b87aSKai Wang 	}
4122de3b87aSKai Wang 
4132de3b87aSKai Wang 	return (DW_DLV_OK);
4142de3b87aSKai Wang }
4152de3b87aSKai Wang 
4162de3b87aSKai Wang int
4172de3b87aSKai Wang dwarf_get_CC_name(unsigned cc, const char **s)
4182de3b87aSKai Wang {
4192de3b87aSKai Wang 
4202de3b87aSKai Wang 	assert(s != NULL);
4212de3b87aSKai Wang 
4222de3b87aSKai Wang 	switch (cc) {
4232de3b87aSKai Wang 	case DW_CC_normal:
4242de3b87aSKai Wang 		*s = "DW_CC_normal"; break;
4252de3b87aSKai Wang 	case DW_CC_program:
4262de3b87aSKai Wang 		*s = "DW_CC_program"; break;
4272de3b87aSKai Wang 	case DW_CC_nocall:
4282de3b87aSKai Wang 		*s = "DW_CC_nocall"; break;
4292de3b87aSKai Wang 	case DW_CC_lo_user:
4302de3b87aSKai Wang 		*s = "DW_CC_lo_user"; break;
4312de3b87aSKai Wang 	case DW_CC_hi_user:
4322de3b87aSKai Wang 		*s = "DW_CC_hi_user"; break;
4332de3b87aSKai Wang 	default:
4342de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
4352de3b87aSKai Wang 	}
4362de3b87aSKai Wang 
4372de3b87aSKai Wang 	return (DW_DLV_OK);
4382de3b87aSKai Wang }
4392de3b87aSKai Wang 
4402de3b87aSKai Wang int
4412de3b87aSKai Wang dwarf_get_CFA_name(unsigned cfa, const char **s)
4422de3b87aSKai Wang {
4432de3b87aSKai Wang 
4442de3b87aSKai Wang 	assert(s != NULL);
4452de3b87aSKai Wang 
4462de3b87aSKai Wang 	switch (cfa) {
4472de3b87aSKai Wang 	case DW_CFA_advance_loc:
4482de3b87aSKai Wang 		*s = "DW_CFA_advance_loc"; break;
4492de3b87aSKai Wang 	case DW_CFA_offset:
4502de3b87aSKai Wang 		*s = "DW_CFA_offset"; break;
4512de3b87aSKai Wang 	case DW_CFA_restore:
4522de3b87aSKai Wang 		*s = "DW_CFA_restore"; break;
4532de3b87aSKai Wang 	case DW_CFA_nop:
4542de3b87aSKai Wang 		*s = "DW_CFA_nop"; break;
4552de3b87aSKai Wang 	case DW_CFA_set_loc:
4562de3b87aSKai Wang 		*s = "DW_CFA_set_loc"; break;
4572de3b87aSKai Wang 	case DW_CFA_advance_loc1:
4582de3b87aSKai Wang 		*s = "DW_CFA_advance_loc1"; break;
4592de3b87aSKai Wang 	case DW_CFA_advance_loc2:
4602de3b87aSKai Wang 		*s = "DW_CFA_advance_loc2"; break;
4612de3b87aSKai Wang 	case DW_CFA_advance_loc4:
4622de3b87aSKai Wang 		*s = "DW_CFA_advance_loc4"; break;
4632de3b87aSKai Wang 	case DW_CFA_offset_extended:
4642de3b87aSKai Wang 		*s = "DW_CFA_offset_extended"; break;
4652de3b87aSKai Wang 	case DW_CFA_restore_extended:
4662de3b87aSKai Wang 		*s = "DW_CFA_restore_extended"; break;
4672de3b87aSKai Wang 	case DW_CFA_undefined:
4682de3b87aSKai Wang 		*s = "DW_CFA_undefined"; break;
4692de3b87aSKai Wang 	case DW_CFA_same_value:
4702de3b87aSKai Wang 		*s = "DW_CFA_same_value"; break;
4712de3b87aSKai Wang 	case DW_CFA_register:
4722de3b87aSKai Wang 		*s = "DW_CFA_register"; break;
4732de3b87aSKai Wang 	case DW_CFA_remember_state:
4742de3b87aSKai Wang 		*s = "DW_CFA_remember_state"; break;
4752de3b87aSKai Wang 	case DW_CFA_restore_state:
4762de3b87aSKai Wang 		*s = "DW_CFA_restore_state"; break;
4772de3b87aSKai Wang 	case DW_CFA_def_cfa:
4782de3b87aSKai Wang 		*s = "DW_CFA_def_cfa"; break;
4792de3b87aSKai Wang 	case DW_CFA_def_cfa_register:
4802de3b87aSKai Wang 		*s = "DW_CFA_def_cfa_register"; break;
4812de3b87aSKai Wang 	case DW_CFA_def_cfa_offset:
4822de3b87aSKai Wang 		*s = "DW_CFA_def_cfa_offset"; break;
4832de3b87aSKai Wang 	case DW_CFA_def_cfa_expression:
4842de3b87aSKai Wang 		*s = "DW_CFA_def_cfa_expression"; break;
4852de3b87aSKai Wang 	case DW_CFA_expression:
4862de3b87aSKai Wang 		*s = "DW_CFA_expression"; break;
4872de3b87aSKai Wang 	case DW_CFA_offset_extended_sf:
4882de3b87aSKai Wang 		*s = "DW_CFA_offset_extended_sf"; break;
4892de3b87aSKai Wang 	case DW_CFA_def_cfa_sf:
4902de3b87aSKai Wang 		*s = "DW_CFA_def_cfa_sf"; break;
4912de3b87aSKai Wang 	case DW_CFA_def_cfa_offset_sf:
4922de3b87aSKai Wang 		*s = "DW_CFA_def_cfa_offset_sf"; break;
4932de3b87aSKai Wang 	case DW_CFA_val_offset:
4942de3b87aSKai Wang 		*s = "DW_CFA_val_offset"; break;
4952de3b87aSKai Wang 	case DW_CFA_val_offset_sf:
4962de3b87aSKai Wang 		*s = "DW_CFA_val_offset_sf"; break;
4972de3b87aSKai Wang 	case DW_CFA_val_expression:
4982de3b87aSKai Wang 		*s = "DW_CFA_val_expression"; break;
4992de3b87aSKai Wang 	case DW_CFA_lo_user:
5002de3b87aSKai Wang 		*s = "DW_CFA_lo_user"; break;
5012de3b87aSKai Wang 	case DW_CFA_high_user:
5022de3b87aSKai Wang 		*s = "DW_CFA_high_user"; break;
5032de3b87aSKai Wang 	default:
5042de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
5052de3b87aSKai Wang 	}
5062de3b87aSKai Wang 
5072de3b87aSKai Wang 	return (DW_DLV_OK);
5082de3b87aSKai Wang }
5092de3b87aSKai Wang 
5102de3b87aSKai Wang int
5112de3b87aSKai Wang dwarf_get_CHILDREN_name(unsigned children, const char **s)
5122de3b87aSKai Wang {
5132de3b87aSKai Wang 
5142de3b87aSKai Wang 	assert(s != NULL);
5152de3b87aSKai Wang 
5162de3b87aSKai Wang 	switch (children) {
5172de3b87aSKai Wang 	case DW_CHILDREN_no:
5182de3b87aSKai Wang 		*s = "DW_CHILDREN_no"; break;
5192de3b87aSKai Wang 	case DW_CHILDREN_yes:
5202de3b87aSKai Wang 		*s = "DW_CHILDREN_yes"; break;
5212de3b87aSKai Wang 	default:
5222de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
5232de3b87aSKai Wang 	}
5242de3b87aSKai Wang 
5252de3b87aSKai Wang 	return (DW_DLV_OK);
5262de3b87aSKai Wang }
5272de3b87aSKai Wang 
5282de3b87aSKai Wang int
5292de3b87aSKai Wang dwarf_get_FORM_name(unsigned form, const char **s)
5302de3b87aSKai Wang {
5312de3b87aSKai Wang 
5322de3b87aSKai Wang 	assert(s != NULL);
5332de3b87aSKai Wang 
5342de3b87aSKai Wang 	switch (form) {
5352de3b87aSKai Wang 	case DW_FORM_addr:
5362de3b87aSKai Wang 		*s = "DW_FORM_addr"; break;
5372de3b87aSKai Wang 	case DW_FORM_block:
5382de3b87aSKai Wang 		*s = "DW_FORM_block"; break;
5392de3b87aSKai Wang 	case DW_FORM_block1:
5402de3b87aSKai Wang 		*s = "DW_FORM_block1"; break;
5412de3b87aSKai Wang 	case DW_FORM_block2:
5422de3b87aSKai Wang 		*s = "DW_FORM_block2"; break;
5432de3b87aSKai Wang 	case DW_FORM_block4:
5442de3b87aSKai Wang 		*s = "DW_FORM_block4"; break;
5452de3b87aSKai Wang 	case DW_FORM_data1:
5462de3b87aSKai Wang 		*s = "DW_FORM_data1"; break;
5472de3b87aSKai Wang 	case DW_FORM_data2:
5482de3b87aSKai Wang 		*s = "DW_FORM_data2"; break;
5492de3b87aSKai Wang 	case DW_FORM_data4:
5502de3b87aSKai Wang 		*s = "DW_FORM_data4"; break;
5512de3b87aSKai Wang 	case DW_FORM_data8:
5522de3b87aSKai Wang 		*s = "DW_FORM_data8"; break;
5532de3b87aSKai Wang 	case DW_FORM_exprloc:
5542de3b87aSKai Wang 		*s = "DW_FORM_exprloc"; break;
5552de3b87aSKai Wang 	case DW_FORM_flag:
5562de3b87aSKai Wang 		*s = "DW_FORM_flag"; break;
5572de3b87aSKai Wang 	case DW_FORM_flag_present:
5582de3b87aSKai Wang 		*s = "DW_FORM_flag_present"; break;
5592de3b87aSKai Wang 	case DW_FORM_indirect:
5602de3b87aSKai Wang 		*s = "DW_FORM_indirect"; break;
5612de3b87aSKai Wang 	case DW_FORM_ref1:
5622de3b87aSKai Wang 		*s = "DW_FORM_ref1"; break;
5632de3b87aSKai Wang 	case DW_FORM_ref2:
5642de3b87aSKai Wang 		*s = "DW_FORM_ref2"; break;
5652de3b87aSKai Wang 	case DW_FORM_ref4:
5662de3b87aSKai Wang 		*s = "DW_FORM_ref4"; break;
5672de3b87aSKai Wang 	case DW_FORM_ref8:
5682de3b87aSKai Wang 		*s = "DW_FORM_ref8"; break;
5692de3b87aSKai Wang 	case DW_FORM_ref_addr:
5702de3b87aSKai Wang 		*s = "DW_FORM_ref_addr"; break;
5712de3b87aSKai Wang 	case DW_FORM_ref_sig8:
5722de3b87aSKai Wang 		*s = "DW_FORM_ref_sig8"; break;
5732de3b87aSKai Wang 	case DW_FORM_ref_udata:
5742de3b87aSKai Wang 		*s = "DW_FORM_ref_udata"; break;
5752de3b87aSKai Wang 	case DW_FORM_sdata:
5762de3b87aSKai Wang 		*s = "DW_FORM_sdata"; break;
5772de3b87aSKai Wang 	case DW_FORM_sec_offset:
5782de3b87aSKai Wang 		*s = "DW_FORM_sec_offset"; break;
5792de3b87aSKai Wang 	case DW_FORM_string:
5802de3b87aSKai Wang 		*s = "DW_FORM_string"; break;
5812de3b87aSKai Wang 	case DW_FORM_strp:
5822de3b87aSKai Wang 		*s = "DW_FORM_strp"; break;
5832de3b87aSKai Wang 	case DW_FORM_udata:
5842de3b87aSKai Wang 		*s = "DW_FORM_udata"; break;
5852de3b87aSKai Wang 	default:
5862de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
5872de3b87aSKai Wang 	}
5882de3b87aSKai Wang 
5892de3b87aSKai Wang 	return (DW_DLV_OK);
5902de3b87aSKai Wang }
5912de3b87aSKai Wang 
5922de3b87aSKai Wang int
5932de3b87aSKai Wang dwarf_get_DS_name(unsigned ds, const char **s)
5942de3b87aSKai Wang {
5952de3b87aSKai Wang 
5962de3b87aSKai Wang 	assert(s != NULL);
5972de3b87aSKai Wang 
5982de3b87aSKai Wang 	switch (ds) {
5992de3b87aSKai Wang 	case DW_DS_unsigned:
6002de3b87aSKai Wang 		*s = "DW_DS_unsigned"; break;
6012de3b87aSKai Wang 	case DW_DS_leading_overpunch:
6022de3b87aSKai Wang 		*s = "DW_DS_leading_overpunch"; break;
6032de3b87aSKai Wang 	case DW_DS_trailing_overpunch:
6042de3b87aSKai Wang 		*s = "DW_DS_trailing_overpunch"; break;
6052de3b87aSKai Wang 	case DW_DS_leading_separate:
6062de3b87aSKai Wang 		*s = "DW_DS_leading_separate"; break;
6072de3b87aSKai Wang 	case DW_DS_trailing_separate:
608*d003e0d7SEd Maste 		*s = "DW_DS_trailing_separate"; break;
6092de3b87aSKai Wang 	default:
6102de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
6112de3b87aSKai Wang 	}
6122de3b87aSKai Wang 
6132de3b87aSKai Wang 	return (DW_DLV_OK);
6142de3b87aSKai Wang }
6152de3b87aSKai Wang 
6162de3b87aSKai Wang int
6172de3b87aSKai Wang dwarf_get_DSC_name(unsigned dsc, const char **s)
6182de3b87aSKai Wang {
6192de3b87aSKai Wang 
6202de3b87aSKai Wang 	assert(s != NULL);
6212de3b87aSKai Wang 
6222de3b87aSKai Wang 	switch (dsc) {
6232de3b87aSKai Wang 	case DW_DSC_label:
6242de3b87aSKai Wang 		*s = "DW_DSC_label"; break;
6252de3b87aSKai Wang 	case DW_DSC_range:
6262de3b87aSKai Wang 		*s = "DW_DSC_range"; break;
6272de3b87aSKai Wang 	default:
6282de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
6292de3b87aSKai Wang 	}
6302de3b87aSKai Wang 
6312de3b87aSKai Wang 	return (DW_DLV_OK);
6322de3b87aSKai Wang }
6332de3b87aSKai Wang 
6342de3b87aSKai Wang int
6352de3b87aSKai Wang dwarf_get_EH_name(unsigned eh, const char **s)
6362de3b87aSKai Wang {
6372de3b87aSKai Wang 
6382de3b87aSKai Wang 	assert(s != NULL);
6392de3b87aSKai Wang 
6402de3b87aSKai Wang 	switch (eh) {
6412de3b87aSKai Wang 	case DW_EH_PE_absptr:
6422de3b87aSKai Wang 		*s = "DW_EH_PE_absptr"; break;
6432de3b87aSKai Wang 	case DW_EH_PE_uleb128:
6442de3b87aSKai Wang 		*s = "DW_EH_PE_uleb128"; break;
6452de3b87aSKai Wang 	case DW_EH_PE_udata2:
6462de3b87aSKai Wang 		*s = "DW_EH_PE_udata2"; break;
6472de3b87aSKai Wang 	case DW_EH_PE_udata4:
6482de3b87aSKai Wang 		*s = "DW_EH_PE_udata4"; break;
6492de3b87aSKai Wang 	case DW_EH_PE_udata8:
6502de3b87aSKai Wang 		*s = "DW_EH_PE_udata8"; break;
6512de3b87aSKai Wang 	case DW_EH_PE_sleb128:
6522de3b87aSKai Wang 		*s = "DW_EH_PE_sleb128"; break;
6532de3b87aSKai Wang 	case DW_EH_PE_sdata2:
6542de3b87aSKai Wang 		*s = "DW_EH_PE_sdata2"; break;
6552de3b87aSKai Wang 	case DW_EH_PE_sdata4:
6562de3b87aSKai Wang 		*s = "DW_EH_PE_sdata4"; break;
6572de3b87aSKai Wang 	case DW_EH_PE_sdata8:
6582de3b87aSKai Wang 		*s = "DW_EH_PE_sdata8"; break;
6592de3b87aSKai Wang 	case DW_EH_PE_pcrel:
6602de3b87aSKai Wang 		*s = "DW_EH_PE_pcrel"; break;
6612de3b87aSKai Wang 	case DW_EH_PE_textrel:
6622de3b87aSKai Wang 		*s = "DW_EH_PE_textrel"; break;
6632de3b87aSKai Wang 	case DW_EH_PE_datarel:
6642de3b87aSKai Wang 		*s = "DW_EH_PE_datarel"; break;
6652de3b87aSKai Wang 	case DW_EH_PE_funcrel:
6662de3b87aSKai Wang 		*s = "DW_EH_PE_funcrel"; break;
6672de3b87aSKai Wang 	case DW_EH_PE_aligned:
6682de3b87aSKai Wang 		*s = "DW_EH_PE_aligned"; break;
6692de3b87aSKai Wang 	case DW_EH_PE_omit:
6702de3b87aSKai Wang 		*s = "DW_EH_PE_omit"; break;
6712de3b87aSKai Wang 	default:
6722de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
6732de3b87aSKai Wang 	}
6742de3b87aSKai Wang 
6752de3b87aSKai Wang 	return (DW_DLV_OK);
6762de3b87aSKai Wang }
6772de3b87aSKai Wang 
6782de3b87aSKai Wang int
6792de3b87aSKai Wang dwarf_get_END_name(unsigned end, const char **s)
6802de3b87aSKai Wang {
6812de3b87aSKai Wang 
6822de3b87aSKai Wang 	assert(s != NULL);
6832de3b87aSKai Wang 
6842de3b87aSKai Wang 	switch (end) {
6852de3b87aSKai Wang 	case DW_END_default:
6862de3b87aSKai Wang 		*s = "DW_END_default"; break;
6872de3b87aSKai Wang 	case DW_END_big:
6882de3b87aSKai Wang 		*s = "DW_END_big"; break;
6892de3b87aSKai Wang 	case DW_END_little:
6902de3b87aSKai Wang 		*s = "DW_END_little"; break;
6912de3b87aSKai Wang 	case DW_END_lo_user:
6922de3b87aSKai Wang 		*s = "DW_END_lo_user"; break;
6932de3b87aSKai Wang 	case DW_END_high_user:
6942de3b87aSKai Wang 		*s = "DW_END_high_user"; break;
6952de3b87aSKai Wang 	default:
6962de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
6972de3b87aSKai Wang 	}
6982de3b87aSKai Wang 
6992de3b87aSKai Wang 	return (DW_DLV_OK);
7002de3b87aSKai Wang }
7012de3b87aSKai Wang 
7022de3b87aSKai Wang int
7032de3b87aSKai Wang dwarf_get_ID_name(unsigned id, const char **s)
7042de3b87aSKai Wang {
7052de3b87aSKai Wang 
7062de3b87aSKai Wang 	assert(s != NULL);
7072de3b87aSKai Wang 
7082de3b87aSKai Wang 	switch (id) {
7092de3b87aSKai Wang 	case DW_ID_case_sensitive:
7102de3b87aSKai Wang 		*s = "DW_ID_case_sensitive"; break;
7112de3b87aSKai Wang 	case DW_ID_up_case:
7122de3b87aSKai Wang 		*s = "DW_ID_up_case"; break;
7132de3b87aSKai Wang 	case DW_ID_down_case:
7142de3b87aSKai Wang 		*s = "DW_ID_down_case"; break;
7152de3b87aSKai Wang 	case DW_ID_case_insensitive:
7162de3b87aSKai Wang 		*s = "DW_ID_case_insensitive"; break;
7172de3b87aSKai Wang 	default:
7182de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
7192de3b87aSKai Wang 	}
7202de3b87aSKai Wang 
7212de3b87aSKai Wang 	return (DW_DLV_OK);
7222de3b87aSKai Wang }
7232de3b87aSKai Wang 
7242de3b87aSKai Wang int
7252de3b87aSKai Wang dwarf_get_INL_name(unsigned inl, const char **s)
7262de3b87aSKai Wang {
7272de3b87aSKai Wang 
7282de3b87aSKai Wang 	assert(s != NULL);
7292de3b87aSKai Wang 
7302de3b87aSKai Wang 	switch (inl) {
7312de3b87aSKai Wang 	case DW_INL_not_inlined:
7322de3b87aSKai Wang 		*s = "DW_INL_not_inlined"; break;
7332de3b87aSKai Wang 	case DW_INL_inlined:
7342de3b87aSKai Wang 		*s = "DW_INL_inlined"; break;
7352de3b87aSKai Wang 	case DW_INL_declared_not_inlined:
7362de3b87aSKai Wang 		*s = "DW_INL_declared_not_inlined"; break;
7372de3b87aSKai Wang 	case DW_INL_declared_inlined:
7382de3b87aSKai Wang 		*s = "DW_INL_declared_inlined"; break;
7392de3b87aSKai Wang 	default:
7402de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
7412de3b87aSKai Wang 	}
7422de3b87aSKai Wang 
7432de3b87aSKai Wang 	return (DW_DLV_OK);
7442de3b87aSKai Wang }
7452de3b87aSKai Wang 
7462de3b87aSKai Wang int
7472de3b87aSKai Wang dwarf_get_LANG_name(unsigned lang, const char **s)
7482de3b87aSKai Wang {
7492de3b87aSKai Wang 
7502de3b87aSKai Wang 	assert(s != NULL);
7512de3b87aSKai Wang 
7522de3b87aSKai Wang 	switch (lang) {
7532de3b87aSKai Wang 	case DW_LANG_C89:
7542de3b87aSKai Wang 		*s = "DW_LANG_C89"; break;
7552de3b87aSKai Wang 	case DW_LANG_C:
7562de3b87aSKai Wang 		*s = "DW_LANG_C"; break;
7572de3b87aSKai Wang 	case DW_LANG_Ada83:
7582de3b87aSKai Wang 		*s = "DW_LANG_Ada83"; break;
7592de3b87aSKai Wang 	case DW_LANG_C_plus_plus:
7602de3b87aSKai Wang 		*s = "DW_LANG_C_plus_plus"; break;
7612de3b87aSKai Wang 	case DW_LANG_Cobol74:
7622de3b87aSKai Wang 		*s = "DW_LANG_Cobol74"; break;
7632de3b87aSKai Wang 	case DW_LANG_Cobol85:
7642de3b87aSKai Wang 		*s = "DW_LANG_Cobol85"; break;
7652de3b87aSKai Wang 	case DW_LANG_Fortran77:
7662de3b87aSKai Wang 		*s = "DW_LANG_Fortran77"; break;
7672de3b87aSKai Wang 	case DW_LANG_Fortran90:
7682de3b87aSKai Wang 		*s = "DW_LANG_Fortran90"; break;
7692de3b87aSKai Wang 	case DW_LANG_Pascal83:
7702de3b87aSKai Wang 		*s = "DW_LANG_Pascal83"; break;
7712de3b87aSKai Wang 	case DW_LANG_Modula2:
7722de3b87aSKai Wang 		*s = "DW_LANG_Modula2"; break;
7732de3b87aSKai Wang 	case DW_LANG_Java:
7742de3b87aSKai Wang 		*s = "DW_LANG_Java"; break;
7752de3b87aSKai Wang 	case DW_LANG_C99:
7762de3b87aSKai Wang 		*s = "DW_LANG_C99"; break;
7772de3b87aSKai Wang 	case DW_LANG_Ada95:
7782de3b87aSKai Wang 		*s = "DW_LANG_Ada95"; break;
7792de3b87aSKai Wang 	case DW_LANG_Fortran95:
7802de3b87aSKai Wang 		*s = "DW_LANG_Fortran95"; break;
7812de3b87aSKai Wang 	case DW_LANG_PLI:
7822de3b87aSKai Wang 		*s = "DW_LANG_PLI"; break;
7832de3b87aSKai Wang 	case DW_LANG_ObjC:
7842de3b87aSKai Wang 		*s = "DW_LANG_ObjC"; break;
7852de3b87aSKai Wang 	case DW_LANG_ObjC_plus_plus:
7862de3b87aSKai Wang 		*s = "DW_LANG_ObjC_plus_plus"; break;
7872de3b87aSKai Wang 	case DW_LANG_UPC:
7882de3b87aSKai Wang 		*s = "DW_LANG_UPC"; break;
7892de3b87aSKai Wang 	case DW_LANG_D:
7902de3b87aSKai Wang 		*s = "DW_LANG_D"; break;
7914a0f8b33SMark Johnston 	case DW_LANG_Python:
7924a0f8b33SMark Johnston 		*s = "DW_LANG_Python"; break;
7934a0f8b33SMark Johnston 	case DW_LANG_OpenCL:
7944a0f8b33SMark Johnston 		*s = "DW_LANG_OpenCL"; break;
7954a0f8b33SMark Johnston 	case DW_LANG_Go:
7964a0f8b33SMark Johnston 		*s = "DW_LANG_Go"; break;
7974a0f8b33SMark Johnston 	case DW_LANG_Modula3:
7984a0f8b33SMark Johnston 		*s = "DW_LANG_Modula3"; break;
7994a0f8b33SMark Johnston 	case DW_LANG_Haskell:
8004a0f8b33SMark Johnston 		*s = "DW_LANG_Haskell"; break;
8014a0f8b33SMark Johnston 	case DW_LANG_C_plus_plus_03:
8024a0f8b33SMark Johnston 		*s = "DW_LANG_C_plus_plus_03"; break;
8034a0f8b33SMark Johnston 	case DW_LANG_C_plus_plus_11:
8044a0f8b33SMark Johnston 		*s = "DW_LANG_C_plus_plus_11"; break;
8054a0f8b33SMark Johnston 	case DW_LANG_OCaml:
8064a0f8b33SMark Johnston 		*s = "DW_LANG_OCaml"; break;
8074a0f8b33SMark Johnston 	case DW_LANG_Rust:
8084a0f8b33SMark Johnston 		*s = "DW_LANG_Rust"; break;
8094a0f8b33SMark Johnston 	case DW_LANG_C11:
8104a0f8b33SMark Johnston 		*s = "DW_LANG_C11"; break;
8114a0f8b33SMark Johnston 	case DW_LANG_Swift:
8124a0f8b33SMark Johnston 		*s = "DW_LANG_Swift"; break;
8134a0f8b33SMark Johnston 	case DW_LANG_Julia:
8144a0f8b33SMark Johnston 		*s = "DW_LANG_Julia"; break;
8154a0f8b33SMark Johnston 	case DW_LANG_Dylan:
8164a0f8b33SMark Johnston 		*s = "DW_LANG_Dylan"; break;
8174a0f8b33SMark Johnston 	case DW_LANG_C_plus_plus_14:
8184a0f8b33SMark Johnston 		*s = "DW_LANG_C_plus_plus_14"; break;
8194a0f8b33SMark Johnston 	case DW_LANG_Fortran03:
8204a0f8b33SMark Johnston 		*s = "DW_LANG_Fortran03"; break;
8214a0f8b33SMark Johnston 	case DW_LANG_Fortran08:
8224a0f8b33SMark Johnston 		*s = "DW_LANG_Fortran08"; break;
8234a0f8b33SMark Johnston 	case DW_LANG_RenderScript:
8244a0f8b33SMark Johnston 		*s = "DW_LANG_RenderScript"; break;
8254a0f8b33SMark Johnston 	case DW_LANG_BLISS:
8264a0f8b33SMark Johnston 		*s = "DW_LANG_BLISS"; break;
8272de3b87aSKai Wang 	case DW_LANG_lo_user:
8282de3b87aSKai Wang 		*s = "DW_LANG_lo_user"; break;
829bee2765cSEd Maste 	case DW_LANG_Mips_Assembler:
830bee2765cSEd Maste 		*s = "DW_LANG_Mips_Assembler"; break;
8312de3b87aSKai Wang 	case DW_LANG_hi_user:
8322de3b87aSKai Wang 		*s = "DW_LANG_hi_user"; break;
8332de3b87aSKai Wang 	default:
8342de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
8352de3b87aSKai Wang 	}
8362de3b87aSKai Wang 
8372de3b87aSKai Wang 	return (DW_DLV_OK);
8382de3b87aSKai Wang }
8392de3b87aSKai Wang 
8402de3b87aSKai Wang int
8412de3b87aSKai Wang dwarf_get_LNE_name(unsigned lne, const char **s)
8422de3b87aSKai Wang {
8432de3b87aSKai Wang 
8442de3b87aSKai Wang 	assert(s != NULL);
8452de3b87aSKai Wang 
8462de3b87aSKai Wang 	switch (lne) {
8472de3b87aSKai Wang 	case DW_LNE_end_sequence:
8482de3b87aSKai Wang 		*s = "DW_LNE_end_sequence"; break;
8492de3b87aSKai Wang 	case DW_LNE_set_address:
8502de3b87aSKai Wang 		*s = "DW_LNE_set_address"; break;
8512de3b87aSKai Wang 	case DW_LNE_define_file:
8522de3b87aSKai Wang 		*s = "DW_LNE_define_file"; break;
8532de3b87aSKai Wang 	case DW_LNE_lo_user:
8542de3b87aSKai Wang 		*s = "DW_LNE_lo_user"; break;
8552de3b87aSKai Wang 	case DW_LNE_hi_user:
8562de3b87aSKai Wang 		*s = "DW_LNE_hi_user"; break;
8572de3b87aSKai Wang 	default:
8582de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
8592de3b87aSKai Wang 	}
8602de3b87aSKai Wang 
8612de3b87aSKai Wang 	return (DW_DLV_OK);
8622de3b87aSKai Wang }
8632de3b87aSKai Wang 
8642de3b87aSKai Wang int
8652de3b87aSKai Wang dwarf_get_LNS_name(unsigned lns, const char **s)
8662de3b87aSKai Wang {
8672de3b87aSKai Wang 
8682de3b87aSKai Wang 	assert(s != NULL);
8692de3b87aSKai Wang 
8702de3b87aSKai Wang 	switch (lns) {
8712de3b87aSKai Wang 	case DW_LNS_copy:
8722de3b87aSKai Wang 		*s = "DW_LNS_copy"; break;
8732de3b87aSKai Wang 	case DW_LNS_advance_pc:
8742de3b87aSKai Wang 		*s = "DW_LNS_advance_pc"; break;
8752de3b87aSKai Wang 	case DW_LNS_advance_line:
8762de3b87aSKai Wang 		*s = "DW_LNS_advance_line"; break;
8772de3b87aSKai Wang 	case DW_LNS_set_file:
8782de3b87aSKai Wang 		*s = "DW_LNS_set_file"; break;
8792de3b87aSKai Wang 	case DW_LNS_set_column:
8802de3b87aSKai Wang 		*s = "DW_LNS_set_column"; break;
8812de3b87aSKai Wang 	case DW_LNS_negate_stmt:
8822de3b87aSKai Wang 		*s = "DW_LNS_negate_stmt"; break;
8832de3b87aSKai Wang 	case DW_LNS_set_basic_block:
8842de3b87aSKai Wang 		*s = "DW_LNS_set_basic_block"; break;
8852de3b87aSKai Wang 	case DW_LNS_const_add_pc:
8862de3b87aSKai Wang 		*s = "DW_LNS_const_add_pc"; break;
8872de3b87aSKai Wang 	case DW_LNS_fixed_advance_pc:
8882de3b87aSKai Wang 		*s = "DW_LNS_fixed_advance_pc"; break;
8892de3b87aSKai Wang 	case DW_LNS_set_prologue_end:
8902de3b87aSKai Wang 		*s = "DW_LNS_set_prologue_end"; break;
8912de3b87aSKai Wang 	case DW_LNS_set_epilogue_begin:
8922de3b87aSKai Wang 		*s = "DW_LNS_set_epilogue_begin"; break;
8932de3b87aSKai Wang 	case DW_LNS_set_isa:
8942de3b87aSKai Wang 		*s = "DW_LNS_set_isa"; break;
8952de3b87aSKai Wang 	default:
8962de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
8972de3b87aSKai Wang 	}
8982de3b87aSKai Wang 
8992de3b87aSKai Wang 	return (DW_DLV_OK);
9002de3b87aSKai Wang }
9012de3b87aSKai Wang 
9022de3b87aSKai Wang int
9032de3b87aSKai Wang dwarf_get_MACINFO_name(unsigned mi, const char **s)
9042de3b87aSKai Wang {
9052de3b87aSKai Wang 
9062de3b87aSKai Wang 	assert(s != NULL);
9072de3b87aSKai Wang 
9082de3b87aSKai Wang 	switch (mi) {
9092de3b87aSKai Wang 	case DW_MACINFO_define:
9102de3b87aSKai Wang 		*s = "DW_MACINFO_define"; break;
9112de3b87aSKai Wang 	case DW_MACINFO_undef:
9122de3b87aSKai Wang 		*s = "DW_MACINFO_undef"; break;
9132de3b87aSKai Wang 	case DW_MACINFO_start_file:
9142de3b87aSKai Wang 		*s = "DW_MACINFO_start_file"; break;
9152de3b87aSKai Wang 	case DW_MACINFO_end_file:
9162de3b87aSKai Wang 		*s = "DW_MACINFO_end_file"; break;
9172de3b87aSKai Wang 	case DW_MACINFO_vendor_ext:
9182de3b87aSKai Wang 		*s = "DW_MACINFO_vendor_ext"; break;
9192de3b87aSKai Wang 	default:
9202de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
9212de3b87aSKai Wang 	}
9222de3b87aSKai Wang 
9232de3b87aSKai Wang 	return (DW_DLV_OK);
9242de3b87aSKai Wang }
9252de3b87aSKai Wang 
9262de3b87aSKai Wang int
9272de3b87aSKai Wang dwarf_get_OP_name(unsigned op, const char **s)
9282de3b87aSKai Wang {
9292de3b87aSKai Wang 
9302de3b87aSKai Wang 	assert(s != NULL);
9312de3b87aSKai Wang 
9322de3b87aSKai Wang 	switch (op) {
9332de3b87aSKai Wang 	case DW_OP_deref:
9342de3b87aSKai Wang 		*s = "DW_OP_deref"; break;
9352de3b87aSKai Wang 	case DW_OP_reg0:
9362de3b87aSKai Wang 		*s = "DW_OP_reg0"; break;
9372de3b87aSKai Wang 	case DW_OP_reg1:
9382de3b87aSKai Wang 		*s = "DW_OP_reg1"; break;
9392de3b87aSKai Wang 	case DW_OP_reg2:
9402de3b87aSKai Wang 		*s = "DW_OP_reg2"; break;
9412de3b87aSKai Wang 	case DW_OP_reg3:
9422de3b87aSKai Wang 		*s = "DW_OP_reg3"; break;
9432de3b87aSKai Wang 	case DW_OP_reg4:
9442de3b87aSKai Wang 		*s = "DW_OP_reg4"; break;
9452de3b87aSKai Wang 	case DW_OP_reg5:
9462de3b87aSKai Wang 		*s = "DW_OP_reg5"; break;
9472de3b87aSKai Wang 	case DW_OP_reg6:
9482de3b87aSKai Wang 		*s = "DW_OP_reg6"; break;
9492de3b87aSKai Wang 	case DW_OP_reg7:
9502de3b87aSKai Wang 		*s = "DW_OP_reg7"; break;
9512de3b87aSKai Wang 	case DW_OP_reg8:
9522de3b87aSKai Wang 		*s = "DW_OP_reg8"; break;
9532de3b87aSKai Wang 	case DW_OP_reg9:
9542de3b87aSKai Wang 		*s = "DW_OP_reg9"; break;
9552de3b87aSKai Wang 	case DW_OP_reg10:
9562de3b87aSKai Wang 		*s = "DW_OP_reg10"; break;
9572de3b87aSKai Wang 	case DW_OP_reg11:
9582de3b87aSKai Wang 		*s = "DW_OP_reg11"; break;
9592de3b87aSKai Wang 	case DW_OP_reg12:
9602de3b87aSKai Wang 		*s = "DW_OP_reg12"; break;
9612de3b87aSKai Wang 	case DW_OP_reg13:
9622de3b87aSKai Wang 		*s = "DW_OP_reg13"; break;
9632de3b87aSKai Wang 	case DW_OP_reg14:
9642de3b87aSKai Wang 		*s = "DW_OP_reg14"; break;
9652de3b87aSKai Wang 	case DW_OP_reg15:
9662de3b87aSKai Wang 		*s = "DW_OP_reg15"; break;
9672de3b87aSKai Wang 	case DW_OP_reg16:
9682de3b87aSKai Wang 		*s = "DW_OP_reg16"; break;
9692de3b87aSKai Wang 	case DW_OP_reg17:
9702de3b87aSKai Wang 		*s = "DW_OP_reg17"; break;
9712de3b87aSKai Wang 	case DW_OP_reg18:
9722de3b87aSKai Wang 		*s = "DW_OP_reg18"; break;
9732de3b87aSKai Wang 	case DW_OP_reg19:
9742de3b87aSKai Wang 		*s = "DW_OP_reg19"; break;
9752de3b87aSKai Wang 	case DW_OP_reg20:
9762de3b87aSKai Wang 		*s = "DW_OP_reg20"; break;
9772de3b87aSKai Wang 	case DW_OP_reg21:
9782de3b87aSKai Wang 		*s = "DW_OP_reg21"; break;
9792de3b87aSKai Wang 	case DW_OP_reg22:
9802de3b87aSKai Wang 		*s = "DW_OP_reg22"; break;
9812de3b87aSKai Wang 	case DW_OP_reg23:
9822de3b87aSKai Wang 		*s = "DW_OP_reg23"; break;
9832de3b87aSKai Wang 	case DW_OP_reg24:
9842de3b87aSKai Wang 		*s = "DW_OP_reg24"; break;
9852de3b87aSKai Wang 	case DW_OP_reg25:
9862de3b87aSKai Wang 		*s = "DW_OP_reg25"; break;
9872de3b87aSKai Wang 	case DW_OP_reg26:
9882de3b87aSKai Wang 		*s = "DW_OP_reg26"; break;
9892de3b87aSKai Wang 	case DW_OP_reg27:
9902de3b87aSKai Wang 		*s = "DW_OP_reg27"; break;
9912de3b87aSKai Wang 	case DW_OP_reg28:
9922de3b87aSKai Wang 		*s = "DW_OP_reg28"; break;
9932de3b87aSKai Wang 	case DW_OP_reg29:
9942de3b87aSKai Wang 		*s = "DW_OP_reg29"; break;
9952de3b87aSKai Wang 	case DW_OP_reg30:
9962de3b87aSKai Wang 		*s = "DW_OP_reg30"; break;
9972de3b87aSKai Wang 	case DW_OP_reg31:
9982de3b87aSKai Wang 		*s = "DW_OP_reg31"; break;
9992de3b87aSKai Wang 	case DW_OP_lit0:
10002de3b87aSKai Wang 		*s = "DW_OP_lit0"; break;
10012de3b87aSKai Wang 	case DW_OP_lit1:
10022de3b87aSKai Wang 		*s = "DW_OP_lit1"; break;
10032de3b87aSKai Wang 	case DW_OP_lit2:
10042de3b87aSKai Wang 		*s = "DW_OP_lit2"; break;
10052de3b87aSKai Wang 	case DW_OP_lit3:
10062de3b87aSKai Wang 		*s = "DW_OP_lit3"; break;
10072de3b87aSKai Wang 	case DW_OP_lit4:
10082de3b87aSKai Wang 		*s = "DW_OP_lit4"; break;
10092de3b87aSKai Wang 	case DW_OP_lit5:
10102de3b87aSKai Wang 		*s = "DW_OP_lit5"; break;
10112de3b87aSKai Wang 	case DW_OP_lit6:
10122de3b87aSKai Wang 		*s = "DW_OP_lit6"; break;
10132de3b87aSKai Wang 	case DW_OP_lit7:
10142de3b87aSKai Wang 		*s = "DW_OP_lit7"; break;
10152de3b87aSKai Wang 	case DW_OP_lit8:
10162de3b87aSKai Wang 		*s = "DW_OP_lit8"; break;
10172de3b87aSKai Wang 	case DW_OP_lit9:
10182de3b87aSKai Wang 		*s = "DW_OP_lit9"; break;
10192de3b87aSKai Wang 	case DW_OP_lit10:
10202de3b87aSKai Wang 		*s = "DW_OP_lit10"; break;
10212de3b87aSKai Wang 	case DW_OP_lit11:
10222de3b87aSKai Wang 		*s = "DW_OP_lit11"; break;
10232de3b87aSKai Wang 	case DW_OP_lit12:
10242de3b87aSKai Wang 		*s = "DW_OP_lit12"; break;
10252de3b87aSKai Wang 	case DW_OP_lit13:
10262de3b87aSKai Wang 		*s = "DW_OP_lit13"; break;
10272de3b87aSKai Wang 	case DW_OP_lit14:
10282de3b87aSKai Wang 		*s = "DW_OP_lit14"; break;
10292de3b87aSKai Wang 	case DW_OP_lit15:
10302de3b87aSKai Wang 		*s = "DW_OP_lit15"; break;
10312de3b87aSKai Wang 	case DW_OP_lit16:
10322de3b87aSKai Wang 		*s = "DW_OP_lit16"; break;
10332de3b87aSKai Wang 	case DW_OP_lit17:
10342de3b87aSKai Wang 		*s = "DW_OP_lit17"; break;
10352de3b87aSKai Wang 	case DW_OP_lit18:
10362de3b87aSKai Wang 		*s = "DW_OP_lit18"; break;
10372de3b87aSKai Wang 	case DW_OP_lit19:
10382de3b87aSKai Wang 		*s = "DW_OP_lit19"; break;
10392de3b87aSKai Wang 	case DW_OP_lit20:
10402de3b87aSKai Wang 		*s = "DW_OP_lit20"; break;
10412de3b87aSKai Wang 	case DW_OP_lit21:
10422de3b87aSKai Wang 		*s = "DW_OP_lit21"; break;
10432de3b87aSKai Wang 	case DW_OP_lit22:
10442de3b87aSKai Wang 		*s = "DW_OP_lit22"; break;
10452de3b87aSKai Wang 	case DW_OP_lit23:
10462de3b87aSKai Wang 		*s = "DW_OP_lit23"; break;
10472de3b87aSKai Wang 	case DW_OP_lit24:
10482de3b87aSKai Wang 		*s = "DW_OP_lit24"; break;
10492de3b87aSKai Wang 	case DW_OP_lit25:
10502de3b87aSKai Wang 		*s = "DW_OP_lit25"; break;
10512de3b87aSKai Wang 	case DW_OP_lit26:
10522de3b87aSKai Wang 		*s = "DW_OP_lit26"; break;
10532de3b87aSKai Wang 	case DW_OP_lit27:
10542de3b87aSKai Wang 		*s = "DW_OP_lit27"; break;
10552de3b87aSKai Wang 	case DW_OP_lit28:
10562de3b87aSKai Wang 		*s = "DW_OP_lit28"; break;
10572de3b87aSKai Wang 	case DW_OP_lit29:
10582de3b87aSKai Wang 		*s = "DW_OP_lit29"; break;
10592de3b87aSKai Wang 	case DW_OP_lit30:
10602de3b87aSKai Wang 		*s = "DW_OP_lit30"; break;
10612de3b87aSKai Wang 	case DW_OP_lit31:
10622de3b87aSKai Wang 		*s = "DW_OP_lit31"; break;
10632de3b87aSKai Wang 	case DW_OP_dup:
10642de3b87aSKai Wang 		*s = "DW_OP_dup"; break;
10652de3b87aSKai Wang 	case DW_OP_drop:
10662de3b87aSKai Wang 		*s = "DW_OP_drop"; break;
10672de3b87aSKai Wang 	case DW_OP_over:
10682de3b87aSKai Wang 		*s = "DW_OP_over"; break;
10692de3b87aSKai Wang 	case DW_OP_swap:
10702de3b87aSKai Wang 		*s = "DW_OP_swap"; break;
10712de3b87aSKai Wang 	case DW_OP_rot:
10722de3b87aSKai Wang 		*s = "DW_OP_rot"; break;
10732de3b87aSKai Wang 	case DW_OP_xderef:
10742de3b87aSKai Wang 		*s = "DW_OP_xderef"; break;
10752de3b87aSKai Wang 	case DW_OP_abs:
10762de3b87aSKai Wang 		*s = "DW_OP_abs"; break;
10772de3b87aSKai Wang 	case DW_OP_and:
10782de3b87aSKai Wang 		*s = "DW_OP_and"; break;
10792de3b87aSKai Wang 	case DW_OP_div:
10802de3b87aSKai Wang 		*s = "DW_OP_div"; break;
10812de3b87aSKai Wang 	case DW_OP_minus:
10822de3b87aSKai Wang 		*s = "DW_OP_minus"; break;
10832de3b87aSKai Wang 	case DW_OP_mod:
10842de3b87aSKai Wang 		*s = "DW_OP_mod"; break;
10852de3b87aSKai Wang 	case DW_OP_mul:
10862de3b87aSKai Wang 		*s = "DW_OP_mul"; break;
10872de3b87aSKai Wang 	case DW_OP_neg:
10882de3b87aSKai Wang 		*s = "DW_OP_neg"; break;
10892de3b87aSKai Wang 	case DW_OP_not:
10902de3b87aSKai Wang 		*s = "DW_OP_not"; break;
10912de3b87aSKai Wang 	case DW_OP_or:
10922de3b87aSKai Wang 		*s = "DW_OP_or"; break;
10932de3b87aSKai Wang 	case DW_OP_plus:
10942de3b87aSKai Wang 		*s = "DW_OP_plus"; break;
10952de3b87aSKai Wang 	case DW_OP_shl:
10962de3b87aSKai Wang 		*s = "DW_OP_shl"; break;
10972de3b87aSKai Wang 	case DW_OP_shr:
10982de3b87aSKai Wang 		*s = "DW_OP_shr"; break;
10992de3b87aSKai Wang 	case DW_OP_shra:
11002de3b87aSKai Wang 		*s = "DW_OP_shra"; break;
11012de3b87aSKai Wang 	case DW_OP_xor:
11022de3b87aSKai Wang 		*s = "DW_OP_xor"; break;
11032de3b87aSKai Wang 	case DW_OP_eq:
11042de3b87aSKai Wang 		*s = "DW_OP_eq"; break;
11052de3b87aSKai Wang 	case DW_OP_ge:
11062de3b87aSKai Wang 		*s = "DW_OP_ge"; break;
11072de3b87aSKai Wang 	case DW_OP_gt:
11082de3b87aSKai Wang 		*s = "DW_OP_gt"; break;
11092de3b87aSKai Wang 	case DW_OP_le:
11102de3b87aSKai Wang 		*s = "DW_OP_le"; break;
11112de3b87aSKai Wang 	case DW_OP_lt:
11122de3b87aSKai Wang 		*s = "DW_OP_lt"; break;
11132de3b87aSKai Wang 	case DW_OP_ne:
11142de3b87aSKai Wang 		*s = "DW_OP_ne"; break;
11152de3b87aSKai Wang 	case DW_OP_nop:
11162de3b87aSKai Wang 		*s = "DW_OP_nop"; break;
11172de3b87aSKai Wang 	case DW_OP_const1u:
11182de3b87aSKai Wang 		*s = "DW_OP_const1u"; break;
11192de3b87aSKai Wang 	case DW_OP_const1s:
11202de3b87aSKai Wang 		*s = "DW_OP_const1s"; break;
11212de3b87aSKai Wang 	case DW_OP_pick:
11222de3b87aSKai Wang 		*s = "DW_OP_pick"; break;
11232de3b87aSKai Wang 	case DW_OP_deref_size:
11242de3b87aSKai Wang 		*s = "DW_OP_deref_size"; break;
11252de3b87aSKai Wang 	case DW_OP_xderef_size:
11262de3b87aSKai Wang 		*s = "DW_OP_xderef_size"; break;
11272de3b87aSKai Wang 	case DW_OP_const2u:
11282de3b87aSKai Wang 		*s = "DW_OP_const2u"; break;
11292de3b87aSKai Wang 	case DW_OP_const2s:
11302de3b87aSKai Wang 		*s = "DW_OP_const2s"; break;
11312de3b87aSKai Wang 	case DW_OP_bra:
11322de3b87aSKai Wang 		*s = "DW_OP_bra"; break;
11332de3b87aSKai Wang 	case DW_OP_skip:
11342de3b87aSKai Wang 		*s = "DW_OP_skip"; break;
11352de3b87aSKai Wang 	case DW_OP_const4u:
11362de3b87aSKai Wang 		*s = "DW_OP_const4u"; break;
11372de3b87aSKai Wang 	case DW_OP_const4s:
11382de3b87aSKai Wang 		*s = "DW_OP_const4s"; break;
11392de3b87aSKai Wang 	case DW_OP_const8u:
11402de3b87aSKai Wang 		*s = "DW_OP_const8u"; break;
11412de3b87aSKai Wang 	case DW_OP_const8s:
11422de3b87aSKai Wang 		*s = "DW_OP_const8s"; break;
11432de3b87aSKai Wang 	case DW_OP_constu:
11442de3b87aSKai Wang 		*s = "DW_OP_constu"; break;
11452de3b87aSKai Wang 	case DW_OP_plus_uconst:
11462de3b87aSKai Wang 		*s = "DW_OP_plus_uconst"; break;
11472de3b87aSKai Wang 	case DW_OP_regx:
11482de3b87aSKai Wang 		*s = "DW_OP_regx"; break;
11492de3b87aSKai Wang 	case DW_OP_piece:
11502de3b87aSKai Wang 		*s = "DW_OP_piece"; break;
11512de3b87aSKai Wang 	case DW_OP_consts:
11522de3b87aSKai Wang 		*s = "DW_OP_consts"; break;
11532de3b87aSKai Wang 	case DW_OP_breg0:
11542de3b87aSKai Wang 		*s = "DW_OP_breg0"; break;
11552de3b87aSKai Wang 	case DW_OP_breg1:
11562de3b87aSKai Wang 		*s = "DW_OP_breg1"; break;
11572de3b87aSKai Wang 	case DW_OP_breg2:
11582de3b87aSKai Wang 		*s = "DW_OP_breg2"; break;
11592de3b87aSKai Wang 	case DW_OP_breg3:
11602de3b87aSKai Wang 		*s = "DW_OP_breg3"; break;
11612de3b87aSKai Wang 	case DW_OP_breg4:
11622de3b87aSKai Wang 		*s = "DW_OP_breg4"; break;
11632de3b87aSKai Wang 	case DW_OP_breg5:
11642de3b87aSKai Wang 		*s = "DW_OP_breg5"; break;
11652de3b87aSKai Wang 	case DW_OP_breg6:
11662de3b87aSKai Wang 		*s = "DW_OP_breg6"; break;
11672de3b87aSKai Wang 	case DW_OP_breg7:
11682de3b87aSKai Wang 		*s = "DW_OP_breg7"; break;
11692de3b87aSKai Wang 	case DW_OP_breg8:
11702de3b87aSKai Wang 		*s = "DW_OP_breg8"; break;
11712de3b87aSKai Wang 	case DW_OP_breg9:
11722de3b87aSKai Wang 		*s = "DW_OP_breg9"; break;
11732de3b87aSKai Wang 	case DW_OP_breg10:
11742de3b87aSKai Wang 		*s = "DW_OP_breg10"; break;
11752de3b87aSKai Wang 	case DW_OP_breg11:
11762de3b87aSKai Wang 		*s = "DW_OP_breg11"; break;
11772de3b87aSKai Wang 	case DW_OP_breg12:
11782de3b87aSKai Wang 		*s = "DW_OP_breg12"; break;
11792de3b87aSKai Wang 	case DW_OP_breg13:
11802de3b87aSKai Wang 		*s = "DW_OP_breg13"; break;
11812de3b87aSKai Wang 	case DW_OP_breg14:
11822de3b87aSKai Wang 		*s = "DW_OP_breg14"; break;
11832de3b87aSKai Wang 	case DW_OP_breg15:
11842de3b87aSKai Wang 		*s = "DW_OP_breg15"; break;
11852de3b87aSKai Wang 	case DW_OP_breg16:
11862de3b87aSKai Wang 		*s = "DW_OP_breg16"; break;
11872de3b87aSKai Wang 	case DW_OP_breg17:
11882de3b87aSKai Wang 		*s = "DW_OP_breg17"; break;
11892de3b87aSKai Wang 	case DW_OP_breg18:
11902de3b87aSKai Wang 		*s = "DW_OP_breg18"; break;
11912de3b87aSKai Wang 	case DW_OP_breg19:
11922de3b87aSKai Wang 		*s = "DW_OP_breg19"; break;
11932de3b87aSKai Wang 	case DW_OP_breg20:
11942de3b87aSKai Wang 		*s = "DW_OP_breg20"; break;
11952de3b87aSKai Wang 	case DW_OP_breg21:
11962de3b87aSKai Wang 		*s = "DW_OP_breg21"; break;
11972de3b87aSKai Wang 	case DW_OP_breg22:
11982de3b87aSKai Wang 		*s = "DW_OP_breg22"; break;
11992de3b87aSKai Wang 	case DW_OP_breg23:
12002de3b87aSKai Wang 		*s = "DW_OP_breg23"; break;
12012de3b87aSKai Wang 	case DW_OP_breg24:
12022de3b87aSKai Wang 		*s = "DW_OP_breg24"; break;
12032de3b87aSKai Wang 	case DW_OP_breg25:
12042de3b87aSKai Wang 		*s = "DW_OP_breg25"; break;
12052de3b87aSKai Wang 	case DW_OP_breg26:
12062de3b87aSKai Wang 		*s = "DW_OP_breg26"; break;
12072de3b87aSKai Wang 	case DW_OP_breg27:
12082de3b87aSKai Wang 		*s = "DW_OP_breg27"; break;
12092de3b87aSKai Wang 	case DW_OP_breg28:
12102de3b87aSKai Wang 		*s = "DW_OP_breg28"; break;
12112de3b87aSKai Wang 	case DW_OP_breg29:
12122de3b87aSKai Wang 		*s = "DW_OP_breg29"; break;
12132de3b87aSKai Wang 	case DW_OP_breg30:
12142de3b87aSKai Wang 		*s = "DW_OP_breg30"; break;
12152de3b87aSKai Wang 	case DW_OP_breg31:
12162de3b87aSKai Wang 		*s = "DW_OP_breg31"; break;
12172de3b87aSKai Wang 	case DW_OP_fbreg:
12182de3b87aSKai Wang 		*s = "DW_OP_fbreg"; break;
12192de3b87aSKai Wang 	case DW_OP_bregx:
12202de3b87aSKai Wang 		*s = "DW_OP_bregx"; break;
12212de3b87aSKai Wang 	case DW_OP_addr:
12222de3b87aSKai Wang 		*s = "DW_OP_addr"; break;
12232de3b87aSKai Wang 	case DW_OP_push_object_address:
12242de3b87aSKai Wang 		*s = "DW_OP_push_object_address"; break;
12252de3b87aSKai Wang 	case DW_OP_call2:
12262de3b87aSKai Wang 		*s = "DW_OP_call2"; break;
12272de3b87aSKai Wang 	case DW_OP_call4:
12282de3b87aSKai Wang 		*s = "DW_OP_call4"; break;
12292de3b87aSKai Wang 	case DW_OP_call_ref:
12302de3b87aSKai Wang 		*s = "DW_OP_call_ref"; break;
12312de3b87aSKai Wang 	case DW_OP_form_tls_address:
12322de3b87aSKai Wang 		*s = "DW_OP_form_tls_address"; break;
12332de3b87aSKai Wang 	case DW_OP_call_frame_cfa:
12342de3b87aSKai Wang 		*s = "DW_OP_call_frame_cfa"; break;
12352de3b87aSKai Wang 	case DW_OP_bit_piece:
12362de3b87aSKai Wang 		*s = "DW_OP_bit_piece"; break;
12372de3b87aSKai Wang 	case DW_OP_implicit_value:
12382de3b87aSKai Wang 		*s = "DW_OP_implicit_value"; break;
12392de3b87aSKai Wang 	case DW_OP_stack_value:
12402de3b87aSKai Wang 		*s = "DW_OP_stack_value"; break;
12412de3b87aSKai Wang 	case DW_OP_GNU_push_tls_address:
12422de3b87aSKai Wang 		*s = "DW_OP_GNU_push_tls_address"; break;
1243cf781b2eSEd Maste 	case DW_OP_GNU_uninit:
1244cf781b2eSEd Maste 		*s = "DW_OP_GNU_uninit"; break;
1245cf781b2eSEd Maste 	case DW_OP_GNU_encoded_addr:
1246cf781b2eSEd Maste 		*s = "DW_OP_GNU_encoded_addr"; break;
1247cf781b2eSEd Maste 	case DW_OP_GNU_implicit_pointer:
1248cf781b2eSEd Maste 		*s = "DW_OP_GNU_implicit_pointer"; break;
1249cf781b2eSEd Maste 	case DW_OP_GNU_entry_value:
1250cf781b2eSEd Maste 		*s = "DW_OP_GNU_entry_value"; break;
1251cf781b2eSEd Maste 	case DW_OP_GNU_const_type:
1252cf781b2eSEd Maste 		*s = "DW_OP_GNU_const_type"; break;
1253cf781b2eSEd Maste 	case DW_OP_GNU_regval_type:
1254cf781b2eSEd Maste 		*s = "DW_OP_GNU_regval_type"; break;
1255cf781b2eSEd Maste 	case DW_OP_GNU_deref_type:
1256cf781b2eSEd Maste 		*s = "DW_OP_GNU_deref_type"; break;
1257cf781b2eSEd Maste 	case DW_OP_GNU_convert:
1258cf781b2eSEd Maste 		*s = "DW_OP_GNU_convert"; break;
1259cf781b2eSEd Maste 	case DW_OP_GNU_reinterpret:
1260cf781b2eSEd Maste 		*s = "DW_OP_GNU_reinterpret"; break;
1261cf781b2eSEd Maste 	case DW_OP_GNU_parameter_ref:
1262cf781b2eSEd Maste 		*s = "DW_OP_GNU_parameter_ref"; break;
1263cf781b2eSEd Maste 	case DW_OP_GNU_addr_index:
1264cf781b2eSEd Maste 		*s = "DW_OP_GNU_addr_index"; break;
1265cf781b2eSEd Maste 	case DW_OP_GNU_const_index:
1266cf781b2eSEd Maste 		*s = "DW_OP_GNU_const_index"; break;
12672de3b87aSKai Wang 	default:
12682de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
12692de3b87aSKai Wang 	}
12702de3b87aSKai Wang 
12712de3b87aSKai Wang 	return (DW_DLV_OK);
12722de3b87aSKai Wang }
12732de3b87aSKai Wang 
12742de3b87aSKai Wang int
12752de3b87aSKai Wang dwarf_get_ORD_name(unsigned ord, const char **s)
12762de3b87aSKai Wang {
12772de3b87aSKai Wang 
12782de3b87aSKai Wang 	assert(s != NULL);
12792de3b87aSKai Wang 
12802de3b87aSKai Wang 	switch (ord) {
12812de3b87aSKai Wang 	case DW_ORD_row_major:
12822de3b87aSKai Wang 		*s = "DW_ORD_row_major"; break;
12832de3b87aSKai Wang 	case DW_ORD_col_major:
12842de3b87aSKai Wang 		*s = "DW_ORD_col_major"; break;
12852de3b87aSKai Wang 	default:
12862de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
12872de3b87aSKai Wang 	}
12882de3b87aSKai Wang 
12892de3b87aSKai Wang 	return (DW_DLV_OK);
12902de3b87aSKai Wang }
12912de3b87aSKai Wang 
12922de3b87aSKai Wang int
12932de3b87aSKai Wang dwarf_get_TAG_name(unsigned tag, const char **s)
12942de3b87aSKai Wang {
12952de3b87aSKai Wang 
12962de3b87aSKai Wang 	assert(s != NULL);
12972de3b87aSKai Wang 
12982de3b87aSKai Wang 	switch (tag) {
12992de3b87aSKai Wang 	case DW_TAG_access_declaration:
13002de3b87aSKai Wang 		*s = "DW_TAG_access_declaration"; break;
13012de3b87aSKai Wang 	case DW_TAG_array_type:
13022de3b87aSKai Wang 		*s = "DW_TAG_array_type"; break;
13032de3b87aSKai Wang 	case DW_TAG_base_type:
13042de3b87aSKai Wang 		*s = "DW_TAG_base_type"; break;
13052de3b87aSKai Wang 	case DW_TAG_catch_block:
13062de3b87aSKai Wang 		*s = "DW_TAG_catch_block"; break;
13072de3b87aSKai Wang 	case DW_TAG_class_type:
13082de3b87aSKai Wang 		*s = "DW_TAG_class_type"; break;
13092de3b87aSKai Wang 	case DW_TAG_common_block:
13102de3b87aSKai Wang 		*s = "DW_TAG_common_block"; break;
13112de3b87aSKai Wang 	case DW_TAG_common_inclusion:
13122de3b87aSKai Wang 		*s = "DW_TAG_common_inclusion"; break;
13132de3b87aSKai Wang 	case DW_TAG_compile_unit:
13142de3b87aSKai Wang 		*s = "DW_TAG_compile_unit"; break;
13152de3b87aSKai Wang 	case DW_TAG_condition:
13162de3b87aSKai Wang 		*s = "DW_TAG_condition"; break;
13172de3b87aSKai Wang 	case DW_TAG_const_type:
13182de3b87aSKai Wang 		*s = "DW_TAG_const_type"; break;
13192de3b87aSKai Wang 	case DW_TAG_constant:
13202de3b87aSKai Wang 		*s = "DW_TAG_constant"; break;
13212de3b87aSKai Wang 	case DW_TAG_dwarf_procedure:
13222de3b87aSKai Wang 		*s = "DW_TAG_dwarf_procedure"; break;
13232de3b87aSKai Wang 	case DW_TAG_entry_point:
13242de3b87aSKai Wang 		*s = "DW_TAG_entry_point"; break;
13252de3b87aSKai Wang 	case DW_TAG_enumeration_type:
13262de3b87aSKai Wang 		*s = "DW_TAG_enumeration_type"; break;
13272de3b87aSKai Wang 	case DW_TAG_enumerator:
13282de3b87aSKai Wang 		*s = "DW_TAG_enumerator"; break;
13292de3b87aSKai Wang 	case DW_TAG_formal_parameter:
13302de3b87aSKai Wang 		*s = "DW_TAG_formal_parameter"; break;
13312de3b87aSKai Wang 	case DW_TAG_friend:
13322de3b87aSKai Wang 		*s = "DW_TAG_friend"; break;
13332de3b87aSKai Wang 	case DW_TAG_imported_declaration:
13342de3b87aSKai Wang 		*s = "DW_TAG_imported_declaration"; break;
13352de3b87aSKai Wang 	case DW_TAG_imported_module:
13362de3b87aSKai Wang 		*s = "DW_TAG_imported_module"; break;
13372de3b87aSKai Wang 	case DW_TAG_imported_unit:
13382de3b87aSKai Wang 		*s = "DW_TAG_imported_unit"; break;
13392de3b87aSKai Wang 	case DW_TAG_inheritance:
13402de3b87aSKai Wang 		*s = "DW_TAG_inheritance"; break;
13412de3b87aSKai Wang 	case DW_TAG_inlined_subroutine:
13422de3b87aSKai Wang 		*s = "DW_TAG_inlined_subroutine"; break;
13432de3b87aSKai Wang 	case DW_TAG_interface_type:
13442de3b87aSKai Wang 		*s = "DW_TAG_interface_type"; break;
13452de3b87aSKai Wang 	case DW_TAG_label:
13462de3b87aSKai Wang 		*s = "DW_TAG_label"; break;
13472de3b87aSKai Wang 	case DW_TAG_lexical_block:
13482de3b87aSKai Wang 		*s = "DW_TAG_lexical_block"; break;
13492de3b87aSKai Wang 	case DW_TAG_member:
13502de3b87aSKai Wang 		*s = "DW_TAG_member"; break;
13512de3b87aSKai Wang 	case DW_TAG_module:
13522de3b87aSKai Wang 		*s = "DW_TAG_module"; break;
13532de3b87aSKai Wang 	case DW_TAG_namelist:
13542de3b87aSKai Wang 		*s = "DW_TAG_namelist"; break;
13552de3b87aSKai Wang 	case DW_TAG_namelist_item:
13562de3b87aSKai Wang 		*s = "DW_TAG_namelist_item"; break;
13572de3b87aSKai Wang 	case DW_TAG_namespace:
13582de3b87aSKai Wang 		*s = "DW_TAG_namespace"; break;
13592de3b87aSKai Wang 	case DW_TAG_packed_type:
13602de3b87aSKai Wang 		*s = "DW_TAG_packed_type"; break;
13612de3b87aSKai Wang 	case DW_TAG_partial_unit:
13622de3b87aSKai Wang 		*s = "DW_TAG_partial_unit"; break;
13632de3b87aSKai Wang 	case DW_TAG_pointer_type:
13642de3b87aSKai Wang 		*s = "DW_TAG_pointer_type"; break;
13652de3b87aSKai Wang 	case DW_TAG_ptr_to_member_type:
13662de3b87aSKai Wang 		*s = "DW_TAG_ptr_to_member_type"; break;
13672de3b87aSKai Wang 	case DW_TAG_reference_type:
13682de3b87aSKai Wang 		*s = "DW_TAG_reference_type"; break;
13692de3b87aSKai Wang 	case DW_TAG_restrict_type:
13702de3b87aSKai Wang 		*s = "DW_TAG_restrict_type"; break;
13712de3b87aSKai Wang 	case DW_TAG_rvalue_reference_type:
13722de3b87aSKai Wang 		*s = "DW_TAG_rvalue_reference_type"; break;
13732de3b87aSKai Wang 	case DW_TAG_set_type:
13742de3b87aSKai Wang 		*s = "DW_TAG_set_type"; break;
13752de3b87aSKai Wang 	case DW_TAG_shared_type:
13762de3b87aSKai Wang 		*s = "DW_TAG_shared_type"; break;
13772de3b87aSKai Wang 	case DW_TAG_string_type:
13782de3b87aSKai Wang 		*s = "DW_TAG_string_type"; break;
13792de3b87aSKai Wang 	case DW_TAG_structure_type:
13802de3b87aSKai Wang 		*s = "DW_TAG_structure_type"; break;
13812de3b87aSKai Wang 	case DW_TAG_subprogram:
13822de3b87aSKai Wang 		*s = "DW_TAG_subprogram"; break;
13832de3b87aSKai Wang 	case DW_TAG_subrange_type:
13842de3b87aSKai Wang 		*s = "DW_TAG_subrange_type"; break;
13852de3b87aSKai Wang 	case DW_TAG_subroutine_type:
13862de3b87aSKai Wang 		*s = "DW_TAG_subroutine_type"; break;
13872de3b87aSKai Wang 	case DW_TAG_template_alias:
13882de3b87aSKai Wang 		*s = "DW_TAG_template_alias"; break;
13892de3b87aSKai Wang 	case DW_TAG_template_type_parameter:
13902de3b87aSKai Wang 		*s = "DW_TAG_template_type_parameter"; break;
13912de3b87aSKai Wang 	case DW_TAG_template_value_parameter:
13922de3b87aSKai Wang 		*s = "DW_TAG_template_value_parameter"; break;
13932de3b87aSKai Wang 	case DW_TAG_thrown_type:
13942de3b87aSKai Wang 		*s = "DW_TAG_thrown_type"; break;
13952de3b87aSKai Wang 	case DW_TAG_try_block:
13962de3b87aSKai Wang 		*s = "DW_TAG_try_block"; break;
13972de3b87aSKai Wang 	case DW_TAG_type_unit:
13982de3b87aSKai Wang 		*s = "DW_TAG_type_unit"; break;
13992de3b87aSKai Wang 	case DW_TAG_typedef:
14002de3b87aSKai Wang 		*s = "DW_TAG_typedef"; break;
14012de3b87aSKai Wang 	case DW_TAG_union_type:
14022de3b87aSKai Wang 		*s = "DW_TAG_union_type"; break;
14032de3b87aSKai Wang 	case DW_TAG_unspecified_parameters:
14042de3b87aSKai Wang 		*s = "DW_TAG_unspecified_parameters"; break;
14052de3b87aSKai Wang 	case DW_TAG_unspecified_type:
14062de3b87aSKai Wang 		*s = "DW_TAG_unspecified_type"; break;
14072de3b87aSKai Wang 	case DW_TAG_variable:
14082de3b87aSKai Wang 		*s = "DW_TAG_variable"; break;
14092de3b87aSKai Wang 	case DW_TAG_variant:
14102de3b87aSKai Wang 		*s = "DW_TAG_variant"; break;
14112de3b87aSKai Wang 	case DW_TAG_variant_part:
14122de3b87aSKai Wang 		*s = "DW_TAG_variant_part"; break;
14132de3b87aSKai Wang 	case DW_TAG_volatile_type:
14142de3b87aSKai Wang 		*s = "DW_TAG_volatile_type"; break;
14152de3b87aSKai Wang 	case DW_TAG_with_stmt:
14162de3b87aSKai Wang 		*s = "DW_TAG_with_stmt"; break;
1417cf781b2eSEd Maste 	case DW_TAG_format_label:
1418cf781b2eSEd Maste 		*s = "DW_TAG_format_label"; break;
1419cf781b2eSEd Maste 	case DW_TAG_function_template:
1420cf781b2eSEd Maste 		*s = "DW_TAG_function_template"; break;
1421cf781b2eSEd Maste 	case DW_TAG_class_template:
1422cf781b2eSEd Maste 		*s = "DW_TAG_class_template"; break;
1423cf781b2eSEd Maste 	case DW_TAG_GNU_BINCL:
1424cf781b2eSEd Maste 		*s = "DW_TAG_GNU_BINCL"; break;
1425cf781b2eSEd Maste 	case DW_TAG_GNU_EINCL:
1426cf781b2eSEd Maste 		*s = "DW_TAG_GNU_EINCL"; break;
1427cf781b2eSEd Maste 	case DW_TAG_GNU_template_template_param:
1428cf781b2eSEd Maste 		*s = "DW_TAG_GNU_template_template_param"; break;
1429cf781b2eSEd Maste 	case DW_TAG_GNU_template_parameter_pack:
1430cf781b2eSEd Maste 		*s = "DW_TAG_GNU_template_parameter_pack"; break;
1431cf781b2eSEd Maste 	case DW_TAG_GNU_formal_parameter_pack:
1432cf781b2eSEd Maste 		*s = "DW_TAG_GNU_formal_parameter_pack"; break;
1433cf781b2eSEd Maste 	case DW_TAG_GNU_call_site:
1434cf781b2eSEd Maste 		*s = "DW_TAG_GNU_call_site"; break;
1435cf781b2eSEd Maste 	case DW_TAG_GNU_call_site_parameter:
1436cf781b2eSEd Maste 		*s = "DW_TAG_GNU_call_site_parameter"; break;
14372de3b87aSKai Wang 	default:
14382de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
14392de3b87aSKai Wang 	}
14402de3b87aSKai Wang 
14412de3b87aSKai Wang 	return (DW_DLV_OK);
14422de3b87aSKai Wang }
14432de3b87aSKai Wang 
14442de3b87aSKai Wang int
14452de3b87aSKai Wang dwarf_get_VIRTUALITY_name(unsigned vir, const char **s)
14462de3b87aSKai Wang {
14472de3b87aSKai Wang 
14482de3b87aSKai Wang 	assert(s != NULL);
14492de3b87aSKai Wang 
14502de3b87aSKai Wang 	switch (vir) {
14512de3b87aSKai Wang 	case DW_VIRTUALITY_none:
14522de3b87aSKai Wang 		*s = "DW_VIRTUALITY_none"; break;
14532de3b87aSKai Wang 	case DW_VIRTUALITY_virtual:
14542de3b87aSKai Wang 		*s = "DW_VIRTUALITY_virtual"; break;
14552de3b87aSKai Wang 	case DW_VIRTUALITY_pure_virtual:
14562de3b87aSKai Wang 		*s = "DW_VIRTUALITY_pure_virtual"; break;
14572de3b87aSKai Wang 	default:
14582de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
14592de3b87aSKai Wang 	}
14602de3b87aSKai Wang 
14612de3b87aSKai Wang 	return (DW_DLV_OK);
14622de3b87aSKai Wang }
14632de3b87aSKai Wang 
14642de3b87aSKai Wang int
14652de3b87aSKai Wang dwarf_get_VIS_name(unsigned vis, const char **s)
14662de3b87aSKai Wang {
14672de3b87aSKai Wang 
14682de3b87aSKai Wang 	assert(s != NULL);
14692de3b87aSKai Wang 
14702de3b87aSKai Wang 	switch (vis) {
14712de3b87aSKai Wang 	case DW_VIS_local:
14722de3b87aSKai Wang 		*s = "DW_VIS_local"; break;
14732de3b87aSKai Wang 	case DW_VIS_exported:
14742de3b87aSKai Wang 		*s = "DW_VIS_exported"; break;
14752de3b87aSKai Wang 	case DW_VIS_qualified:
14762de3b87aSKai Wang 		*s = "DW_VIS_qualified"; break;
14772de3b87aSKai Wang 	default:
14782de3b87aSKai Wang 		return (DW_DLV_NO_ENTRY);
14792de3b87aSKai Wang 	}
14802de3b87aSKai Wang 
14812de3b87aSKai Wang 	return (DW_DLV_OK);
14822de3b87aSKai Wang }
1483