Annotation of src/usr.bin/ctfconv/dwarf.h, Revision 1.1
1.1 ! mpi 1: /*
! 2: * Copyright (c) 2016 Martin Pieuchot <mpi@openbsd.org>
! 3: * Copyright (c) 2007 John Birrell (jb@freebsd.org).
! 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: #ifndef _DWARF_H_
! 29: #define _DWARF_H_
! 30:
! 31: #define DW_TAG_array_type 0x01
! 32: #define DW_TAG_class_type 0x02
! 33: #define DW_TAG_entry_point 0x03
! 34: #define DW_TAG_enumeration_type 0x04
! 35: #define DW_TAG_formal_parameter 0x05
! 36: #define DW_TAG_imported_declaration 0x08
! 37: #define DW_TAG_label 0x0a
! 38: #define DW_TAG_lexical_block 0x0b
! 39: #define DW_TAG_member 0x0d
! 40: #define DW_TAG_pointer_type 0x0f
! 41: #define DW_TAG_reference_type 0x10
! 42: #define DW_TAG_compile_unit 0x11
! 43: #define DW_TAG_string_type 0x12
! 44: #define DW_TAG_structure_type 0x13
! 45: #define DW_TAG_subroutine_type 0x15
! 46: #define DW_TAG_typedef 0x16
! 47: #define DW_TAG_union_type 0x17
! 48: #define DW_TAG_unspecified_parameters 0x18
! 49: #define DW_TAG_variant 0x19
! 50: #define DW_TAG_common_block 0x1a
! 51: #define DW_TAG_common_inclusion 0x1b
! 52: #define DW_TAG_inheritance 0x1c
! 53: #define DW_TAG_inlined_subroutine 0x1d
! 54: #define DW_TAG_module 0x1e
! 55: #define DW_TAG_ptr_to_member_type 0x1f
! 56: #define DW_TAG_set_type 0x20
! 57: #define DW_TAG_subrange_type 0x21
! 58: #define DW_TAG_with_stmt 0x22
! 59: #define DW_TAG_access_declaration 0x23
! 60: #define DW_TAG_base_type 0x24
! 61: #define DW_TAG_catch_block 0x25
! 62: #define DW_TAG_const_type 0x26
! 63: #define DW_TAG_constant 0x27
! 64: #define DW_TAG_enumerator 0x28
! 65: #define DW_TAG_friend 0x2a
! 66: #define DW_TAG_namelist 0x2b
! 67: #define DW_TAG_namelist_item 0x2c
! 68: #define DW_TAG_packed_type 0x2d
! 69: #define DW_TAG_subprogram 0x2e
! 70: #define DW_TAG_template_type_parameter 0x2f
! 71: #define DW_TAG_template_value_parameter 0x30
! 72: #define DW_TAG_thrown_type 0x31
! 73: #define DW_TAG_try_block 0x32
! 74: #define DW_TAG_variant_part 0x33
! 75: #define DW_TAG_variable 0x34
! 76: #define DW_TAG_volatile_type 0x35
! 77: #define DW_TAG_dwarf_procedure 0x36
! 78: #define DW_TAG_restrict_type 0x37
! 79: #define DW_TAG_interface_type 0x38
! 80: #define DW_TAG_namespace 0x39
! 81: #define DW_TAG_imported_module 0x3a
! 82: #define DW_TAG_unspecified_type 0x3b
! 83: #define DW_TAG_partial_unit 0x3c
! 84: #define DW_TAG_imported_unit 0x3d
! 85: #define DW_TAG_condition 0x3f
! 86: #define DW_TAG_shared_type 0x40
! 87: #define DW_TAG_type_unit 0x41
! 88: #define DW_TAG_rvalue_reference_type 0x42
! 89: #define DW_TAG_template_alias 0x43
! 90: #define DW_TAG_lo_user 0x4080
! 91: #define DW_TAG_hi_user 0xffff
! 92:
! 93: /* GNU extensions. */
! 94: #define DW_TAG_format_label 0x4101
! 95: #define DW_TAG_function_template 0x4102
! 96: #define DW_TAG_class_template 0x4103
! 97: #define DW_TAG_GNU_BINCL 0x4104
! 98: #define DW_TAG_GNU_EINCL 0x4105
! 99: #define DW_TAG_GNU_template_template_parameter 0x4106
! 100: #define DW_TAG_GNU_template_template_param 0x4106
! 101: #define DW_TAG_GNU_template_parameter_pack 0x4107
! 102: #define DW_TAG_GNU_formal_parameter_pack 0x4108
! 103: #define DW_TAG_GNU_call_site 0x4109
! 104: #define DW_TAG_GNU_call_site_parameter 0x410a
! 105:
! 106: #define DW_TAG_NAMES \
! 107: "DW_TAG_array_type", \
! 108: "DW_TAG_class_type", \
! 109: "DW_TAG_entry_point", \
! 110: "DW_TAG_enumeration_type", \
! 111: "DW_TAG_formal_parameter", \
! 112: NULL, \
! 113: NULL, \
! 114: "DW_TAG_imported_declaration", \
! 115: NULL, \
! 116: "DW_TAG_label", \
! 117: "DW_TAG_lexical_block", \
! 118: NULL, \
! 119: "DW_TAG_member", \
! 120: NULL, \
! 121: "DW_TAG_pointer_type", \
! 122: "DW_TAG_reference_type", \
! 123: "DW_TAG_compile_unit", \
! 124: "DW_TAG_string_type", \
! 125: "DW_TAG_structure_type", \
! 126: NULL, \
! 127: "DW_TAG_subroutine_type", \
! 128: "DW_TAG_typedef", \
! 129: "DW_TAG_union_type", \
! 130: "DW_TAG_unspecified_parameters", \
! 131: "DW_TAG_variant", \
! 132: "DW_TAG_common_block", \
! 133: "DW_TAG_common_inclusion", \
! 134: "DW_TAG_inheritance", \
! 135: "DW_TAG_inlined_subroutine", \
! 136: "DW_TAG_module", \
! 137: "DW_TAG_ptr_to_member_type", \
! 138: "DW_TAG_set_type", \
! 139: "DW_TAG_subrange_type", \
! 140: "DW_TAG_with_stmt", \
! 141: "DW_TAG_access_declaration", \
! 142: "DW_TAG_base_type", \
! 143: "DW_TAG_catch_block", \
! 144: "DW_TAG_const_type", \
! 145: "DW_TAG_constant", \
! 146: "DW_TAG_enumerator", \
! 147: NULL, \
! 148: "DW_TAG_friend", \
! 149: "DW_TAG_namelist", \
! 150: "DW_TAG_namelist_item", \
! 151: "DW_TAG_packed_type", \
! 152: "DW_TAG_subprogram", \
! 153: "DW_TAG_template_type_parameter", \
! 154: "DW_TAG_template_value_parameter", \
! 155: "DW_TAG_thrown_type", \
! 156: "DW_TAG_try_block", \
! 157: "DW_TAG_variant_part", \
! 158: "DW_TAG_variable", \
! 159: "DW_TAG_volatile_type", \
! 160: "DW_TAG_dwarf_procedure", \
! 161: "DW_TAG_restrict_type", \
! 162: "DW_TAG_interface_type", \
! 163: "DW_TAG_namespace", \
! 164: "DW_TAG_imported_module", \
! 165: "DW_TAG_unspecified_type", \
! 166: "DW_TAG_partial_unit", \
! 167: "DW_TAG_imported_unit", \
! 168: NULL, \
! 169: "DW_TAG_condition", \
! 170: "DW_TAG_shared_type", \
! 171: "DW_TAG_type_unit", \
! 172: "DW_TAG_rvalue_reference_type", \
! 173: "DW_TAG_template_alias",
! 174:
! 175: #define DW_CHILDREN_no 0x00
! 176: #define DW_CHILDREN_yes 0x01
! 177:
! 178: #define DW_AT_sibling 0x01
! 179: #define DW_AT_location 0x02
! 180: #define DW_AT_name 0x03
! 181: #define DW_AT_ordering 0x09
! 182: #define DW_AT_subscr_data 0x0a
! 183: #define DW_AT_byte_size 0x0b
! 184: #define DW_AT_bit_offset 0x0c
! 185: #define DW_AT_bit_size 0x0d
! 186: #define DW_AT_element_list 0x0f
! 187: #define DW_AT_stmt_list 0x10
! 188: #define DW_AT_low_pc 0x11
! 189: #define DW_AT_high_pc 0x12
! 190: #define DW_AT_language 0x13
! 191: #define DW_AT_member 0x14
! 192: #define DW_AT_discr 0x15
! 193: #define DW_AT_discr_value 0x16
! 194: #define DW_AT_visibility 0x17
! 195: #define DW_AT_import 0x18
! 196: #define DW_AT_string_length 0x19
! 197: #define DW_AT_common_reference 0x1a
! 198: #define DW_AT_comp_dir 0x1b
! 199: #define DW_AT_const_value 0x1c
! 200: #define DW_AT_containing_type 0x1d
! 201: #define DW_AT_default_value 0x1e
! 202: #define DW_AT_inline 0x20
! 203: #define DW_AT_is_optional 0x21
! 204: #define DW_AT_lower_bound 0x22
! 205: #define DW_AT_producer 0x25
! 206: #define DW_AT_prototyped 0x27
! 207: #define DW_AT_return_addr 0x2a
! 208: #define DW_AT_start_scope 0x2c
! 209: #define DW_AT_bit_stride 0x2e
! 210: #define DW_AT_stride_size 0x2e
! 211: #define DW_AT_upper_bound 0x2f
! 212: #define DW_AT_abstract_origin 0x31
! 213: #define DW_AT_accessibility 0x32
! 214: #define DW_AT_address_class 0x33
! 215: #define DW_AT_artificial 0x34
! 216: #define DW_AT_base_types 0x35
! 217: #define DW_AT_calling_convention 0x36
! 218: #define DW_AT_count 0x37
! 219: #define DW_AT_data_member_location 0x38
! 220: #define DW_AT_decl_column 0x39
! 221: #define DW_AT_decl_file 0x3a
! 222: #define DW_AT_decl_line 0x3b
! 223: #define DW_AT_declaration 0x3c
! 224: #define DW_AT_discr_list 0x3d
! 225: #define DW_AT_encoding 0x3e
! 226: #define DW_AT_external 0x3f
! 227: #define DW_AT_frame_base 0x40
! 228: #define DW_AT_friend 0x41
! 229: #define DW_AT_identifier_case 0x42
! 230: #define DW_AT_macro_info 0x43
! 231: #define DW_AT_namelist_item 0x44
! 232: #define DW_AT_priority 0x45
! 233: #define DW_AT_segment 0x46
! 234: #define DW_AT_specification 0x47
! 235: #define DW_AT_static_link 0x48
! 236: #define DW_AT_type 0x49
! 237: #define DW_AT_use_location 0x4a
! 238: #define DW_AT_variable_parameter 0x4b
! 239: #define DW_AT_virtuality 0x4c
! 240: #define DW_AT_vtable_elem_location 0x4d
! 241: #define DW_AT_allocated 0x4e
! 242: #define DW_AT_associated 0x4f
! 243: #define DW_AT_data_location 0x50
! 244: #define DW_AT_byte_stride 0x51
! 245: #define DW_AT_entry_pc 0x52
! 246: #define DW_AT_use_UTF8 0x53
! 247: #define DW_AT_extension 0x54
! 248: #define DW_AT_ranges 0x55
! 249: #define DW_AT_trampoline 0x56
! 250: #define DW_AT_call_column 0x57
! 251: #define DW_AT_call_file 0x58
! 252: #define DW_AT_call_line 0x59
! 253: #define DW_AT_description 0x5a
! 254: #define DW_AT_binary_scale 0x5b
! 255: #define DW_AT_decimal_scale 0x5c
! 256: #define DW_AT_small 0x5d
! 257: #define DW_AT_decimal_sign 0x5e
! 258: #define DW_AT_digit_count 0x5f
! 259: #define DW_AT_picture_string 0x60
! 260: #define DW_AT_mutable 0x61
! 261: #define DW_AT_threads_scaled 0x62
! 262: #define DW_AT_explicit 0x63
! 263: #define DW_AT_object_pointer 0x64
! 264: #define DW_AT_endianity 0x65
! 265: #define DW_AT_elemental 0x66
! 266: #define DW_AT_pure 0x67
! 267: #define DW_AT_recursive 0x68
! 268: #define DW_AT_signature 0x69
! 269: #define DW_AT_main_subprogram 0x6a
! 270: #define DW_AT_data_bit_offset 0x6b
! 271: #define DW_AT_const_expr 0x6c
! 272: #define DW_AT_enum_class 0x6d
! 273: #define DW_AT_linkage_name 0x6e
! 274: #define DW_AT_lo_user 0x2000
! 275: #define DW_AT_hi_user 0x3fff
! 276:
! 277: /* GNU extensions. */
! 278: #define DW_AT_sf_names 0x2101
! 279: #define DW_AT_src_info 0x2102
! 280: #define DW_AT_mac_info 0x2103
! 281: #define DW_AT_src_coords 0x2104
! 282: #define DW_AT_body_begin 0x2105
! 283: #define DW_AT_body_end 0x2106
! 284: #define DW_AT_GNU_vector 0x2107
! 285: #define DW_AT_GNU_guarded_by 0x2108
! 286: #define DW_AT_GNU_pt_guarded_by 0x2109
! 287: #define DW_AT_GNU_guarded 0x210a
! 288: #define DW_AT_GNU_pt_guarded 0x210b
! 289: #define DW_AT_GNU_locks_excluded 0x210c
! 290: #define DW_AT_GNU_exclusive_locks_required 0x210d
! 291: #define DW_AT_GNU_shared_locks_required 0x210e
! 292: #define DW_AT_GNU_odr_signature 0x210f
! 293: #define DW_AT_GNU_template_name 0x2110
! 294: #define DW_AT_GNU_call_site_value 0x2111
! 295: #define DW_AT_GNU_call_site_data_value 0x2112
! 296: #define DW_AT_GNU_call_site_target 0x2113
! 297: #define DW_AT_GNU_call_site_target_clobbered 0x2114
! 298: #define DW_AT_GNU_tail_call 0x2115
! 299: #define DW_AT_GNU_all_tail_call_sites 0x2116
! 300: #define DW_AT_GNU_all_call_sites 0x2117
! 301: #define DW_AT_GNU_all_source_call_sites 0x2118
! 302:
! 303: #define DW_AT_NAMES \
! 304: "DW_AT_sibling", \
! 305: "DW_AT_location", \
! 306: "DW_AT_name", \
! 307: NULL, \
! 308: NULL, \
! 309: NULL, \
! 310: NULL, \
! 311: NULL, \
! 312: "DW_AT_ordering", \
! 313: "DW_AT_subscr_data", \
! 314: "DW_AT_byte_size", \
! 315: "DW_AT_bit_offset", \
! 316: "DW_AT_bit_size", \
! 317: NULL, \
! 318: "DW_AT_element_list", \
! 319: "DW_AT_stmt_list", \
! 320: "DW_AT_low_pc", \
! 321: "DW_AT_high_pc", \
! 322: "DW_AT_language", \
! 323: "DW_AT_member", \
! 324: "DW_AT_discr", \
! 325: "DW_AT_discr_value", \
! 326: "DW_AT_visibility", \
! 327: "DW_AT_import", \
! 328: "DW_AT_string_length", \
! 329: "DW_AT_common_reference", \
! 330: "DW_AT_comp_dir", \
! 331: "DW_AT_const_value", \
! 332: "DW_AT_containing_type", \
! 333: "DW_AT_default_value", \
! 334: NULL, \
! 335: "DW_AT_inline", \
! 336: "DW_AT_is_optional", \
! 337: "DW_AT_lower_bound", \
! 338: NULL, \
! 339: NULL, \
! 340: "DW_AT_producer", \
! 341: NULL, \
! 342: "DW_AT_prototyped", \
! 343: NULL, \
! 344: NULL, \
! 345: "DW_AT_return_addr", \
! 346: NULL, \
! 347: "DW_AT_start_scope", \
! 348: NULL, \
! 349: "DW_AT_bit_stride", \
! 350: "DW_AT_upper_bound", \
! 351: NULL, \
! 352: "DW_AT_abstract_origin", \
! 353: "DW_AT_accessibility", \
! 354: "DW_AT_address_class", \
! 355: "DW_AT_artificial", \
! 356: "DW_AT_base_types", \
! 357: "DW_AT_calling_convention", \
! 358: "DW_AT_count", \
! 359: "DW_AT_data_member_location", \
! 360: "DW_AT_decl_column", \
! 361: "DW_AT_decl_file", \
! 362: "DW_AT_decl_line", \
! 363: "DW_AT_declaration", \
! 364: "DW_AT_discr_list", \
! 365: "DW_AT_encoding", \
! 366: "DW_AT_external", \
! 367: "DW_AT_frame_base", \
! 368: "DW_AT_friend", \
! 369: "DW_AT_identifier_case", \
! 370: "DW_AT_macro_info", \
! 371: "DW_AT_namelist_item", \
! 372: "DW_AT_priority", \
! 373: "DW_AT_segment", \
! 374: "DW_AT_specification", \
! 375: "DW_AT_static_link", \
! 376: "DW_AT_type", \
! 377: "DW_AT_use_location", \
! 378: "DW_AT_variable_parameter", \
! 379: "DW_AT_virtuality", \
! 380: "DW_AT_vtable_elem_location", \
! 381: "DW_AT_allocated", \
! 382: "DW_AT_associated", \
! 383: "DW_AT_data_location", \
! 384: "DW_AT_byte_stride", \
! 385: "DW_AT_entry_pc", \
! 386: "DW_AT_use_UTF8", \
! 387: "DW_AT_extension", \
! 388: "DW_AT_ranges", \
! 389: "DW_AT_trampoline", \
! 390: "DW_AT_call_column", \
! 391: "DW_AT_call_file", \
! 392: "DW_AT_call_line", \
! 393: "DW_AT_description", \
! 394: "DW_AT_binary_scale", \
! 395: "DW_AT_decimal_scale", \
! 396: "DW_AT_small", \
! 397: "DW_AT_decimal_sign", \
! 398: "DW_AT_digit_count", \
! 399: "DW_AT_picture_string", \
! 400: "DW_AT_mutable", \
! 401: "DW_AT_threads_scaled", \
! 402: "DW_AT_explicit", \
! 403: "DW_AT_object_pointer", \
! 404: "DW_AT_endianity", \
! 405: "DW_AT_elemental", \
! 406: "DW_AT_pure", \
! 407: "DW_AT_recursive", \
! 408: "DW_AT_signature", \
! 409: "DW_AT_main_subprogram", \
! 410: "DW_AT_data_bit_offset", \
! 411: "DW_AT_const_expr", \
! 412: "DW_AT_enum_class", \
! 413: "DW_AT_linkage_name", \
! 414:
! 415: #define DW_FORM_addr 0x01
! 416: #define DW_FORM_block2 0x03
! 417: #define DW_FORM_block4 0x04
! 418: #define DW_FORM_data2 0x05
! 419: #define DW_FORM_data4 0x06
! 420: #define DW_FORM_data8 0x07
! 421: #define DW_FORM_string 0x08
! 422: #define DW_FORM_block 0x09
! 423: #define DW_FORM_block1 0x0a
! 424: #define DW_FORM_data1 0x0b
! 425: #define DW_FORM_flag 0x0c
! 426: #define DW_FORM_sdata 0x0d
! 427: #define DW_FORM_strp 0x0e
! 428: #define DW_FORM_udata 0x0f
! 429: #define DW_FORM_ref_addr 0x10
! 430: #define DW_FORM_ref1 0x11
! 431: #define DW_FORM_ref2 0x12
! 432: #define DW_FORM_ref4 0x13
! 433: #define DW_FORM_ref8 0x14
! 434: #define DW_FORM_ref_udata 0x15
! 435: #define DW_FORM_indirect 0x16
! 436: #define DW_FORM_sec_offset 0x17
! 437: #define DW_FORM_exprloc 0x18
! 438: #define DW_FORM_flag_present 0x19
! 439: #define DW_FORM_ref_sig8 0x20
! 440: #define DW_FORM_GNU_ref_alt 0x1f20
! 441: #define DW_FORM_GNU_strp_alt 0x1f21
! 442:
! 443: #define DW_FORM_NAMES \
! 444: "DW_FORM_addr", \
! 445: NULL, \
! 446: "DW_FORM_block2", \
! 447: "DW_FORM_block4", \
! 448: "DW_FORM_data2", \
! 449: "DW_FORM_data4", \
! 450: "DW_FORM_data8", \
! 451: "DW_FORM_string", \
! 452: "DW_FORM_block", \
! 453: "DW_FORM_block1", \
! 454: "DW_FORM_data1", \
! 455: "DW_FORM_flag", \
! 456: "DW_FORM_sdata", \
! 457: "DW_FORM_strp", \
! 458: "DW_FORM_udata", \
! 459: "DW_FORM_ref_addr", \
! 460: "DW_FORM_ref1", \
! 461: "DW_FORM_ref2", \
! 462: "DW_FORM_ref4", \
! 463: "DW_FORM_ref8", \
! 464: "DW_FORM_ref_udata", \
! 465: "DW_FORM_indirect", \
! 466: "DW_FORM_sec_offset", \
! 467: "DW_FORM_exprloc", \
! 468: "DW_FORM_flag_present", \
! 469: NULL, \
! 470: NULL, \
! 471: NULL, \
! 472: NULL, \
! 473: NULL, \
! 474: NULL, \
! 475: "DW_FORM_ref_sig8", \
! 476:
! 477: #define DW_OP_addr 0x03
! 478: #define DW_OP_deref 0x06
! 479: #define DW_OP_const1u 0x08
! 480: #define DW_OP_const1s 0x09
! 481: #define DW_OP_const2u 0x0a
! 482: #define DW_OP_const2s 0x0b
! 483: #define DW_OP_const4u 0x0c
! 484: #define DW_OP_const4s 0x0d
! 485: #define DW_OP_const8u 0x0e
! 486: #define DW_OP_const8s 0x0f
! 487: #define DW_OP_constu 0x10
! 488: #define DW_OP_consts 0x11
! 489: #define DW_OP_dup 0x12
! 490: #define DW_OP_drop 0x13
! 491: #define DW_OP_over 0x14
! 492: #define DW_OP_pick 0x15
! 493: #define DW_OP_swap 0x16
! 494: #define DW_OP_rot 0x17
! 495: #define DW_OP_xderef 0x18
! 496: #define DW_OP_abs 0x19
! 497: #define DW_OP_and 0x1a
! 498: #define DW_OP_div 0x1b
! 499: #define DW_OP_minus 0x1c
! 500: #define DW_OP_mod 0x1d
! 501: #define DW_OP_mul 0x1e
! 502: #define DW_OP_neg 0x1f
! 503: #define DW_OP_not 0x20
! 504: #define DW_OP_or 0x21
! 505: #define DW_OP_plus 0x22
! 506: #define DW_OP_plus_uconst 0x23
! 507: #define DW_OP_shl 0x24
! 508: #define DW_OP_shr 0x25
! 509: #define DW_OP_shra 0x26
! 510: #define DW_OP_xor 0x27
! 511: #define DW_OP_bra 0x28
! 512: #define DW_OP_eq 0x29
! 513: #define DW_OP_ge 0x2a
! 514: #define DW_OP_gt 0x2b
! 515: #define DW_OP_le 0x2c
! 516: #define DW_OP_lt 0x2d
! 517: #define DW_OP_ne 0x2e
! 518: #define DW_OP_skip 0x2f
! 519: #define DW_OP_lit0 0x30
! 520: #define DW_OP_lit1 0x31
! 521: #define DW_OP_lit2 0x32
! 522: #define DW_OP_lit3 0x33
! 523: #define DW_OP_lit4 0x34
! 524: #define DW_OP_lit5 0x35
! 525: #define DW_OP_lit6 0x36
! 526: #define DW_OP_lit7 0x37
! 527: #define DW_OP_lit8 0x38
! 528: #define DW_OP_lit9 0x39
! 529: #define DW_OP_lit10 0x3a
! 530: #define DW_OP_lit11 0x3b
! 531: #define DW_OP_lit12 0x3c
! 532: #define DW_OP_lit13 0x3d
! 533: #define DW_OP_lit14 0x3e
! 534: #define DW_OP_lit15 0x3f
! 535: #define DW_OP_lit16 0x40
! 536: #define DW_OP_lit17 0x41
! 537: #define DW_OP_lit18 0x42
! 538: #define DW_OP_lit19 0x43
! 539: #define DW_OP_lit20 0x44
! 540: #define DW_OP_lit21 0x45
! 541: #define DW_OP_lit22 0x46
! 542: #define DW_OP_lit23 0x47
! 543: #define DW_OP_lit24 0x48
! 544: #define DW_OP_lit25 0x49
! 545: #define DW_OP_lit26 0x4a
! 546: #define DW_OP_lit27 0x4b
! 547: #define DW_OP_lit28 0x4c
! 548: #define DW_OP_lit29 0x4d
! 549: #define DW_OP_lit30 0x4e
! 550: #define DW_OP_lit31 0x4f
! 551: #define DW_OP_reg0 0x50
! 552: #define DW_OP_reg1 0x51
! 553: #define DW_OP_reg2 0x52
! 554: #define DW_OP_reg3 0x53
! 555: #define DW_OP_reg4 0x54
! 556: #define DW_OP_reg5 0x55
! 557: #define DW_OP_reg6 0x56
! 558: #define DW_OP_reg7 0x57
! 559: #define DW_OP_reg8 0x58
! 560: #define DW_OP_reg9 0x59
! 561: #define DW_OP_reg10 0x5a
! 562: #define DW_OP_reg11 0x5b
! 563: #define DW_OP_reg12 0x5c
! 564: #define DW_OP_reg13 0x5d
! 565: #define DW_OP_reg14 0x5e
! 566: #define DW_OP_reg15 0x5f
! 567: #define DW_OP_reg16 0x60
! 568: #define DW_OP_reg17 0x61
! 569: #define DW_OP_reg18 0x62
! 570: #define DW_OP_reg19 0x63
! 571: #define DW_OP_reg20 0x64
! 572: #define DW_OP_reg21 0x65
! 573: #define DW_OP_reg22 0x66
! 574: #define DW_OP_reg23 0x67
! 575: #define DW_OP_reg24 0x68
! 576: #define DW_OP_reg25 0x69
! 577: #define DW_OP_reg26 0x6a
! 578: #define DW_OP_reg27 0x6b
! 579: #define DW_OP_reg28 0x6c
! 580: #define DW_OP_reg29 0x6d
! 581: #define DW_OP_reg30 0x6e
! 582: #define DW_OP_reg31 0x6f
! 583: #define DW_OP_breg0 0x70
! 584: #define DW_OP_breg1 0x71
! 585: #define DW_OP_breg2 0x72
! 586: #define DW_OP_breg3 0x73
! 587: #define DW_OP_breg4 0x74
! 588: #define DW_OP_breg5 0x75
! 589: #define DW_OP_breg6 0x76
! 590: #define DW_OP_breg7 0x77
! 591: #define DW_OP_breg8 0x78
! 592: #define DW_OP_breg9 0x79
! 593: #define DW_OP_breg10 0x7a
! 594: #define DW_OP_breg11 0x7b
! 595: #define DW_OP_breg12 0x7c
! 596: #define DW_OP_breg13 0x7d
! 597: #define DW_OP_breg14 0x7e
! 598: #define DW_OP_breg15 0x7f
! 599: #define DW_OP_breg16 0x80
! 600: #define DW_OP_breg17 0x81
! 601: #define DW_OP_breg18 0x82
! 602: #define DW_OP_breg19 0x83
! 603: #define DW_OP_breg20 0x84
! 604: #define DW_OP_breg21 0x85
! 605: #define DW_OP_breg22 0x86
! 606: #define DW_OP_breg23 0x87
! 607: #define DW_OP_breg24 0x88
! 608: #define DW_OP_breg25 0x89
! 609: #define DW_OP_breg26 0x8a
! 610: #define DW_OP_breg27 0x8b
! 611: #define DW_OP_breg28 0x8c
! 612: #define DW_OP_breg29 0x8d
! 613: #define DW_OP_breg30 0x8e
! 614: #define DW_OP_breg31 0x8f
! 615: #define DW_OP_regx 0x90
! 616: #define DW_OP_fbreg 0x91
! 617: #define DW_OP_bregx 0x92
! 618: #define DW_OP_piece 0x93
! 619: #define DW_OP_deref_size 0x94
! 620: #define DW_OP_xderef_size 0x95
! 621: #define DW_OP_nop 0x96
! 622: #define DW_OP_push_object_address 0x97
! 623: #define DW_OP_call2 0x98
! 624: #define DW_OP_call4 0x99
! 625: #define DW_OP_call_ref 0x9a
! 626: #define DW_OP_form_tls_address 0x9b
! 627: #define DW_OP_call_frame_cfa 0x9c
! 628: #define DW_OP_bit_piece 0x9d
! 629: #define DW_OP_implicit_value 0x9e
! 630: #define DW_OP_stack_value 0x9f
! 631: #define DW_OP_lo_user 0xe0
! 632: #define DW_OP_hi_user 0xff
! 633:
! 634: /* GNU extensions. */
! 635: #define DW_OP_GNU_push_tls_address 0xe0
! 636: #define DW_OP_GNU_uninit 0xf0
! 637: #define DW_OP_GNU_encoded_addr 0xf1
! 638: #define DW_OP_GNU_implicit_pointer 0xf2
! 639: #define DW_OP_GNU_entry_value 0xf3
! 640: #define DW_OP_GNU_const_type 0xf4
! 641: #define DW_OP_GNU_regval_type 0xf5
! 642: #define DW_OP_GNU_deref_type 0xf6
! 643: #define DW_OP_GNU_convert 0xf7
! 644: #define DW_OP_GNU_reinterpret 0xf9
! 645: #define DW_OP_GNU_parameter_ref 0xfa
! 646: #define DW_OP_GNU_addr_index 0xfb
! 647: #define DW_OP_GNU_const_index 0xfc
! 648:
! 649: #define DW_OP_NAMES \
! 650: NULL, \
! 651: NULL, \
! 652: "DW_OP_addr", \
! 653: NULL, \
! 654: NULL, \
! 655: "DW_OP_deref", \
! 656: NULL, \
! 657: "DW_OP_const1u", \
! 658: "DW_OP_const1s", \
! 659: "DW_OP_const2u", \
! 660: "DW_OP_const2s", \
! 661: "DW_OP_const4u", \
! 662: "DW_OP_const4s", \
! 663: "DW_OP_const8u", \
! 664: "DW_OP_const8s", \
! 665: "DW_OP_constu", \
! 666: "DW_OP_consts", \
! 667: "DW_OP_dup", \
! 668: "DW_OP_drop", \
! 669: "DW_OP_over", \
! 670: "DW_OP_pick", \
! 671: "DW_OP_swap", \
! 672: "DW_OP_rot", \
! 673: "DW_OP_xderef", \
! 674: "DW_OP_abs", \
! 675: "DW_OP_and", \
! 676: "DW_OP_div", \
! 677: "DW_OP_minus", \
! 678: "DW_OP_mod", \
! 679: "DW_OP_mul", \
! 680: "DW_OP_neg", \
! 681: "DW_OP_not", \
! 682: "DW_OP_or", \
! 683: "DW_OP_plus", \
! 684: "DW_OP_plus_uconst", \
! 685: "DW_OP_shl", \
! 686: "DW_OP_shr", \
! 687: "DW_OP_shra", \
! 688: "DW_OP_xor", \
! 689: "DW_OP_bra", \
! 690: "DW_OP_eq", \
! 691: "DW_OP_ge", \
! 692: "DW_OP_gt", \
! 693: "DW_OP_le", \
! 694: "DW_OP_lt", \
! 695: "DW_OP_ne", \
! 696: "DW_OP_skip", \
! 697: "DW_OP_lit0", \
! 698: "DW_OP_lit1", \
! 699: "DW_OP_lit2", \
! 700: "DW_OP_lit3", \
! 701: "DW_OP_lit4", \
! 702: "DW_OP_lit5", \
! 703: "DW_OP_lit6", \
! 704: "DW_OP_lit7", \
! 705: "DW_OP_lit8", \
! 706: "DW_OP_lit9", \
! 707: "DW_OP_lit10", \
! 708: "DW_OP_lit11", \
! 709: "DW_OP_lit12", \
! 710: "DW_OP_lit13", \
! 711: "DW_OP_lit14", \
! 712: "DW_OP_lit15", \
! 713: "DW_OP_lit16", \
! 714: "DW_OP_lit17", \
! 715: "DW_OP_lit18", \
! 716: "DW_OP_lit19", \
! 717: "DW_OP_lit20", \
! 718: "DW_OP_lit21", \
! 719: "DW_OP_lit22", \
! 720: "DW_OP_lit23", \
! 721: "DW_OP_lit24", \
! 722: "DW_OP_lit25", \
! 723: "DW_OP_lit26", \
! 724: "DW_OP_lit27", \
! 725: "DW_OP_lit28", \
! 726: "DW_OP_lit29", \
! 727: "DW_OP_lit30", \
! 728: "DW_OP_lit31", \
! 729: "DW_OP_reg0", \
! 730: "DW_OP_reg1", \
! 731: "DW_OP_reg2", \
! 732: "DW_OP_reg3", \
! 733: "DW_OP_reg4", \
! 734: "DW_OP_reg5", \
! 735: "DW_OP_reg6", \
! 736: "DW_OP_reg7", \
! 737: "DW_OP_reg8", \
! 738: "DW_OP_reg9", \
! 739: "DW_OP_reg10", \
! 740: "DW_OP_reg11", \
! 741: "DW_OP_reg12", \
! 742: "DW_OP_reg13", \
! 743: "DW_OP_reg14", \
! 744: "DW_OP_reg15", \
! 745: "DW_OP_reg16", \
! 746: "DW_OP_reg17", \
! 747: "DW_OP_reg18", \
! 748: "DW_OP_reg19", \
! 749: "DW_OP_reg20", \
! 750: "DW_OP_reg21", \
! 751: "DW_OP_reg22", \
! 752: "DW_OP_reg23", \
! 753: "DW_OP_reg24", \
! 754: "DW_OP_reg25", \
! 755: "DW_OP_reg26", \
! 756: "DW_OP_reg27", \
! 757: "DW_OP_reg28", \
! 758: "DW_OP_reg29", \
! 759: "DW_OP_reg30", \
! 760: "DW_OP_reg31", \
! 761: "DW_OP_breg0", \
! 762: "DW_OP_breg1", \
! 763: "DW_OP_breg2", \
! 764: "DW_OP_breg3", \
! 765: "DW_OP_breg4", \
! 766: "DW_OP_breg5", \
! 767: "DW_OP_breg6", \
! 768: "DW_OP_breg7", \
! 769: "DW_OP_breg8", \
! 770: "DW_OP_breg9", \
! 771: "DW_OP_breg10", \
! 772: "DW_OP_breg11", \
! 773: "DW_OP_breg12", \
! 774: "DW_OP_breg13", \
! 775: "DW_OP_breg14", \
! 776: "DW_OP_breg15", \
! 777: "DW_OP_breg16", \
! 778: "DW_OP_breg17", \
! 779: "DW_OP_breg18", \
! 780: "DW_OP_breg19", \
! 781: "DW_OP_breg20", \
! 782: "DW_OP_breg21", \
! 783: "DW_OP_breg22", \
! 784: "DW_OP_breg23", \
! 785: "DW_OP_breg24", \
! 786: "DW_OP_breg25", \
! 787: "DW_OP_breg26", \
! 788: "DW_OP_breg27", \
! 789: "DW_OP_breg28", \
! 790: "DW_OP_breg29", \
! 791: "DW_OP_breg30", \
! 792: "DW_OP_breg31", \
! 793: "DW_OP_regx", \
! 794: "DW_OP_fbreg", \
! 795: "DW_OP_bregx", \
! 796: "DW_OP_piece", \
! 797: "DW_OP_deref_size", \
! 798: "DW_OP_xderef_size", \
! 799: "DW_OP_nop", \
! 800: "DW_OP_push_object_address", \
! 801: "DW_OP_call2", \
! 802: "DW_OP_call4", \
! 803: "DW_OP_call_ref", \
! 804: "DW_OP_form_tls_address", \
! 805: "DW_OP_call_frame_cfa", \
! 806: "DW_OP_bit_piece", \
! 807: "DW_OP_implicit_value", \
! 808: "DW_OP_stack_value", \
! 809:
! 810: #define DW_ATE_address 0x1
! 811: #define DW_ATE_boolean 0x2
! 812: #define DW_ATE_complex_float 0x3
! 813: #define DW_ATE_float 0x4
! 814: #define DW_ATE_signed 0x5
! 815: #define DW_ATE_signed_char 0x6
! 816: #define DW_ATE_unsigned 0x7
! 817: #define DW_ATE_unsigned_char 0x8
! 818: #define DW_ATE_imaginary_float 0x9
! 819: #define DW_ATE_packed_decimal 0xa
! 820: #define DW_ATE_numeric_string 0xb
! 821: #define DW_ATE_edited 0xc
! 822: #define DW_ATE_signed_fixed 0xd
! 823: #define DW_ATE_unsigned_fixed 0xe
! 824: #define DW_ATE_decimal_float 0xf
! 825: #define DW_ATE_lo_user 0x80
! 826: #define DW_ATE_hi_user 0xff
! 827:
! 828: #define DW_ACCESS_public 0x01
! 829: #define DW_ACCESS_protected 0x02
! 830: #define DW_ACCESS_private 0x03
! 831:
! 832: #define DW_END_default 0x00
! 833: #define DW_END_big 0x01
! 834: #define DW_END_little 0x02
! 835: #define DW_END_lo_user 0x40
! 836: #define DW_END_high_user 0xff
! 837:
! 838: #define DW_VIS_local 0x01
! 839: #define DW_VIS_exported 0x02
! 840: #define DW_VIS_qualified 0x03
! 841:
! 842: #define DW_VIRTUALITY_none 0x00
! 843: #define DW_VIRTUALITY_virtual 0x01
! 844: #define DW_VIRTUALITY_pure_virtual 0x02
! 845:
! 846: #define DW_LANG_C89 0x0001
! 847: #define DW_LANG_C 0x0002
! 848: #define DW_LANG_Ada83 0x0003
! 849: #define DW_LANG_C_plus_plus 0x0004
! 850: #define DW_LANG_Cobol74 0x0005
! 851: #define DW_LANG_Cobol85 0x0006
! 852: #define DW_LANG_Fortran77 0x0007
! 853: #define DW_LANG_Fortran90 0x0008
! 854: #define DW_LANG_Pascal83 0x0009
! 855: #define DW_LANG_Modula2 0x000a
! 856: #define DW_LANG_Java 0x000b
! 857: #define DW_LANG_C99 0x000c
! 858: #define DW_LANG_Ada95 0x000d
! 859: #define DW_LANG_Fortran95 0x000e
! 860: #define DW_LANG_PLI 0x000f
! 861: #define DW_LANG_ObjC 0x0010
! 862: #define DW_LANG_ObjC_plus_plus 0x0011
! 863: #define DW_LANG_UPC 0x0012
! 864: #define DW_LANG_D 0x0013
! 865: #define DW_LANG_lo_user 0x8000
! 866: #define DW_LANG_hi_user 0xffff
! 867:
! 868: #define DW_ID_case_sensitive 0x00
! 869: #define DW_ID_up_case 0x01
! 870: #define DW_ID_down_case 0x02
! 871: #define DW_ID_case_insensitive 0x03
! 872:
! 873: #define DW_CC_normal 0x01
! 874: #define DW_CC_program 0x02
! 875: #define DW_CC_nocall 0x03
! 876: #define DW_CC_lo_user 0x40
! 877: #define DW_CC_hi_user 0xff
! 878:
! 879: #define DW_INL_not_inlined 0x00
! 880: #define DW_INL_inlined 0x01
! 881: #define DW_INL_declared_not_inlined 0x02
! 882: #define DW_INL_declared_inlined 0x03
! 883:
! 884: #define DW_ORD_row_major 0x00
! 885: #define DW_ORD_col_major 0x01
! 886:
! 887: #define DW_DS_unsigned 0x01
! 888: #define DW_DS_leading_overpunch 0x02
! 889: #define DW_DS_trailing_overpunch 0x03
! 890: #define DW_DS_leading_separate 0x04
! 891: #define DW_DS_trailing_separate 0x05
! 892:
! 893: #define DW_DSC_label 0x00
! 894: #define DW_DSC_range 0x01
! 895:
! 896: #define DW_LNS_copy 0x01
! 897: #define DW_LNS_advance_pc 0x02
! 898: #define DW_LNS_advance_line 0x03
! 899: #define DW_LNS_set_file 0x04
! 900: #define DW_LNS_set_column 0x05
! 901: #define DW_LNS_negate_stmt 0x06
! 902: #define DW_LNS_set_basic_block 0x07
! 903: #define DW_LNS_const_add_pc 0x08
! 904: #define DW_LNS_fixed_advance_pc 0x09
! 905: #define DW_LNS_set_prologue_end 0x0a
! 906: #define DW_LNS_set_epilogue_begin 0x0b
! 907: #define DW_LNS_set_isa 0x0c
! 908:
! 909: #define DW_LNE_end_sequence 0x01
! 910: #define DW_LNE_set_address 0x02
! 911: #define DW_LNE_define_file 0x03
! 912: #define DW_LNE_lo_user 0x80
! 913: #define DW_LNE_hi_user 0xff
! 914:
! 915: #define DW_MACINFO_define 0x01
! 916: #define DW_MACINFO_undef 0x02
! 917: #define DW_MACINFO_start_file 0x03
! 918: #define DW_MACINFO_end_file 0x04
! 919: #define DW_MACINFO_vendor_ext 0xff
! 920:
! 921: #define DW_CFA_advance_loc 0x40
! 922: #define DW_CFA_offset 0x80
! 923: #define DW_CFA_restore 0xc0
! 924: #define DW_CFA_extended 0
! 925:
! 926: #define DW_CFA_nop 0x00
! 927: #define DW_CFA_set_loc 0x01
! 928: #define DW_CFA_advance_loc1 0x02
! 929: #define DW_CFA_advance_loc2 0x03
! 930: #define DW_CFA_advance_loc4 0x04
! 931: #define DW_CFA_offset_extended 0x05
! 932: #define DW_CFA_restore_extended 0x06
! 933: #define DW_CFA_undefined 0x07
! 934: #define DW_CFA_same_value 0x08
! 935: #define DW_CFA_register 0x09
! 936: #define DW_CFA_remember_state 0x0a
! 937: #define DW_CFA_restore_state 0x0b
! 938: #define DW_CFA_def_cfa 0x0c
! 939: #define DW_CFA_def_cfa_register 0x0d
! 940: #define DW_CFA_def_cfa_offset 0x0e
! 941: #define DW_CFA_def_cfa_expression 0x0f
! 942: #define DW_CFA_expression 0x10
! 943: #define DW_CFA_offset_extended_sf 0x11
! 944: #define DW_CFA_def_cfa_sf 0x12
! 945: #define DW_CFA_def_cfa_offset_sf 0x13
! 946: #define DW_CFA_val_offset 0x14
! 947: #define DW_CFA_val_offset_sf 0x15
! 948: #define DW_CFA_val_expression 0x16
! 949: #define DW_CFA_lo_user 0x1c
! 950: #define DW_CFA_high_user 0x3f
! 951:
! 952: /*
! 953: * LSB(Linux Standard Base) extension to DWARF2.
! 954: */
! 955:
! 956: #define DW_EH_PE_absptr 0x00
! 957: #define DW_EH_PE_uleb128 0x01
! 958: #define DW_EH_PE_udata2 0x02
! 959: #define DW_EH_PE_udata4 0x03
! 960: #define DW_EH_PE_udata8 0x04
! 961: #define DW_EH_PE_sleb128 0x09
! 962: #define DW_EH_PE_sdata2 0x0a
! 963: #define DW_EH_PE_sdata4 0x0b
! 964: #define DW_EH_PE_sdata8 0x0c
! 965: #define DW_EH_PE_pcrel 0x10
! 966: #define DW_EH_PE_textrel 0x20
! 967: #define DW_EH_PE_datarel 0x30
! 968: #define DW_EH_PE_funcrel 0x40
! 969: #define DW_EH_PE_aligned 0x50
! 970: #define DW_EH_PE_omit 0xff
! 971:
! 972: #endif /* !_DWARF_H_ */