1 /*- 2 * Copyright (c) 2007 John Birrell (jb@freebsd.org) 3 * Copyright (c) 2009 Kai Wang 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25 * SUCH DAMAGE. 26 */ 27 28 #include "_libdwarf.h" 29 30 ELFTC_VCSID("$Id: dwarf_dump.c 3749 2019-06-28 01:10:44Z emaste $"); 31 32 int 33 dwarf_get_ACCESS_name(unsigned access, const char **s) 34 { 35 36 assert(s != NULL); 37 38 switch (access) { 39 case DW_ACCESS_public: 40 *s = "DW_ACCESS_public"; break; 41 case DW_ACCESS_protected: 42 *s = "DW_ACCESS_protected"; break; 43 case DW_ACCESS_private: 44 *s = "DW_ACCESS_private"; break; 45 default: 46 return (DW_DLV_NO_ENTRY); 47 } 48 49 return (DW_DLV_OK); 50 } 51 52 int 53 dwarf_get_AT_name(unsigned attr, const char **s) 54 { 55 56 assert(s != NULL); 57 58 switch (attr) { 59 case DW_AT_abstract_origin: 60 *s = "DW_AT_abstract_origin"; break; 61 case DW_AT_accessibility: 62 *s = "DW_AT_accessibility"; break; 63 case DW_AT_address_class: 64 *s = "DW_AT_address_class"; break; 65 case DW_AT_artificial: 66 *s = "DW_AT_artificial"; break; 67 case DW_AT_allocated: 68 *s = "DW_AT_allocated"; break; 69 case DW_AT_associated: 70 *s = "DW_AT_associated"; break; 71 case DW_AT_base_types: 72 *s = "DW_AT_base_types"; break; 73 case DW_AT_binary_scale: 74 *s = "DW_AT_binary_scale"; break; 75 case DW_AT_bit_offset: 76 *s = "DW_AT_bit_offset"; break; 77 case DW_AT_bit_size: 78 *s = "DW_AT_bit_size"; break; 79 case DW_AT_bit_stride: 80 *s = "DW_AT_bit_stride"; break; 81 case DW_AT_byte_size: 82 *s = "DW_AT_byte_size"; break; 83 case DW_AT_byte_stride: 84 *s = "DW_AT_byte_stride"; break; 85 case DW_AT_calling_convention: 86 *s = "DW_AT_calling_convention"; break; 87 case DW_AT_common_reference: 88 *s = "DW_AT_common_reference"; break; 89 case DW_AT_comp_dir: 90 *s = "DW_AT_comp_dir"; break; 91 case DW_AT_const_expr: 92 *s = "DW_AT_const_expr"; break; 93 case DW_AT_const_value: 94 *s = "DW_AT_const_value"; break; 95 case DW_AT_containing_type: 96 *s = "DW_AT_containing_type"; break; 97 case DW_AT_count: 98 *s = "DW_AT_count"; break; 99 case DW_AT_call_column: 100 *s = "DW_AT_call_column"; break; 101 case DW_AT_call_file: 102 *s = "DW_AT_call_file"; break; 103 case DW_AT_call_line: 104 *s = "DW_AT_call_line"; break; 105 case DW_AT_data_bit_offset: 106 *s = "DW_AT_data_bit_offset"; break; 107 case DW_AT_data_location: 108 *s = "DW_AT_data_location"; break; 109 case DW_AT_data_member_location: 110 *s = "DW_AT_data_member_location"; break; 111 case DW_AT_decl_column: 112 *s = "DW_AT_decl_column"; break; 113 case DW_AT_decl_file: 114 *s = "DW_AT_decl_file"; break; 115 case DW_AT_decl_line: 116 *s = "DW_AT_decl_line"; break; 117 case DW_AT_declaration: 118 *s = "DW_AT_declaration"; break; 119 case DW_AT_default_value: 120 *s = "DW_AT_default_value"; break; 121 case DW_AT_decimal_scale: 122 *s = "DW_AT_decimal_scale"; break; 123 case DW_AT_decimal_sign: 124 *s = "DW_AT_decimal_sign"; break; 125 case DW_AT_description: 126 *s = "DW_AT_description"; break; 127 case DW_AT_digit_count: 128 *s = "DW_AT_digit_count"; break; 129 case DW_AT_discr: 130 *s = "DW_AT_discr"; break; 131 case DW_AT_discr_list: 132 *s = "DW_AT_discr_list"; break; 133 case DW_AT_discr_value: 134 *s = "DW_AT_discr_value"; break; 135 case DW_AT_element_list: 136 *s = "DW_AT_element_list"; break; 137 case DW_AT_encoding: 138 *s = "DW_AT_encoding"; break; 139 case DW_AT_enum_class: 140 *s = "DW_AT_enum_class"; break; 141 case DW_AT_external: 142 *s = "DW_AT_external"; break; 143 case DW_AT_entry_pc: 144 *s = "DW_AT_entry_pc"; break; 145 case DW_AT_extension: 146 *s = "DW_AT_extension"; break; 147 case DW_AT_explicit: 148 *s = "DW_AT_explicit"; break; 149 case DW_AT_endianity: 150 *s = "DW_AT_endianity"; break; 151 case DW_AT_elemental: 152 *s = "DW_AT_elemental"; break; 153 case DW_AT_frame_base: 154 *s = "DW_AT_frame_base"; break; 155 case DW_AT_friend: 156 *s = "DW_AT_friend"; break; 157 case DW_AT_high_pc: 158 *s = "DW_AT_high_pc"; break; 159 case DW_AT_hi_user: 160 *s = "DW_AT_hi_user"; break; 161 case DW_AT_identifier_case: 162 *s = "DW_AT_identifier_case"; break; 163 case DW_AT_import: 164 *s = "DW_AT_import"; break; 165 case DW_AT_inline: 166 *s = "DW_AT_inline"; break; 167 case DW_AT_is_optional: 168 *s = "DW_AT_is_optional"; break; 169 case DW_AT_language: 170 *s = "DW_AT_language"; break; 171 case DW_AT_linkage_name: 172 *s = "DW_AT_linkage_name"; break; 173 case DW_AT_lo_user: 174 *s = "DW_AT_lo_user"; break; 175 case DW_AT_location: 176 *s = "DW_AT_location"; break; 177 case DW_AT_low_pc: 178 *s = "DW_AT_low_pc"; break; 179 case DW_AT_lower_bound: 180 *s = "DW_AT_lower_bound"; break; 181 case DW_AT_macro_info: 182 *s = "DW_AT_macro_info"; break; 183 case DW_AT_main_subprogram: 184 *s = "DW_AT_main_subprogram"; break; 185 case DW_AT_mutable: 186 *s = "DW_AT_mutable"; break; 187 case DW_AT_member: 188 *s = "DW_AT_member"; break; 189 case DW_AT_name: 190 *s = "DW_AT_name"; break; 191 case DW_AT_namelist_item: 192 *s = "DW_AT_namelist_item"; break; 193 case DW_AT_ordering: 194 *s = "DW_AT_ordering"; break; 195 case DW_AT_object_pointer: 196 *s = "DW_AT_object_pointer"; break; 197 case DW_AT_priority: 198 *s = "DW_AT_priority"; break; 199 case DW_AT_producer: 200 *s = "DW_AT_producer"; break; 201 case DW_AT_prototyped: 202 *s = "DW_AT_prototyped"; break; 203 case DW_AT_picture_string: 204 *s = "DW_AT_picture_string"; break; 205 case DW_AT_pure: 206 *s = "DW_AT_pure"; break; 207 case DW_AT_return_addr: 208 *s = "DW_AT_return_addr"; break; 209 case DW_AT_ranges: 210 *s = "DW_AT_ranges"; break; 211 case DW_AT_recursive: 212 *s = "DW_AT_recursive"; break; 213 case DW_AT_segment: 214 *s = "DW_AT_segment"; break; 215 case DW_AT_sibling: 216 *s = "DW_AT_sibling"; break; 217 case DW_AT_signature: 218 *s = "DW_AT_signature"; break; 219 case DW_AT_specification: 220 *s = "DW_AT_specification"; break; 221 case DW_AT_start_scope: 222 *s = "DW_AT_start_scope"; break; 223 case DW_AT_static_link: 224 *s = "DW_AT_static_link"; break; 225 case DW_AT_stmt_list: 226 *s = "DW_AT_stmt_list"; break; 227 case DW_AT_string_length: 228 *s = "DW_AT_string_length"; break; 229 case DW_AT_subscr_data: 230 *s = "DW_AT_subscr_data"; break; 231 case DW_AT_small: 232 *s = "DW_AT_small"; break; 233 case DW_AT_type: 234 *s = "DW_AT_type"; break; 235 case DW_AT_trampoline: 236 *s = "DW_AT_trampoline"; break; 237 case DW_AT_threads_scaled: 238 *s = "DW_AT_threads_scaled"; break; 239 case DW_AT_upper_bound: 240 *s = "DW_AT_upper_bound"; break; 241 case DW_AT_use_location: 242 *s = "DW_AT_use_location"; break; 243 case DW_AT_use_UTF8: 244 *s = "DW_AT_use_UTF8"; break; 245 case DW_AT_variable_parameter: 246 *s = "DW_AT_variable_parameter"; break; 247 case DW_AT_virtuality: 248 *s = "DW_AT_virtuality"; break; 249 case DW_AT_visibility: 250 *s = "DW_AT_visibility"; break; 251 case DW_AT_vtable_elem_location: 252 *s = "DW_AT_vtable_elem_location"; break; 253 case DW_AT_string_length_bit_size: 254 *s = "DW_AT_string_length_bit_size"; break; 255 case DW_AT_string_length_byte_size: 256 *s = "DW_AT_string_length_byte_size"; break; 257 case DW_AT_rank: 258 *s = "DW_AT_rank"; break; 259 case DW_AT_str_offsets_base: 260 *s = "DW_AT_str_offsets_base"; break; 261 case DW_AT_addr_base: 262 *s = "DW_AT_addr_base"; break; 263 case DW_AT_rnglists_base: 264 *s = "DW_AT_rnglists_base"; break; 265 case DW_AT_dwo_name: 266 *s = "DW_AT_dwo_name"; break; 267 case DW_AT_reference: 268 *s = "DW_AT_reference"; break; 269 case DW_AT_rvalue_reference: 270 *s = "DW_AT_rvalue_reference"; break; 271 case DW_AT_macros: 272 *s = "DW_AT_macros"; break; 273 case DW_AT_call_all_calls: 274 *s = "DW_AT_call_all_calls"; break; 275 case DW_AT_call_all_source_calls: 276 *s = "DW_AT_call_all_source_calls"; break; 277 case DW_AT_call_all_tail_calls: 278 *s = "DW_AT_call_all_tail_calls"; break; 279 case DW_AT_call_return_pc: 280 *s = "DW_AT_call_return_pc"; break; 281 case DW_AT_call_value: 282 *s = "DW_AT_call_value"; break; 283 case DW_AT_call_origin: 284 *s = "DW_AT_call_origin"; break; 285 case DW_AT_call_parameter: 286 *s = "DW_AT_call_parameter"; break; 287 case DW_AT_call_pc: 288 *s = "DW_AT_call_pc"; break; 289 case DW_AT_call_tail_call: 290 *s = "DW_AT_call_tail_call"; break; 291 case DW_AT_call_target: 292 *s = "DW_AT_call_target"; break; 293 case DW_AT_call_target_clobbered: 294 *s = "DW_AT_call_target_clobbered"; break; 295 case DW_AT_call_data_location: 296 *s = "DW_AT_call_data_location"; break; 297 case DW_AT_call_data_value: 298 *s = "DW_AT_call_data_value"; break; 299 case DW_AT_noreturn: 300 *s = "DW_AT_noreturn"; break; 301 case DW_AT_alignment: 302 *s = "DW_AT_alignment"; break; 303 case DW_AT_export_symbols: 304 *s = "DW_AT_export_symbols"; break; 305 case DW_AT_deleted: 306 *s = "DW_AT_deleted"; break; 307 case DW_AT_defaulted: 308 *s = "DW_AT_defaulted"; break; 309 case DW_AT_loclists_base: 310 *s = "DW_AT_loclists_base"; break; 311 case DW_AT_sf_names: 312 *s = "DW_AT_sf_names"; break; 313 case DW_AT_src_info: 314 *s = "DW_AT_src_info"; break; 315 case DW_AT_mac_info: 316 *s = "DW_AT_mac_info"; break; 317 case DW_AT_src_coords: 318 *s = "DW_AT_src_coords"; break; 319 case DW_AT_body_begin: 320 *s = "DW_AT_body_begin"; break; 321 case DW_AT_body_end: 322 *s = "DW_AT_body_end"; break; 323 case DW_AT_MIPS_fde: 324 *s = "DW_AT_MIPS_fde"; break; 325 case DW_AT_MIPS_loop_begin: 326 *s = "DW_AT_MIPS_loop_begin"; break; 327 case DW_AT_MIPS_tail_loop_begin: 328 *s = "DW_AT_MIPS_tail_loop_begin"; break; 329 case DW_AT_MIPS_epilog_begin: 330 *s = "DW_AT_MIPS_epilog_begin"; break; 331 case DW_AT_MIPS_loop_unroll_factor: 332 *s = "DW_AT_MIPS_loop_unroll_factor"; break; 333 case DW_AT_MIPS_software_pipeline_depth: 334 *s = "DW_AT_MIPS_software_pipeline_depth"; break; 335 case DW_AT_MIPS_linkage_name: 336 *s = "DW_AT_MIPS_linkage_name"; break; 337 case DW_AT_MIPS_stride: 338 *s = "DW_AT_MIPS_stride"; break; 339 case DW_AT_MIPS_abstract_name: 340 *s = "DW_AT_MIPS_abstract_name"; break; 341 case DW_AT_MIPS_clone_origin: 342 *s = "DW_AT_MIPS_clone_origin"; break; 343 case DW_AT_MIPS_has_inlines: 344 *s = "DW_AT_MIPS_has_inlines"; break; 345 case DW_AT_MIPS_stride_byte: 346 *s = "DW_AT_MIPS_stride_byte"; break; 347 case DW_AT_MIPS_stride_elem: 348 *s = "DW_AT_MIPS_stride_elem"; break; 349 case DW_AT_MIPS_ptr_dopetype: 350 *s = "DW_AT_MIPS_ptr_dopetype"; break; 351 case DW_AT_MIPS_allocatable_dopetype: 352 *s = "DW_AT_MIPS_allocatable_dopetype"; break; 353 case DW_AT_MIPS_assumed_shape_dopetype: 354 *s = "DW_AT_MIPS_assumed_shape_dopetype"; break; 355 case DW_AT_MIPS_assumed_size: 356 *s = "DW_AT_MIPS_assumed_size"; break; 357 case DW_AT_GNU_vector: 358 *s = "DW_AT_GNU_vector"; break; 359 case DW_AT_GNU_guarded_by: 360 *s = "DW_AT_GNU_guarded_by"; break; 361 case DW_AT_GNU_pt_guarded_by: 362 *s = "DW_AT_GNU_pt_guarded_by"; break; 363 case DW_AT_GNU_guarded: 364 *s = "DW_AT_GNU_guarded"; break; 365 case DW_AT_GNU_pt_guarded: 366 *s = "DW_AT_GNU_pt_guarded"; break; 367 case DW_AT_GNU_locks_excluded: 368 *s = "DW_AT_GNU_locks_excluded"; break; 369 case DW_AT_GNU_exclusive_locks_required: 370 *s = "DW_AT_GNU_exclusive_locks_required"; break; 371 case DW_AT_GNU_shared_locks_required: 372 *s = "DW_AT_GNU_shared_locks_required"; break; 373 case DW_AT_GNU_odr_signature: 374 *s = "DW_AT_GNU_odr_signature"; break; 375 case DW_AT_GNU_template_name: 376 *s = "DW_AT_GNU_template_name"; break; 377 case DW_AT_GNU_call_site_value: 378 *s = "DW_AT_GNU_call_site_value"; break; 379 case DW_AT_GNU_call_site_data_value: 380 *s = "DW_AT_GNU_call_site_data_value"; break; 381 case DW_AT_GNU_call_site_target: 382 *s = "DW_AT_GNU_call_site_target"; break; 383 case DW_AT_GNU_call_site_target_clobbered: 384 *s = "DW_AT_GNU_call_site_target_clobbered"; break; 385 case DW_AT_GNU_tail_call: 386 *s = "DW_AT_GNU_tail_call"; break; 387 case DW_AT_GNU_all_tail_call_sites: 388 *s = "DW_AT_GNU_all_tail_call_sites"; break; 389 case DW_AT_GNU_all_call_sites: 390 *s = "DW_AT_GNU_all_call_sites"; break; 391 case DW_AT_GNU_all_source_call_sites: 392 *s = "DW_AT_GNU_all_source_call_sites"; break; 393 case DW_AT_APPLE_optimized: 394 *s = "DW_AT_APPLE_optimized"; break; 395 case DW_AT_APPLE_flags: 396 *s = "DW_AT_APPLE_flags"; break; 397 case DW_AT_APPLE_isa: 398 *s = "DW_AT_APPLE_isa"; break; 399 case DW_AT_APPLE_block: 400 *s = "DW_AT_APPLE_block"; break; 401 case DW_AT_APPLE_major_runtime_vers: 402 *s = "DW_AT_APPLE_major_runtime_vers"; break; 403 case DW_AT_APPLE_runtime_class: 404 *s = "DW_AT_APPLE_runtime_class"; break; 405 case DW_AT_APPLE_omit_frame_ptr: 406 *s = "DW_AT_APPLE_omit_frame_ptr"; break; 407 case DW_AT_APPLE_property_name: 408 *s = "DW_AT_APPLE_property_name"; break; 409 case DW_AT_APPLE_property_getter: 410 *s = "DW_AT_APPLE_property_getter"; break; 411 case DW_AT_APPLE_property_setter: 412 *s = "DW_AT_APPLE_property_setter"; break; 413 case DW_AT_APPLE_property_attribute: 414 *s = "DW_AT_APPLE_property_attribute"; break; 415 case DW_AT_APPLE_objc_complete_type: 416 *s = "DW_AT_APPLE_objc_complete_type"; break; 417 case DW_AT_APPLE_property: 418 *s = "DW_AT_APPLE_property"; break; 419 default: 420 return (DW_DLV_NO_ENTRY); 421 } 422 423 return (DW_DLV_OK); 424 } 425 426 int 427 dwarf_get_ATE_name(unsigned ate, const char **s) 428 { 429 430 assert(s != NULL); 431 432 switch (ate) { 433 case DW_ATE_address: 434 *s = "DW_ATE_address"; break; 435 case DW_ATE_boolean: 436 *s = "DW_ATE_boolean"; break; 437 case DW_ATE_complex_float: 438 *s = "DW_ATE_complex_float"; break; 439 case DW_ATE_float: 440 *s = "DW_ATE_float"; break; 441 case DW_ATE_signed: 442 *s = "DW_ATE_signed"; break; 443 case DW_ATE_signed_char: 444 *s = "DW_ATE_signed_char"; break; 445 case DW_ATE_unsigned: 446 *s = "DW_ATE_unsigned"; break; 447 case DW_ATE_unsigned_char: 448 *s = "DW_ATE_unsigned_char"; break; 449 case DW_ATE_imaginary_float: 450 *s = "DW_ATE_imaginary_float"; break; 451 case DW_ATE_packed_decimal: 452 *s = "DW_ATE_packed_decimal"; break; 453 case DW_ATE_numeric_string: 454 *s = "DW_ATE_numeric_string"; break; 455 case DW_ATE_edited: 456 *s = "DW_ATE_edited"; break; 457 case DW_ATE_signed_fixed: 458 *s = "DW_ATE_signed_fixed"; break; 459 case DW_ATE_unsigned_fixed: 460 *s = "DW_ATE_unsigned_fixed"; break; 461 case DW_ATE_decimal_float: 462 *s = "DW_ATE_decimal_float"; break; 463 case DW_ATE_UTF: 464 *s = "DW_ATE_UTF"; break; 465 case DW_ATE_UCS: 466 *s = "DW_ATE_UCS"; break; 467 case DW_ATE_ASCII: 468 *s = "DW_ATE_ASCII"; break; 469 case DW_ATE_lo_user: 470 *s = "DW_ATE_lo_user"; break; 471 case DW_ATE_hi_user: 472 *s = "DW_ATE_hi_user"; break; 473 default: 474 return (DW_DLV_NO_ENTRY); 475 } 476 477 return (DW_DLV_OK); 478 } 479 480 int 481 dwarf_get_CC_name(unsigned cc, const char **s) 482 { 483 484 assert(s != NULL); 485 486 switch (cc) { 487 case DW_CC_normal: 488 *s = "DW_CC_normal"; break; 489 case DW_CC_program: 490 *s = "DW_CC_program"; break; 491 case DW_CC_nocall: 492 *s = "DW_CC_nocall"; break; 493 case DW_CC_pass_by_reference: 494 *s = "DW_CC_pass_by_reference"; break; 495 case DW_CC_pass_by_value: 496 *s = "DW_CC_pass_by_value"; break; 497 case DW_CC_lo_user: 498 *s = "DW_CC_lo_user"; break; 499 case DW_CC_hi_user: 500 *s = "DW_CC_hi_user"; break; 501 default: 502 return (DW_DLV_NO_ENTRY); 503 } 504 505 return (DW_DLV_OK); 506 } 507 508 int 509 dwarf_get_CFA_name(unsigned cfa, const char **s) 510 { 511 512 assert(s != NULL); 513 514 switch (cfa) { 515 case DW_CFA_advance_loc: 516 *s = "DW_CFA_advance_loc"; break; 517 case DW_CFA_offset: 518 *s = "DW_CFA_offset"; break; 519 case DW_CFA_restore: 520 *s = "DW_CFA_restore"; break; 521 case DW_CFA_nop: 522 *s = "DW_CFA_nop"; break; 523 case DW_CFA_set_loc: 524 *s = "DW_CFA_set_loc"; break; 525 case DW_CFA_advance_loc1: 526 *s = "DW_CFA_advance_loc1"; break; 527 case DW_CFA_advance_loc2: 528 *s = "DW_CFA_advance_loc2"; break; 529 case DW_CFA_advance_loc4: 530 *s = "DW_CFA_advance_loc4"; break; 531 case DW_CFA_offset_extended: 532 *s = "DW_CFA_offset_extended"; break; 533 case DW_CFA_restore_extended: 534 *s = "DW_CFA_restore_extended"; break; 535 case DW_CFA_undefined: 536 *s = "DW_CFA_undefined"; break; 537 case DW_CFA_same_value: 538 *s = "DW_CFA_same_value"; break; 539 case DW_CFA_register: 540 *s = "DW_CFA_register"; break; 541 case DW_CFA_remember_state: 542 *s = "DW_CFA_remember_state"; break; 543 case DW_CFA_restore_state: 544 *s = "DW_CFA_restore_state"; break; 545 case DW_CFA_def_cfa: 546 *s = "DW_CFA_def_cfa"; break; 547 case DW_CFA_def_cfa_register: 548 *s = "DW_CFA_def_cfa_register"; break; 549 case DW_CFA_def_cfa_offset: 550 *s = "DW_CFA_def_cfa_offset"; break; 551 case DW_CFA_def_cfa_expression: 552 *s = "DW_CFA_def_cfa_expression"; break; 553 case DW_CFA_expression: 554 *s = "DW_CFA_expression"; break; 555 case DW_CFA_offset_extended_sf: 556 *s = "DW_CFA_offset_extended_sf"; break; 557 case DW_CFA_def_cfa_sf: 558 *s = "DW_CFA_def_cfa_sf"; break; 559 case DW_CFA_def_cfa_offset_sf: 560 *s = "DW_CFA_def_cfa_offset_sf"; break; 561 case DW_CFA_val_offset: 562 *s = "DW_CFA_val_offset"; break; 563 case DW_CFA_val_offset_sf: 564 *s = "DW_CFA_val_offset_sf"; break; 565 case DW_CFA_val_expression: 566 *s = "DW_CFA_val_expression"; break; 567 case DW_CFA_lo_user: 568 *s = "DW_CFA_lo_user"; break; 569 case DW_CFA_high_user: 570 *s = "DW_CFA_high_user"; break; 571 default: 572 return (DW_DLV_NO_ENTRY); 573 } 574 575 return (DW_DLV_OK); 576 } 577 578 int 579 dwarf_get_CHILDREN_name(unsigned children, const char **s) 580 { 581 582 assert(s != NULL); 583 584 switch (children) { 585 case DW_CHILDREN_no: 586 *s = "DW_CHILDREN_no"; break; 587 case DW_CHILDREN_yes: 588 *s = "DW_CHILDREN_yes"; break; 589 default: 590 return (DW_DLV_NO_ENTRY); 591 } 592 593 return (DW_DLV_OK); 594 } 595 596 int 597 dwarf_get_FORM_name(unsigned form, const char **s) 598 { 599 600 assert(s != NULL); 601 602 switch (form) { 603 case DW_FORM_addr: 604 *s = "DW_FORM_addr"; break; 605 case DW_FORM_block: 606 *s = "DW_FORM_block"; break; 607 case DW_FORM_block1: 608 *s = "DW_FORM_block1"; break; 609 case DW_FORM_block2: 610 *s = "DW_FORM_block2"; break; 611 case DW_FORM_block4: 612 *s = "DW_FORM_block4"; break; 613 case DW_FORM_data1: 614 *s = "DW_FORM_data1"; break; 615 case DW_FORM_data2: 616 *s = "DW_FORM_data2"; break; 617 case DW_FORM_data4: 618 *s = "DW_FORM_data4"; break; 619 case DW_FORM_data8: 620 *s = "DW_FORM_data8"; break; 621 case DW_FORM_exprloc: 622 *s = "DW_FORM_exprloc"; break; 623 case DW_FORM_flag: 624 *s = "DW_FORM_flag"; break; 625 case DW_FORM_flag_present: 626 *s = "DW_FORM_flag_present"; break; 627 case DW_FORM_indirect: 628 *s = "DW_FORM_indirect"; break; 629 case DW_FORM_ref1: 630 *s = "DW_FORM_ref1"; break; 631 case DW_FORM_ref2: 632 *s = "DW_FORM_ref2"; break; 633 case DW_FORM_ref4: 634 *s = "DW_FORM_ref4"; break; 635 case DW_FORM_ref8: 636 *s = "DW_FORM_ref8"; break; 637 case DW_FORM_ref_addr: 638 *s = "DW_FORM_ref_addr"; break; 639 case DW_FORM_ref_sig8: 640 *s = "DW_FORM_ref_sig8"; break; 641 case DW_FORM_ref_udata: 642 *s = "DW_FORM_ref_udata"; break; 643 case DW_FORM_sdata: 644 *s = "DW_FORM_sdata"; break; 645 case DW_FORM_sec_offset: 646 *s = "DW_FORM_sec_offset"; break; 647 case DW_FORM_string: 648 *s = "DW_FORM_string"; break; 649 case DW_FORM_strp: 650 *s = "DW_FORM_strp"; break; 651 case DW_FORM_udata: 652 *s = "DW_FORM_udata"; break; 653 case DW_FORM_strx: 654 *s = "DW_FORM_strx"; break; 655 case DW_FORM_addrx: 656 *s = "DW_FORM_addrx"; break; 657 case DW_FORM_ref_sup4: 658 *s = "DW_FORM_ref_sup4"; break; 659 case DW_FORM_strp_sup: 660 *s = "DW_FORM_strp_sup"; break; 661 case DW_FORM_data16: 662 *s = "DW_FORM_data16"; break; 663 case DW_FORM_line_strp: 664 *s = "DW_FORM_line_strp"; break; 665 case DW_FORM_implicit_const: 666 *s = "DW_FORM_implicit_const"; break; 667 case DW_FORM_loclistx: 668 *s = "DW_FORM_loclistx"; break; 669 case DW_FORM_rnglistx: 670 *s = "DW_FORM_rnglistx"; break; 671 case DW_FORM_ref_sup8: 672 *s = "DW_FORM_ref_sup8"; break; 673 case DW_FORM_ref_strx1: 674 *s = "DW_FORM_ref_strx1"; break; 675 case DW_FORM_ref_strx2: 676 *s = "DW_FORM_ref_strx2"; break; 677 case DW_FORM_ref_strx3: 678 *s = "DW_FORM_ref_strx3"; break; 679 case DW_FORM_ref_strx4: 680 *s = "DW_FORM_ref_strx4"; break; 681 case DW_FORM_ref_addrx1: 682 *s = "DW_FORM_ref_addrx1"; break; 683 case DW_FORM_ref_addrx2: 684 *s = "DW_FORM_ref_addrx2"; break; 685 case DW_FORM_ref_addrx3: 686 *s = "DW_FORM_ref_addrx3"; break; 687 case DW_FORM_ref_addrx4: 688 *s = "DW_FORM_ref_addrx4"; break; 689 default: 690 return (DW_DLV_NO_ENTRY); 691 } 692 693 return (DW_DLV_OK); 694 } 695 696 int 697 dwarf_get_DS_name(unsigned ds, const char **s) 698 { 699 700 assert(s != NULL); 701 702 switch (ds) { 703 case DW_DS_unsigned: 704 *s = "DW_DS_unsigned"; break; 705 case DW_DS_leading_overpunch: 706 *s = "DW_DS_leading_overpunch"; break; 707 case DW_DS_trailing_overpunch: 708 *s = "DW_DS_trailing_overpunch"; break; 709 case DW_DS_leading_separate: 710 *s = "DW_DS_leading_separate"; break; 711 case DW_DS_trailing_separate: 712 *s = "DW_DS_trailing_separate"; break; 713 default: 714 return (DW_DLV_NO_ENTRY); 715 } 716 717 return (DW_DLV_OK); 718 } 719 720 int 721 dwarf_get_DSC_name(unsigned dsc, const char **s) 722 { 723 724 assert(s != NULL); 725 726 switch (dsc) { 727 case DW_DSC_label: 728 *s = "DW_DSC_label"; break; 729 case DW_DSC_range: 730 *s = "DW_DSC_range"; break; 731 default: 732 return (DW_DLV_NO_ENTRY); 733 } 734 735 return (DW_DLV_OK); 736 } 737 738 int 739 dwarf_get_EH_name(unsigned eh, const char **s) 740 { 741 742 assert(s != NULL); 743 744 switch (eh) { 745 case DW_EH_PE_absptr: 746 *s = "DW_EH_PE_absptr"; break; 747 case DW_EH_PE_uleb128: 748 *s = "DW_EH_PE_uleb128"; break; 749 case DW_EH_PE_udata2: 750 *s = "DW_EH_PE_udata2"; break; 751 case DW_EH_PE_udata4: 752 *s = "DW_EH_PE_udata4"; break; 753 case DW_EH_PE_udata8: 754 *s = "DW_EH_PE_udata8"; break; 755 case DW_EH_PE_sleb128: 756 *s = "DW_EH_PE_sleb128"; break; 757 case DW_EH_PE_sdata2: 758 *s = "DW_EH_PE_sdata2"; break; 759 case DW_EH_PE_sdata4: 760 *s = "DW_EH_PE_sdata4"; break; 761 case DW_EH_PE_sdata8: 762 *s = "DW_EH_PE_sdata8"; break; 763 case DW_EH_PE_pcrel: 764 *s = "DW_EH_PE_pcrel"; break; 765 case DW_EH_PE_textrel: 766 *s = "DW_EH_PE_textrel"; break; 767 case DW_EH_PE_datarel: 768 *s = "DW_EH_PE_datarel"; break; 769 case DW_EH_PE_funcrel: 770 *s = "DW_EH_PE_funcrel"; break; 771 case DW_EH_PE_aligned: 772 *s = "DW_EH_PE_aligned"; break; 773 case DW_EH_PE_omit: 774 *s = "DW_EH_PE_omit"; break; 775 default: 776 return (DW_DLV_NO_ENTRY); 777 } 778 779 return (DW_DLV_OK); 780 } 781 782 int 783 dwarf_get_END_name(unsigned end, const char **s) 784 { 785 786 assert(s != NULL); 787 788 switch (end) { 789 case DW_END_default: 790 *s = "DW_END_default"; break; 791 case DW_END_big: 792 *s = "DW_END_big"; break; 793 case DW_END_little: 794 *s = "DW_END_little"; break; 795 case DW_END_lo_user: 796 *s = "DW_END_lo_user"; break; 797 case DW_END_high_user: 798 *s = "DW_END_high_user"; break; 799 default: 800 return (DW_DLV_NO_ENTRY); 801 } 802 803 return (DW_DLV_OK); 804 } 805 806 int 807 dwarf_get_ID_name(unsigned id, const char **s) 808 { 809 810 assert(s != NULL); 811 812 switch (id) { 813 case DW_ID_case_sensitive: 814 *s = "DW_ID_case_sensitive"; break; 815 case DW_ID_up_case: 816 *s = "DW_ID_up_case"; break; 817 case DW_ID_down_case: 818 *s = "DW_ID_down_case"; break; 819 case DW_ID_case_insensitive: 820 *s = "DW_ID_case_insensitive"; break; 821 default: 822 return (DW_DLV_NO_ENTRY); 823 } 824 825 return (DW_DLV_OK); 826 } 827 828 int 829 dwarf_get_INL_name(unsigned inl, const char **s) 830 { 831 832 assert(s != NULL); 833 834 switch (inl) { 835 case DW_INL_not_inlined: 836 *s = "DW_INL_not_inlined"; break; 837 case DW_INL_inlined: 838 *s = "DW_INL_inlined"; break; 839 case DW_INL_declared_not_inlined: 840 *s = "DW_INL_declared_not_inlined"; break; 841 case DW_INL_declared_inlined: 842 *s = "DW_INL_declared_inlined"; break; 843 default: 844 return (DW_DLV_NO_ENTRY); 845 } 846 847 return (DW_DLV_OK); 848 } 849 850 int 851 dwarf_get_LANG_name(unsigned lang, const char **s) 852 { 853 854 assert(s != NULL); 855 856 switch (lang) { 857 case DW_LANG_C89: 858 *s = "DW_LANG_C89"; break; 859 case DW_LANG_C: 860 *s = "DW_LANG_C"; break; 861 case DW_LANG_Ada83: 862 *s = "DW_LANG_Ada83"; break; 863 case DW_LANG_C_plus_plus: 864 *s = "DW_LANG_C_plus_plus"; break; 865 case DW_LANG_Cobol74: 866 *s = "DW_LANG_Cobol74"; break; 867 case DW_LANG_Cobol85: 868 *s = "DW_LANG_Cobol85"; break; 869 case DW_LANG_Fortran77: 870 *s = "DW_LANG_Fortran77"; break; 871 case DW_LANG_Fortran90: 872 *s = "DW_LANG_Fortran90"; break; 873 case DW_LANG_Pascal83: 874 *s = "DW_LANG_Pascal83"; break; 875 case DW_LANG_Modula2: 876 *s = "DW_LANG_Modula2"; break; 877 case DW_LANG_Java: 878 *s = "DW_LANG_Java"; break; 879 case DW_LANG_C99: 880 *s = "DW_LANG_C99"; break; 881 case DW_LANG_Ada95: 882 *s = "DW_LANG_Ada95"; break; 883 case DW_LANG_Fortran95: 884 *s = "DW_LANG_Fortran95"; break; 885 case DW_LANG_PLI: 886 *s = "DW_LANG_PLI"; break; 887 case DW_LANG_ObjC: 888 *s = "DW_LANG_ObjC"; break; 889 case DW_LANG_ObjC_plus_plus: 890 *s = "DW_LANG_ObjC_plus_plus"; break; 891 case DW_LANG_UPC: 892 *s = "DW_LANG_UPC"; break; 893 case DW_LANG_D: 894 *s = "DW_LANG_D"; break; 895 case DW_LANG_Python: 896 *s = "DW_LANG_Python"; break; 897 case DW_LANG_OpenCL: 898 *s = "DW_LANG_OpenCL"; break; 899 case DW_LANG_Go: 900 *s = "DW_LANG_Go"; break; 901 case DW_LANG_Modula3: 902 *s = "DW_LANG_Modula3"; break; 903 case DW_LANG_Haskell: 904 *s = "DW_LANG_Haskell"; break; 905 case DW_LANG_C_plus_plus_03: 906 *s = "DW_LANG_C_plus_plus_03"; break; 907 case DW_LANG_C_plus_plus_11: 908 *s = "DW_LANG_C_plus_plus_11"; break; 909 case DW_LANG_OCaml: 910 *s = "DW_LANG_OCaml"; break; 911 case DW_LANG_Rust: 912 *s = "DW_LANG_Rust"; break; 913 case DW_LANG_C11: 914 *s = "DW_LANG_C11"; break; 915 case DW_LANG_Swift: 916 *s = "DW_LANG_Swift"; break; 917 case DW_LANG_Julia: 918 *s = "DW_LANG_Julia"; break; 919 case DW_LANG_Dylan: 920 *s = "DW_LANG_Dylan"; break; 921 case DW_LANG_C_plus_plus_14: 922 *s = "DW_LANG_C_plus_plus_14"; break; 923 case DW_LANG_Fortran03: 924 *s = "DW_LANG_Fortran03"; break; 925 case DW_LANG_Fortran08: 926 *s = "DW_LANG_Fortran08"; break; 927 case DW_LANG_RenderScript: 928 *s = "DW_LANG_RenderScript"; break; 929 case DW_LANG_BLISS: 930 *s = "DW_LANG_BLISS"; break; 931 case DW_LANG_lo_user: 932 *s = "DW_LANG_lo_user"; break; 933 case DW_LANG_Mips_Assembler: 934 *s = "DW_LANG_Mips_Assembler"; break; 935 case DW_LANG_hi_user: 936 *s = "DW_LANG_hi_user"; break; 937 default: 938 return (DW_DLV_NO_ENTRY); 939 } 940 941 return (DW_DLV_OK); 942 } 943 944 int 945 dwarf_get_LNE_name(unsigned lne, const char **s) 946 { 947 948 assert(s != NULL); 949 950 switch (lne) { 951 case DW_LNE_end_sequence: 952 *s = "DW_LNE_end_sequence"; break; 953 case DW_LNE_set_address: 954 *s = "DW_LNE_set_address"; break; 955 case DW_LNE_define_file: 956 *s = "DW_LNE_define_file"; break; 957 case DW_LNE_lo_user: 958 *s = "DW_LNE_lo_user"; break; 959 case DW_LNE_hi_user: 960 *s = "DW_LNE_hi_user"; break; 961 default: 962 return (DW_DLV_NO_ENTRY); 963 } 964 965 return (DW_DLV_OK); 966 } 967 968 int 969 dwarf_get_LNS_name(unsigned lns, const char **s) 970 { 971 972 assert(s != NULL); 973 974 switch (lns) { 975 case DW_LNS_copy: 976 *s = "DW_LNS_copy"; break; 977 case DW_LNS_advance_pc: 978 *s = "DW_LNS_advance_pc"; break; 979 case DW_LNS_advance_line: 980 *s = "DW_LNS_advance_line"; break; 981 case DW_LNS_set_file: 982 *s = "DW_LNS_set_file"; break; 983 case DW_LNS_set_column: 984 *s = "DW_LNS_set_column"; break; 985 case DW_LNS_negate_stmt: 986 *s = "DW_LNS_negate_stmt"; break; 987 case DW_LNS_set_basic_block: 988 *s = "DW_LNS_set_basic_block"; break; 989 case DW_LNS_const_add_pc: 990 *s = "DW_LNS_const_add_pc"; break; 991 case DW_LNS_fixed_advance_pc: 992 *s = "DW_LNS_fixed_advance_pc"; break; 993 case DW_LNS_set_prologue_end: 994 *s = "DW_LNS_set_prologue_end"; break; 995 case DW_LNS_set_epilogue_begin: 996 *s = "DW_LNS_set_epilogue_begin"; break; 997 case DW_LNS_set_isa: 998 *s = "DW_LNS_set_isa"; break; 999 default: 1000 return (DW_DLV_NO_ENTRY); 1001 } 1002 1003 return (DW_DLV_OK); 1004 } 1005 1006 int 1007 dwarf_get_MACINFO_name(unsigned mi, const char **s) 1008 { 1009 1010 assert(s != NULL); 1011 1012 switch (mi) { 1013 case DW_MACINFO_define: 1014 *s = "DW_MACINFO_define"; break; 1015 case DW_MACINFO_undef: 1016 *s = "DW_MACINFO_undef"; break; 1017 case DW_MACINFO_start_file: 1018 *s = "DW_MACINFO_start_file"; break; 1019 case DW_MACINFO_end_file: 1020 *s = "DW_MACINFO_end_file"; break; 1021 case DW_MACINFO_vendor_ext: 1022 *s = "DW_MACINFO_vendor_ext"; break; 1023 default: 1024 return (DW_DLV_NO_ENTRY); 1025 } 1026 1027 return (DW_DLV_OK); 1028 } 1029 1030 int 1031 dwarf_get_OP_name(unsigned op, const char **s) 1032 { 1033 1034 assert(s != NULL); 1035 1036 switch (op) { 1037 case DW_OP_deref: 1038 *s = "DW_OP_deref"; break; 1039 case DW_OP_reg0: 1040 *s = "DW_OP_reg0"; break; 1041 case DW_OP_reg1: 1042 *s = "DW_OP_reg1"; break; 1043 case DW_OP_reg2: 1044 *s = "DW_OP_reg2"; break; 1045 case DW_OP_reg3: 1046 *s = "DW_OP_reg3"; break; 1047 case DW_OP_reg4: 1048 *s = "DW_OP_reg4"; break; 1049 case DW_OP_reg5: 1050 *s = "DW_OP_reg5"; break; 1051 case DW_OP_reg6: 1052 *s = "DW_OP_reg6"; break; 1053 case DW_OP_reg7: 1054 *s = "DW_OP_reg7"; break; 1055 case DW_OP_reg8: 1056 *s = "DW_OP_reg8"; break; 1057 case DW_OP_reg9: 1058 *s = "DW_OP_reg9"; break; 1059 case DW_OP_reg10: 1060 *s = "DW_OP_reg10"; break; 1061 case DW_OP_reg11: 1062 *s = "DW_OP_reg11"; break; 1063 case DW_OP_reg12: 1064 *s = "DW_OP_reg12"; break; 1065 case DW_OP_reg13: 1066 *s = "DW_OP_reg13"; break; 1067 case DW_OP_reg14: 1068 *s = "DW_OP_reg14"; break; 1069 case DW_OP_reg15: 1070 *s = "DW_OP_reg15"; break; 1071 case DW_OP_reg16: 1072 *s = "DW_OP_reg16"; break; 1073 case DW_OP_reg17: 1074 *s = "DW_OP_reg17"; break; 1075 case DW_OP_reg18: 1076 *s = "DW_OP_reg18"; break; 1077 case DW_OP_reg19: 1078 *s = "DW_OP_reg19"; break; 1079 case DW_OP_reg20: 1080 *s = "DW_OP_reg20"; break; 1081 case DW_OP_reg21: 1082 *s = "DW_OP_reg21"; break; 1083 case DW_OP_reg22: 1084 *s = "DW_OP_reg22"; break; 1085 case DW_OP_reg23: 1086 *s = "DW_OP_reg23"; break; 1087 case DW_OP_reg24: 1088 *s = "DW_OP_reg24"; break; 1089 case DW_OP_reg25: 1090 *s = "DW_OP_reg25"; break; 1091 case DW_OP_reg26: 1092 *s = "DW_OP_reg26"; break; 1093 case DW_OP_reg27: 1094 *s = "DW_OP_reg27"; break; 1095 case DW_OP_reg28: 1096 *s = "DW_OP_reg28"; break; 1097 case DW_OP_reg29: 1098 *s = "DW_OP_reg29"; break; 1099 case DW_OP_reg30: 1100 *s = "DW_OP_reg30"; break; 1101 case DW_OP_reg31: 1102 *s = "DW_OP_reg31"; break; 1103 case DW_OP_lit0: 1104 *s = "DW_OP_lit0"; break; 1105 case DW_OP_lit1: 1106 *s = "DW_OP_lit1"; break; 1107 case DW_OP_lit2: 1108 *s = "DW_OP_lit2"; break; 1109 case DW_OP_lit3: 1110 *s = "DW_OP_lit3"; break; 1111 case DW_OP_lit4: 1112 *s = "DW_OP_lit4"; break; 1113 case DW_OP_lit5: 1114 *s = "DW_OP_lit5"; break; 1115 case DW_OP_lit6: 1116 *s = "DW_OP_lit6"; break; 1117 case DW_OP_lit7: 1118 *s = "DW_OP_lit7"; break; 1119 case DW_OP_lit8: 1120 *s = "DW_OP_lit8"; break; 1121 case DW_OP_lit9: 1122 *s = "DW_OP_lit9"; break; 1123 case DW_OP_lit10: 1124 *s = "DW_OP_lit10"; break; 1125 case DW_OP_lit11: 1126 *s = "DW_OP_lit11"; break; 1127 case DW_OP_lit12: 1128 *s = "DW_OP_lit12"; break; 1129 case DW_OP_lit13: 1130 *s = "DW_OP_lit13"; break; 1131 case DW_OP_lit14: 1132 *s = "DW_OP_lit14"; break; 1133 case DW_OP_lit15: 1134 *s = "DW_OP_lit15"; break; 1135 case DW_OP_lit16: 1136 *s = "DW_OP_lit16"; break; 1137 case DW_OP_lit17: 1138 *s = "DW_OP_lit17"; break; 1139 case DW_OP_lit18: 1140 *s = "DW_OP_lit18"; break; 1141 case DW_OP_lit19: 1142 *s = "DW_OP_lit19"; break; 1143 case DW_OP_lit20: 1144 *s = "DW_OP_lit20"; break; 1145 case DW_OP_lit21: 1146 *s = "DW_OP_lit21"; break; 1147 case DW_OP_lit22: 1148 *s = "DW_OP_lit22"; break; 1149 case DW_OP_lit23: 1150 *s = "DW_OP_lit23"; break; 1151 case DW_OP_lit24: 1152 *s = "DW_OP_lit24"; break; 1153 case DW_OP_lit25: 1154 *s = "DW_OP_lit25"; break; 1155 case DW_OP_lit26: 1156 *s = "DW_OP_lit26"; break; 1157 case DW_OP_lit27: 1158 *s = "DW_OP_lit27"; break; 1159 case DW_OP_lit28: 1160 *s = "DW_OP_lit28"; break; 1161 case DW_OP_lit29: 1162 *s = "DW_OP_lit29"; break; 1163 case DW_OP_lit30: 1164 *s = "DW_OP_lit30"; break; 1165 case DW_OP_lit31: 1166 *s = "DW_OP_lit31"; break; 1167 case DW_OP_dup: 1168 *s = "DW_OP_dup"; break; 1169 case DW_OP_drop: 1170 *s = "DW_OP_drop"; break; 1171 case DW_OP_over: 1172 *s = "DW_OP_over"; break; 1173 case DW_OP_swap: 1174 *s = "DW_OP_swap"; break; 1175 case DW_OP_rot: 1176 *s = "DW_OP_rot"; break; 1177 case DW_OP_xderef: 1178 *s = "DW_OP_xderef"; break; 1179 case DW_OP_abs: 1180 *s = "DW_OP_abs"; break; 1181 case DW_OP_and: 1182 *s = "DW_OP_and"; break; 1183 case DW_OP_div: 1184 *s = "DW_OP_div"; break; 1185 case DW_OP_minus: 1186 *s = "DW_OP_minus"; break; 1187 case DW_OP_mod: 1188 *s = "DW_OP_mod"; break; 1189 case DW_OP_mul: 1190 *s = "DW_OP_mul"; break; 1191 case DW_OP_neg: 1192 *s = "DW_OP_neg"; break; 1193 case DW_OP_not: 1194 *s = "DW_OP_not"; break; 1195 case DW_OP_or: 1196 *s = "DW_OP_or"; break; 1197 case DW_OP_plus: 1198 *s = "DW_OP_plus"; break; 1199 case DW_OP_shl: 1200 *s = "DW_OP_shl"; break; 1201 case DW_OP_shr: 1202 *s = "DW_OP_shr"; break; 1203 case DW_OP_shra: 1204 *s = "DW_OP_shra"; break; 1205 case DW_OP_xor: 1206 *s = "DW_OP_xor"; break; 1207 case DW_OP_eq: 1208 *s = "DW_OP_eq"; break; 1209 case DW_OP_ge: 1210 *s = "DW_OP_ge"; break; 1211 case DW_OP_gt: 1212 *s = "DW_OP_gt"; break; 1213 case DW_OP_le: 1214 *s = "DW_OP_le"; break; 1215 case DW_OP_lt: 1216 *s = "DW_OP_lt"; break; 1217 case DW_OP_ne: 1218 *s = "DW_OP_ne"; break; 1219 case DW_OP_nop: 1220 *s = "DW_OP_nop"; break; 1221 case DW_OP_const1u: 1222 *s = "DW_OP_const1u"; break; 1223 case DW_OP_const1s: 1224 *s = "DW_OP_const1s"; break; 1225 case DW_OP_pick: 1226 *s = "DW_OP_pick"; break; 1227 case DW_OP_deref_size: 1228 *s = "DW_OP_deref_size"; break; 1229 case DW_OP_xderef_size: 1230 *s = "DW_OP_xderef_size"; break; 1231 case DW_OP_const2u: 1232 *s = "DW_OP_const2u"; break; 1233 case DW_OP_const2s: 1234 *s = "DW_OP_const2s"; break; 1235 case DW_OP_bra: 1236 *s = "DW_OP_bra"; break; 1237 case DW_OP_skip: 1238 *s = "DW_OP_skip"; break; 1239 case DW_OP_const4u: 1240 *s = "DW_OP_const4u"; break; 1241 case DW_OP_const4s: 1242 *s = "DW_OP_const4s"; break; 1243 case DW_OP_const8u: 1244 *s = "DW_OP_const8u"; break; 1245 case DW_OP_const8s: 1246 *s = "DW_OP_const8s"; break; 1247 case DW_OP_constu: 1248 *s = "DW_OP_constu"; break; 1249 case DW_OP_plus_uconst: 1250 *s = "DW_OP_plus_uconst"; break; 1251 case DW_OP_regx: 1252 *s = "DW_OP_regx"; break; 1253 case DW_OP_piece: 1254 *s = "DW_OP_piece"; break; 1255 case DW_OP_consts: 1256 *s = "DW_OP_consts"; break; 1257 case DW_OP_breg0: 1258 *s = "DW_OP_breg0"; break; 1259 case DW_OP_breg1: 1260 *s = "DW_OP_breg1"; break; 1261 case DW_OP_breg2: 1262 *s = "DW_OP_breg2"; break; 1263 case DW_OP_breg3: 1264 *s = "DW_OP_breg3"; break; 1265 case DW_OP_breg4: 1266 *s = "DW_OP_breg4"; break; 1267 case DW_OP_breg5: 1268 *s = "DW_OP_breg5"; break; 1269 case DW_OP_breg6: 1270 *s = "DW_OP_breg6"; break; 1271 case DW_OP_breg7: 1272 *s = "DW_OP_breg7"; break; 1273 case DW_OP_breg8: 1274 *s = "DW_OP_breg8"; break; 1275 case DW_OP_breg9: 1276 *s = "DW_OP_breg9"; break; 1277 case DW_OP_breg10: 1278 *s = "DW_OP_breg10"; break; 1279 case DW_OP_breg11: 1280 *s = "DW_OP_breg11"; break; 1281 case DW_OP_breg12: 1282 *s = "DW_OP_breg12"; break; 1283 case DW_OP_breg13: 1284 *s = "DW_OP_breg13"; break; 1285 case DW_OP_breg14: 1286 *s = "DW_OP_breg14"; break; 1287 case DW_OP_breg15: 1288 *s = "DW_OP_breg15"; break; 1289 case DW_OP_breg16: 1290 *s = "DW_OP_breg16"; break; 1291 case DW_OP_breg17: 1292 *s = "DW_OP_breg17"; break; 1293 case DW_OP_breg18: 1294 *s = "DW_OP_breg18"; break; 1295 case DW_OP_breg19: 1296 *s = "DW_OP_breg19"; break; 1297 case DW_OP_breg20: 1298 *s = "DW_OP_breg20"; break; 1299 case DW_OP_breg21: 1300 *s = "DW_OP_breg21"; break; 1301 case DW_OP_breg22: 1302 *s = "DW_OP_breg22"; break; 1303 case DW_OP_breg23: 1304 *s = "DW_OP_breg23"; break; 1305 case DW_OP_breg24: 1306 *s = "DW_OP_breg24"; break; 1307 case DW_OP_breg25: 1308 *s = "DW_OP_breg25"; break; 1309 case DW_OP_breg26: 1310 *s = "DW_OP_breg26"; break; 1311 case DW_OP_breg27: 1312 *s = "DW_OP_breg27"; break; 1313 case DW_OP_breg28: 1314 *s = "DW_OP_breg28"; break; 1315 case DW_OP_breg29: 1316 *s = "DW_OP_breg29"; break; 1317 case DW_OP_breg30: 1318 *s = "DW_OP_breg30"; break; 1319 case DW_OP_breg31: 1320 *s = "DW_OP_breg31"; break; 1321 case DW_OP_fbreg: 1322 *s = "DW_OP_fbreg"; break; 1323 case DW_OP_bregx: 1324 *s = "DW_OP_bregx"; break; 1325 case DW_OP_addr: 1326 *s = "DW_OP_addr"; break; 1327 case DW_OP_push_object_address: 1328 *s = "DW_OP_push_object_address"; break; 1329 case DW_OP_call2: 1330 *s = "DW_OP_call2"; break; 1331 case DW_OP_call4: 1332 *s = "DW_OP_call4"; break; 1333 case DW_OP_call_ref: 1334 *s = "DW_OP_call_ref"; break; 1335 case DW_OP_form_tls_address: 1336 *s = "DW_OP_form_tls_address"; break; 1337 case DW_OP_call_frame_cfa: 1338 *s = "DW_OP_call_frame_cfa"; break; 1339 case DW_OP_bit_piece: 1340 *s = "DW_OP_bit_piece"; break; 1341 case DW_OP_implicit_value: 1342 *s = "DW_OP_implicit_value"; break; 1343 case DW_OP_stack_value: 1344 *s = "DW_OP_stack_value"; break; 1345 case DW_OP_implicit_pointer: 1346 *s = "DW_OP_implicit_pointer"; break; 1347 case DW_OP_addrx: 1348 *s = "DW_OP_addrx"; break; 1349 case DW_OP_constx: 1350 *s = "DW_OP_constx"; break; 1351 case DW_OP_entry_value: 1352 *s = "DW_OP_entry_value"; break; 1353 case DW_OP_const_type: 1354 *s = "DW_OP_const_type"; break; 1355 case DW_OP_regval_type: 1356 *s = "DW_OP_regval_type"; break; 1357 case DW_OP_deref_type: 1358 *s = "DW_OP_deref_type"; break; 1359 case DW_OP_xderef_type: 1360 *s = "DW_OP_xderef_type"; break; 1361 case DW_OP_convert: 1362 *s = "DW_OP_convert"; break; 1363 case DW_OP_reinterpret: 1364 *s = "DW_OP_reinterpret"; break; 1365 case DW_OP_GNU_push_tls_address: 1366 *s = "DW_OP_GNU_push_tls_address"; break; 1367 case DW_OP_GNU_uninit: 1368 *s = "DW_OP_GNU_uninit"; break; 1369 case DW_OP_GNU_encoded_addr: 1370 *s = "DW_OP_GNU_encoded_addr"; break; 1371 case DW_OP_GNU_implicit_pointer: 1372 *s = "DW_OP_GNU_implicit_pointer"; break; 1373 case DW_OP_GNU_entry_value: 1374 *s = "DW_OP_GNU_entry_value"; break; 1375 case DW_OP_GNU_const_type: 1376 *s = "DW_OP_GNU_const_type"; break; 1377 case DW_OP_GNU_regval_type: 1378 *s = "DW_OP_GNU_regval_type"; break; 1379 case DW_OP_GNU_deref_type: 1380 *s = "DW_OP_GNU_deref_type"; break; 1381 case DW_OP_GNU_convert: 1382 *s = "DW_OP_GNU_convert"; break; 1383 case DW_OP_GNU_reinterpret: 1384 *s = "DW_OP_GNU_reinterpret"; break; 1385 case DW_OP_GNU_parameter_ref: 1386 *s = "DW_OP_GNU_parameter_ref"; break; 1387 case DW_OP_GNU_addr_index: 1388 *s = "DW_OP_GNU_addr_index"; break; 1389 case DW_OP_GNU_const_index: 1390 *s = "DW_OP_GNU_const_index"; break; 1391 default: 1392 return (DW_DLV_NO_ENTRY); 1393 } 1394 1395 return (DW_DLV_OK); 1396 } 1397 1398 int 1399 dwarf_get_ORD_name(unsigned ord, const char **s) 1400 { 1401 1402 assert(s != NULL); 1403 1404 switch (ord) { 1405 case DW_ORD_row_major: 1406 *s = "DW_ORD_row_major"; break; 1407 case DW_ORD_col_major: 1408 *s = "DW_ORD_col_major"; break; 1409 default: 1410 return (DW_DLV_NO_ENTRY); 1411 } 1412 1413 return (DW_DLV_OK); 1414 } 1415 1416 int 1417 dwarf_get_TAG_name(unsigned tag, const char **s) 1418 { 1419 1420 assert(s != NULL); 1421 1422 switch (tag) { 1423 case DW_TAG_access_declaration: 1424 *s = "DW_TAG_access_declaration"; break; 1425 case DW_TAG_array_type: 1426 *s = "DW_TAG_array_type"; break; 1427 case DW_TAG_base_type: 1428 *s = "DW_TAG_base_type"; break; 1429 case DW_TAG_catch_block: 1430 *s = "DW_TAG_catch_block"; break; 1431 case DW_TAG_class_type: 1432 *s = "DW_TAG_class_type"; break; 1433 case DW_TAG_common_block: 1434 *s = "DW_TAG_common_block"; break; 1435 case DW_TAG_common_inclusion: 1436 *s = "DW_TAG_common_inclusion"; break; 1437 case DW_TAG_compile_unit: 1438 *s = "DW_TAG_compile_unit"; break; 1439 case DW_TAG_condition: 1440 *s = "DW_TAG_condition"; break; 1441 case DW_TAG_const_type: 1442 *s = "DW_TAG_const_type"; break; 1443 case DW_TAG_constant: 1444 *s = "DW_TAG_constant"; break; 1445 case DW_TAG_dwarf_procedure: 1446 *s = "DW_TAG_dwarf_procedure"; break; 1447 case DW_TAG_entry_point: 1448 *s = "DW_TAG_entry_point"; break; 1449 case DW_TAG_enumeration_type: 1450 *s = "DW_TAG_enumeration_type"; break; 1451 case DW_TAG_enumerator: 1452 *s = "DW_TAG_enumerator"; break; 1453 case DW_TAG_formal_parameter: 1454 *s = "DW_TAG_formal_parameter"; break; 1455 case DW_TAG_friend: 1456 *s = "DW_TAG_friend"; break; 1457 case DW_TAG_imported_declaration: 1458 *s = "DW_TAG_imported_declaration"; break; 1459 case DW_TAG_imported_module: 1460 *s = "DW_TAG_imported_module"; break; 1461 case DW_TAG_imported_unit: 1462 *s = "DW_TAG_imported_unit"; break; 1463 case DW_TAG_inheritance: 1464 *s = "DW_TAG_inheritance"; break; 1465 case DW_TAG_inlined_subroutine: 1466 *s = "DW_TAG_inlined_subroutine"; break; 1467 case DW_TAG_interface_type: 1468 *s = "DW_TAG_interface_type"; break; 1469 case DW_TAG_label: 1470 *s = "DW_TAG_label"; break; 1471 case DW_TAG_lexical_block: 1472 *s = "DW_TAG_lexical_block"; break; 1473 case DW_TAG_member: 1474 *s = "DW_TAG_member"; break; 1475 case DW_TAG_module: 1476 *s = "DW_TAG_module"; break; 1477 case DW_TAG_namelist: 1478 *s = "DW_TAG_namelist"; break; 1479 case DW_TAG_namelist_item: 1480 *s = "DW_TAG_namelist_item"; break; 1481 case DW_TAG_namespace: 1482 *s = "DW_TAG_namespace"; break; 1483 case DW_TAG_packed_type: 1484 *s = "DW_TAG_packed_type"; break; 1485 case DW_TAG_partial_unit: 1486 *s = "DW_TAG_partial_unit"; break; 1487 case DW_TAG_pointer_type: 1488 *s = "DW_TAG_pointer_type"; break; 1489 case DW_TAG_ptr_to_member_type: 1490 *s = "DW_TAG_ptr_to_member_type"; break; 1491 case DW_TAG_reference_type: 1492 *s = "DW_TAG_reference_type"; break; 1493 case DW_TAG_restrict_type: 1494 *s = "DW_TAG_restrict_type"; break; 1495 case DW_TAG_rvalue_reference_type: 1496 *s = "DW_TAG_rvalue_reference_type"; break; 1497 case DW_TAG_set_type: 1498 *s = "DW_TAG_set_type"; break; 1499 case DW_TAG_shared_type: 1500 *s = "DW_TAG_shared_type"; break; 1501 case DW_TAG_string_type: 1502 *s = "DW_TAG_string_type"; break; 1503 case DW_TAG_structure_type: 1504 *s = "DW_TAG_structure_type"; break; 1505 case DW_TAG_subprogram: 1506 *s = "DW_TAG_subprogram"; break; 1507 case DW_TAG_subrange_type: 1508 *s = "DW_TAG_subrange_type"; break; 1509 case DW_TAG_subroutine_type: 1510 *s = "DW_TAG_subroutine_type"; break; 1511 case DW_TAG_template_alias: 1512 *s = "DW_TAG_template_alias"; break; 1513 case DW_TAG_template_type_parameter: 1514 *s = "DW_TAG_template_type_parameter"; break; 1515 case DW_TAG_template_value_parameter: 1516 *s = "DW_TAG_template_value_parameter"; break; 1517 case DW_TAG_thrown_type: 1518 *s = "DW_TAG_thrown_type"; break; 1519 case DW_TAG_try_block: 1520 *s = "DW_TAG_try_block"; break; 1521 case DW_TAG_type_unit: 1522 *s = "DW_TAG_type_unit"; break; 1523 case DW_TAG_typedef: 1524 *s = "DW_TAG_typedef"; break; 1525 case DW_TAG_union_type: 1526 *s = "DW_TAG_union_type"; break; 1527 case DW_TAG_unspecified_parameters: 1528 *s = "DW_TAG_unspecified_parameters"; break; 1529 case DW_TAG_unspecified_type: 1530 *s = "DW_TAG_unspecified_type"; break; 1531 case DW_TAG_variable: 1532 *s = "DW_TAG_variable"; break; 1533 case DW_TAG_variant: 1534 *s = "DW_TAG_variant"; break; 1535 case DW_TAG_variant_part: 1536 *s = "DW_TAG_variant_part"; break; 1537 case DW_TAG_volatile_type: 1538 *s = "DW_TAG_volatile_type"; break; 1539 case DW_TAG_with_stmt: 1540 *s = "DW_TAG_with_stmt"; break; 1541 case DW_TAG_coarray_type: 1542 *s = "DW_TAG_coarray_type"; break; 1543 case DW_TAG_generic_subrange: 1544 *s = "DW_TAG_generic_subrange"; break; 1545 case DW_TAG_dynamic_type: 1546 *s = "DW_TAG_dynamic_type"; break; 1547 case DW_TAG_atomic_type: 1548 *s = "DW_TAG_atomic_type"; break; 1549 case DW_TAG_call_site: 1550 *s = "DW_TAG_call_site"; break; 1551 case DW_TAG_call_site_parameter: 1552 *s = "DW_TAG_call_site_parameter"; break; 1553 case DW_TAG_skeleton_unit: 1554 *s = "DW_TAG_skeleton_unit"; break; 1555 case DW_TAG_immutable_type: 1556 *s = "DW_TAG_immutable_type"; break; 1557 case DW_TAG_format_label: 1558 *s = "DW_TAG_format_label"; break; 1559 case DW_TAG_function_template: 1560 *s = "DW_TAG_function_template"; break; 1561 case DW_TAG_class_template: 1562 *s = "DW_TAG_class_template"; break; 1563 case DW_TAG_GNU_BINCL: 1564 *s = "DW_TAG_GNU_BINCL"; break; 1565 case DW_TAG_GNU_EINCL: 1566 *s = "DW_TAG_GNU_EINCL"; break; 1567 case DW_TAG_GNU_template_template_param: 1568 *s = "DW_TAG_GNU_template_template_param"; break; 1569 case DW_TAG_GNU_template_parameter_pack: 1570 *s = "DW_TAG_GNU_template_parameter_pack"; break; 1571 case DW_TAG_GNU_formal_parameter_pack: 1572 *s = "DW_TAG_GNU_formal_parameter_pack"; break; 1573 case DW_TAG_GNU_call_site: 1574 *s = "DW_TAG_GNU_call_site"; break; 1575 case DW_TAG_GNU_call_site_parameter: 1576 *s = "DW_TAG_GNU_call_site_parameter"; break; 1577 default: 1578 return (DW_DLV_NO_ENTRY); 1579 } 1580 1581 return (DW_DLV_OK); 1582 } 1583 1584 int 1585 dwarf_get_UT_name(unsigned unit_type, const char **s) 1586 { 1587 1588 assert(s != NULL); 1589 1590 switch (unit_type) { 1591 case DW_UT_compile: 1592 *s = "DW_UT_compile"; break; 1593 case DW_UT_type: 1594 *s = "DW_UT_type"; break; 1595 case DW_UT_partial: 1596 *s = "DW_UT_partial"; break; 1597 case DW_UT_skeleton: 1598 *s = "DW_UT_skeleton"; break; 1599 case DW_UT_split_compile: 1600 *s = "DW_UT_split_compile"; break; 1601 case DW_UT_split_type: 1602 *s = "DW_UT_split_type"; break; 1603 default: 1604 return (DW_DLV_NO_ENTRY); 1605 } 1606 1607 return (DW_DLV_OK); 1608 } 1609 1610 int 1611 dwarf_get_VIRTUALITY_name(unsigned vir, const char **s) 1612 { 1613 1614 assert(s != NULL); 1615 1616 switch (vir) { 1617 case DW_VIRTUALITY_none: 1618 *s = "DW_VIRTUALITY_none"; break; 1619 case DW_VIRTUALITY_virtual: 1620 *s = "DW_VIRTUALITY_virtual"; break; 1621 case DW_VIRTUALITY_pure_virtual: 1622 *s = "DW_VIRTUALITY_pure_virtual"; break; 1623 default: 1624 return (DW_DLV_NO_ENTRY); 1625 } 1626 1627 return (DW_DLV_OK); 1628 } 1629 1630 int 1631 dwarf_get_VIS_name(unsigned vis, const char **s) 1632 { 1633 1634 assert(s != NULL); 1635 1636 switch (vis) { 1637 case DW_VIS_local: 1638 *s = "DW_VIS_local"; break; 1639 case DW_VIS_exported: 1640 *s = "DW_VIS_exported"; break; 1641 case DW_VIS_qualified: 1642 *s = "DW_VIS_qualified"; break; 1643 default: 1644 return (DW_DLV_NO_ENTRY); 1645 } 1646 1647 return (DW_DLV_OK); 1648 } 1649