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