Home | History | Annotate | Download | only in BinaryFormat
      1 //===- llvm/Support/Dwarf.def - Dwarf definitions ---------------*- C++ -*-===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 //
     10 // Macros for running through Dwarf enumerators.
     11 //
     12 //===----------------------------------------------------------------------===//
     13 
     14 // TODO: Add other DW-based macros.
     15 #if !(defined HANDLE_DW_TAG || defined HANDLE_DW_AT ||                         \
     16       defined HANDLE_DW_FORM || defined HANDLE_DW_OP ||                        \
     17       defined HANDLE_DW_LANG || defined HANDLE_DW_ATE ||                       \
     18       defined HANDLE_DW_VIRTUALITY || defined HANDLE_DW_DEFAULTED ||           \
     19       defined HANDLE_DW_CC || defined HANDLE_DW_LNS ||                         \
     20       defined HANDLE_DW_LNE || defined HANDLE_DW_LNCT ||                       \
     21       defined HANDLE_DW_MACRO || defined HANDLE_DW_RLE ||                      \
     22       defined HANDLE_DW_CFA || defined HANDLE_DW_APPLE_PROPERTY ||             \
     23       defined HANDLE_DW_UT || defined HANDLE_DWARF_SECTION)
     24 #error "Missing macro definition of HANDLE_DW*"
     25 #endif
     26 
     27 #ifndef HANDLE_DW_TAG
     28 #define HANDLE_DW_TAG(ID, NAME, VERSION, VENDOR)
     29 #endif
     30 
     31 #ifndef HANDLE_DW_AT
     32 #define HANDLE_DW_AT(ID, NAME, VERSION, VENDOR)
     33 #endif
     34 
     35 #ifndef HANDLE_DW_FORM
     36 #define HANDLE_DW_FORM(ID, NAME, VERSION, VENDOR)
     37 #endif
     38 
     39 #ifndef HANDLE_DW_OP
     40 #define HANDLE_DW_OP(ID, NAME, VERSION, VENDOR)
     41 #endif
     42 
     43 #ifndef HANDLE_DW_LANG
     44 #define HANDLE_DW_LANG(ID, NAME, VERSION, VENDOR)
     45 #endif
     46 
     47 #ifndef HANDLE_DW_ATE
     48 #define HANDLE_DW_ATE(ID, NAME, VERSION, VENDOR)
     49 #endif
     50 
     51 #ifndef HANDLE_DW_VIRTUALITY
     52 #define HANDLE_DW_VIRTUALITY(ID, NAME)
     53 #endif
     54 
     55 #ifndef HANDLE_DW_DEFAULTED
     56 #define HANDLE_DW_DEFAULTED(ID, NAME)
     57 #endif
     58 
     59 #ifndef HANDLE_DW_CC
     60 #define HANDLE_DW_CC(ID, NAME)
     61 #endif
     62 
     63 #ifndef HANDLE_DW_LNS
     64 #define HANDLE_DW_LNS(ID, NAME)
     65 #endif
     66 
     67 #ifndef HANDLE_DW_LNE
     68 #define HANDLE_DW_LNE(ID, NAME)
     69 #endif
     70 
     71 #ifndef HANDLE_DW_LNCT
     72 #define HANDLE_DW_LNCT(ID, NAME)
     73 #endif
     74 
     75 #ifndef HANDLE_DW_MACRO
     76 #define HANDLE_DW_MACRO(ID, NAME)
     77 #endif
     78 
     79 #ifndef HANDLE_DW_RLE
     80 #define HANDLE_DW_RLE(ID, NAME)
     81 #endif
     82 
     83 #ifndef HANDLE_DW_CFA
     84 #define HANDLE_DW_CFA(ID, NAME)
     85 #endif
     86 
     87 #ifndef HANDLE_DW_APPLE_PROPERTY
     88 #define HANDLE_DW_APPLE_PROPERTY(ID, NAME)
     89 #endif
     90 
     91 #ifndef HANDLE_DW_UT
     92 #define HANDLE_DW_UT(ID, NAME)
     93 #endif
     94 
     95 #ifndef HANDLE_DWARF_SECTION
     96 #define HANDLE_DWARF_SECTION(ENUM_NAME, ELF_NAME, CMDLINE_NAME)
     97 #endif
     98 
     99 HANDLE_DW_TAG(0x0000, null, 2, DWARF)
    100 HANDLE_DW_TAG(0x0001, array_type, 2, DWARF)
    101 HANDLE_DW_TAG(0x0002, class_type, 2, DWARF)
    102 HANDLE_DW_TAG(0x0003, entry_point, 2, DWARF)
    103 HANDLE_DW_TAG(0x0004, enumeration_type, 2, DWARF)
    104 HANDLE_DW_TAG(0x0005, formal_parameter, 2, DWARF)
    105 HANDLE_DW_TAG(0x0008, imported_declaration, 2, DWARF)
    106 HANDLE_DW_TAG(0x000a, label, 2, DWARF)
    107 HANDLE_DW_TAG(0x000b, lexical_block, 2, DWARF)
    108 HANDLE_DW_TAG(0x000d, member, 2, DWARF)
    109 HANDLE_DW_TAG(0x000f, pointer_type, 2, DWARF)
    110 HANDLE_DW_TAG(0x0010, reference_type, 2, DWARF)
    111 HANDLE_DW_TAG(0x0011, compile_unit, 2, DWARF)
    112 HANDLE_DW_TAG(0x0012, string_type, 2, DWARF)
    113 HANDLE_DW_TAG(0x0013, structure_type, 2, DWARF)
    114 HANDLE_DW_TAG(0x0015, subroutine_type, 2, DWARF)
    115 HANDLE_DW_TAG(0x0016, typedef, 2, DWARF)
    116 HANDLE_DW_TAG(0x0017, union_type, 2, DWARF)
    117 HANDLE_DW_TAG(0x0018, unspecified_parameters, 2, DWARF)
    118 HANDLE_DW_TAG(0x0019, variant, 2, DWARF)
    119 HANDLE_DW_TAG(0x001a, common_block, 2, DWARF)
    120 HANDLE_DW_TAG(0x001b, common_inclusion, 2, DWARF)
    121 HANDLE_DW_TAG(0x001c, inheritance, 2, DWARF)
    122 HANDLE_DW_TAG(0x001d, inlined_subroutine, 2, DWARF)
    123 HANDLE_DW_TAG(0x001e, module, 2, DWARF)
    124 HANDLE_DW_TAG(0x001f, ptr_to_member_type, 2, DWARF)
    125 HANDLE_DW_TAG(0x0020, set_type, 2, DWARF)
    126 HANDLE_DW_TAG(0x0021, subrange_type, 2, DWARF)
    127 HANDLE_DW_TAG(0x0022, with_stmt, 2, DWARF)
    128 HANDLE_DW_TAG(0x0023, access_declaration, 2, DWARF)
    129 HANDLE_DW_TAG(0x0024, base_type, 2, DWARF)
    130 HANDLE_DW_TAG(0x0025, catch_block, 2, DWARF)
    131 HANDLE_DW_TAG(0x0026, const_type, 2, DWARF)
    132 HANDLE_DW_TAG(0x0027, constant, 2, DWARF)
    133 HANDLE_DW_TAG(0x0028, enumerator, 2, DWARF)
    134 HANDLE_DW_TAG(0x0029, file_type, 2, DWARF)
    135 HANDLE_DW_TAG(0x002a, friend, 2, DWARF)
    136 HANDLE_DW_TAG(0x002b, namelist, 2, DWARF)
    137 HANDLE_DW_TAG(0x002c, namelist_item, 2, DWARF)
    138 HANDLE_DW_TAG(0x002d, packed_type, 2, DWARF)
    139 HANDLE_DW_TAG(0x002e, subprogram, 2, DWARF)
    140 HANDLE_DW_TAG(0x002f, template_type_parameter, 2, DWARF)
    141 HANDLE_DW_TAG(0x0030, template_value_parameter, 2, DWARF)
    142 HANDLE_DW_TAG(0x0031, thrown_type, 2, DWARF)
    143 HANDLE_DW_TAG(0x0032, try_block, 2, DWARF)
    144 HANDLE_DW_TAG(0x0033, variant_part, 2, DWARF)
    145 HANDLE_DW_TAG(0x0034, variable, 2, DWARF)
    146 HANDLE_DW_TAG(0x0035, volatile_type, 2, DWARF)
    147 // New in DWARF v3:
    148 HANDLE_DW_TAG(0x0036, dwarf_procedure, 3, DWARF)
    149 HANDLE_DW_TAG(0x0037, restrict_type, 3, DWARF)
    150 HANDLE_DW_TAG(0x0038, interface_type, 3, DWARF)
    151 HANDLE_DW_TAG(0x0039, namespace, 3, DWARF)
    152 HANDLE_DW_TAG(0x003a, imported_module, 3, DWARF)
    153 HANDLE_DW_TAG(0x003b, unspecified_type, 3, DWARF)
    154 HANDLE_DW_TAG(0x003c, partial_unit, 3, DWARF)
    155 HANDLE_DW_TAG(0x003d, imported_unit, 3, DWARF)
    156 HANDLE_DW_TAG(0x003f, condition, 3, DWARF)
    157 HANDLE_DW_TAG(0x0040, shared_type, 3, DWARF)
    158 // New in DWARF v4:
    159 HANDLE_DW_TAG(0x0041, type_unit, 4, DWARF)
    160 HANDLE_DW_TAG(0x0042, rvalue_reference_type, 4, DWARF)
    161 HANDLE_DW_TAG(0x0043, template_alias, 4, DWARF)
    162 // New in DWARF v5:
    163 HANDLE_DW_TAG(0x0044, coarray_type, 5, DWARF)
    164 HANDLE_DW_TAG(0x0045, generic_subrange, 5, DWARF)
    165 HANDLE_DW_TAG(0x0046, dynamic_type, 5, DWARF)
    166 HANDLE_DW_TAG(0x0047, atomic_type, 5, DWARF)
    167 HANDLE_DW_TAG(0x0048, call_site, 5, DWARF)
    168 HANDLE_DW_TAG(0x0049, call_site_parameter, 5, DWARF)
    169 HANDLE_DW_TAG(0x004a, skeleton_unit, 5, DWARF)
    170 HANDLE_DW_TAG(0x004b, immutable_type, 5, DWARF)
    171 // Vendor extensions:
    172 HANDLE_DW_TAG(0x4081, MIPS_loop, 0, MIPS)
    173 HANDLE_DW_TAG(0x4101, format_label, 0, GNU)
    174 HANDLE_DW_TAG(0x4102, function_template, 0, GNU)
    175 HANDLE_DW_TAG(0x4103, class_template, 0, GNU)
    176 HANDLE_DW_TAG(0x4106, GNU_template_template_param, 0, GNU)
    177 HANDLE_DW_TAG(0x4107, GNU_template_parameter_pack, 0, GNU)
    178 HANDLE_DW_TAG(0x4108, GNU_formal_parameter_pack, 0, GNU)
    179 HANDLE_DW_TAG(0x4200, APPLE_property, 0, APPLE)
    180 HANDLE_DW_TAG(0xb000, BORLAND_property, 0, BORLAND)
    181 HANDLE_DW_TAG(0xb001, BORLAND_Delphi_string, 0, BORLAND)
    182 HANDLE_DW_TAG(0xb002, BORLAND_Delphi_dynamic_array, 0, BORLAND)
    183 HANDLE_DW_TAG(0xb003, BORLAND_Delphi_set, 0, BORLAND)
    184 HANDLE_DW_TAG(0xb004, BORLAND_Delphi_variant, 0, BORLAND)
    185 
    186 // Attributes.
    187 HANDLE_DW_AT(0x01, sibling, 2, DWARF)
    188 HANDLE_DW_AT(0x02, location, 2, DWARF)
    189 HANDLE_DW_AT(0x03, name, 2, DWARF)
    190 HANDLE_DW_AT(0x09, ordering, 2, DWARF)
    191 HANDLE_DW_AT(0x0b, byte_size, 2, DWARF)
    192 HANDLE_DW_AT(0x0c, bit_offset, 2, DWARF)
    193 HANDLE_DW_AT(0x0d, bit_size, 2, DWARF)
    194 HANDLE_DW_AT(0x10, stmt_list, 2, DWARF)
    195 HANDLE_DW_AT(0x11, low_pc, 2, DWARF)
    196 HANDLE_DW_AT(0x12, high_pc, 2, DWARF)
    197 HANDLE_DW_AT(0x13, language, 2, DWARF)
    198 HANDLE_DW_AT(0x15, discr, 2, DWARF)
    199 HANDLE_DW_AT(0x16, discr_value, 2, DWARF)
    200 HANDLE_DW_AT(0x17, visibility, 2, DWARF)
    201 HANDLE_DW_AT(0x18, import, 2, DWARF)
    202 HANDLE_DW_AT(0x19, string_length, 2, DWARF)
    203 HANDLE_DW_AT(0x1a, common_reference, 2, DWARF)
    204 HANDLE_DW_AT(0x1b, comp_dir, 2, DWARF)
    205 HANDLE_DW_AT(0x1c, const_value, 2, DWARF)
    206 HANDLE_DW_AT(0x1d, containing_type, 2, DWARF)
    207 HANDLE_DW_AT(0x1e, default_value, 2, DWARF)
    208 HANDLE_DW_AT(0x20, inline, 2, DWARF)
    209 HANDLE_DW_AT(0x21, is_optional, 2, DWARF)
    210 HANDLE_DW_AT(0x22, lower_bound, 2, DWARF)
    211 HANDLE_DW_AT(0x25, producer, 2, DWARF)
    212 HANDLE_DW_AT(0x27, prototyped, 2, DWARF)
    213 HANDLE_DW_AT(0x2a, return_addr, 2, DWARF)
    214 HANDLE_DW_AT(0x2c, start_scope, 2, DWARF)
    215 HANDLE_DW_AT(0x2e, bit_stride, 2, DWARF)
    216 HANDLE_DW_AT(0x2f, upper_bound, 2, DWARF)
    217 HANDLE_DW_AT(0x31, abstract_origin, 2, DWARF)
    218 HANDLE_DW_AT(0x32, accessibility, 2, DWARF)
    219 HANDLE_DW_AT(0x33, address_class, 2, DWARF)
    220 HANDLE_DW_AT(0x34, artificial, 2, DWARF)
    221 HANDLE_DW_AT(0x35, base_types, 2, DWARF)
    222 HANDLE_DW_AT(0x36, calling_convention, 2, DWARF)
    223 HANDLE_DW_AT(0x37, count, 2, DWARF)
    224 HANDLE_DW_AT(0x38, data_member_location, 2, DWARF)
    225 HANDLE_DW_AT(0x39, decl_column, 2, DWARF)
    226 HANDLE_DW_AT(0x3a, decl_file, 2, DWARF)
    227 HANDLE_DW_AT(0x3b, decl_line, 2, DWARF)
    228 HANDLE_DW_AT(0x3c, declaration, 2, DWARF)
    229 HANDLE_DW_AT(0x3d, discr_list, 2, DWARF)
    230 HANDLE_DW_AT(0x3e, encoding, 2, DWARF)
    231 HANDLE_DW_AT(0x3f, external, 2, DWARF)
    232 HANDLE_DW_AT(0x40, frame_base, 2, DWARF)
    233 HANDLE_DW_AT(0x41, friend, 2, DWARF)
    234 HANDLE_DW_AT(0x42, identifier_case, 2, DWARF)
    235 HANDLE_DW_AT(0x43, macro_info, 2, DWARF)
    236 HANDLE_DW_AT(0x44, namelist_item, 2, DWARF)
    237 HANDLE_DW_AT(0x45, priority, 2, DWARF)
    238 HANDLE_DW_AT(0x46, segment, 2, DWARF)
    239 HANDLE_DW_AT(0x47, specification, 2, DWARF)
    240 HANDLE_DW_AT(0x48, static_link, 2, DWARF)
    241 HANDLE_DW_AT(0x49, type, 2, DWARF)
    242 HANDLE_DW_AT(0x4a, use_location, 2, DWARF)
    243 HANDLE_DW_AT(0x4b, variable_parameter, 2, DWARF)
    244 HANDLE_DW_AT(0x4c, virtuality, 2, DWARF)
    245 HANDLE_DW_AT(0x4d, vtable_elem_location, 2, DWARF)
    246 // New in DWARF v3:
    247 HANDLE_DW_AT(0x4e, allocated, 3, DWARF)
    248 HANDLE_DW_AT(0x4f, associated, 3, DWARF)
    249 HANDLE_DW_AT(0x50, data_location, 3, DWARF)
    250 HANDLE_DW_AT(0x51, byte_stride, 3, DWARF)
    251 HANDLE_DW_AT(0x52, entry_pc, 3, DWARF)
    252 HANDLE_DW_AT(0x53, use_UTF8, 3, DWARF)
    253 HANDLE_DW_AT(0x54, extension, 3, DWARF)
    254 HANDLE_DW_AT(0x55, ranges, 3, DWARF)
    255 HANDLE_DW_AT(0x56, trampoline, 3, DWARF)
    256 HANDLE_DW_AT(0x57, call_column, 3, DWARF)
    257 HANDLE_DW_AT(0x58, call_file, 3, DWARF)
    258 HANDLE_DW_AT(0x59, call_line, 3, DWARF)
    259 HANDLE_DW_AT(0x5a, description, 3, DWARF)
    260 HANDLE_DW_AT(0x5b, binary_scale, 3, DWARF)
    261 HANDLE_DW_AT(0x5c, decimal_scale, 3, DWARF)
    262 HANDLE_DW_AT(0x5d, small, 3, DWARF)
    263 HANDLE_DW_AT(0x5e, decimal_sign, 3, DWARF)
    264 HANDLE_DW_AT(0x5f, digit_count, 3, DWARF)
    265 HANDLE_DW_AT(0x60, picture_string, 3, DWARF)
    266 HANDLE_DW_AT(0x61, mutable, 3, DWARF)
    267 HANDLE_DW_AT(0x62, threads_scaled, 3, DWARF)
    268 HANDLE_DW_AT(0x63, explicit, 3, DWARF)
    269 HANDLE_DW_AT(0x64, object_pointer, 3, DWARF)
    270 HANDLE_DW_AT(0x65, endianity, 3, DWARF)
    271 HANDLE_DW_AT(0x66, elemental, 3, DWARF)
    272 HANDLE_DW_AT(0x67, pure, 3, DWARF)
    273 HANDLE_DW_AT(0x68, recursive, 3, DWARF)
    274 // New in DWARF v4:
    275 HANDLE_DW_AT(0x69, signature, 4, DWARF)
    276 HANDLE_DW_AT(0x6a, main_subprogram, 4, DWARF)
    277 HANDLE_DW_AT(0x6b, data_bit_offset, 4, DWARF)
    278 HANDLE_DW_AT(0x6c, const_expr, 4, DWARF)
    279 HANDLE_DW_AT(0x6d, enum_class, 4, DWARF)
    280 HANDLE_DW_AT(0x6e, linkage_name, 4, DWARF)
    281 // New in DWARF v5:
    282 HANDLE_DW_AT(0x6f, string_length_bit_size, 5, DWARF)
    283 HANDLE_DW_AT(0x70, string_length_byte_size, 5, DWARF)
    284 HANDLE_DW_AT(0x71, rank, 5, DWARF)
    285 HANDLE_DW_AT(0x72, str_offsets_base, 5, DWARF)
    286 HANDLE_DW_AT(0x73, addr_base, 5, DWARF)
    287 HANDLE_DW_AT(0x74, rnglists_base, 5, DWARF)
    288 HANDLE_DW_AT(0x75, dwo_id, 0, DWARF) ///< Retracted from DWARF v5.
    289 HANDLE_DW_AT(0x76, dwo_name, 5, DWARF)
    290 HANDLE_DW_AT(0x77, reference, 5, DWARF)
    291 HANDLE_DW_AT(0x78, rvalue_reference, 5, DWARF)
    292 HANDLE_DW_AT(0x79, macros, 5, DWARF)
    293 HANDLE_DW_AT(0x7a, call_all_calls, 5, DWARF)
    294 HANDLE_DW_AT(0x7b, call_all_source_calls, 5, DWARF)
    295 HANDLE_DW_AT(0x7c, call_all_tail_calls, 5, DWARF)
    296 HANDLE_DW_AT(0x7d, call_return_pc, 5, DWARF)
    297 HANDLE_DW_AT(0x7e, call_value, 5, DWARF)
    298 HANDLE_DW_AT(0x7f, call_origin, 5, DWARF)
    299 HANDLE_DW_AT(0x80, call_parameter, 5, DWARF)
    300 HANDLE_DW_AT(0x81, call_pc, 5, DWARF)
    301 HANDLE_DW_AT(0x82, call_tail_call, 5, DWARF)
    302 HANDLE_DW_AT(0x83, call_target, 5, DWARF)
    303 HANDLE_DW_AT(0x84, call_target_clobbered, 5, DWARF)
    304 HANDLE_DW_AT(0x85, call_data_location, 5, DWARF)
    305 HANDLE_DW_AT(0x86, call_data_value, 5, DWARF)
    306 HANDLE_DW_AT(0x87, noreturn, 5, DWARF)
    307 HANDLE_DW_AT(0x88, alignment, 5, DWARF)
    308 HANDLE_DW_AT(0x89, export_symbols, 5, DWARF)
    309 HANDLE_DW_AT(0x8a, deleted, 5, DWARF)
    310 HANDLE_DW_AT(0x8b, defaulted, 5, DWARF)
    311 HANDLE_DW_AT(0x8c, loclists_base, 5, DWARF)
    312 // Vendor extensions:
    313 HANDLE_DW_AT(0x2002, MIPS_loop_begin, 0, MIPS)
    314 HANDLE_DW_AT(0x2003, MIPS_tail_loop_begin, 0, MIPS)
    315 HANDLE_DW_AT(0x2004, MIPS_epilog_begin, 0, MIPS)
    316 HANDLE_DW_AT(0x2005, MIPS_loop_unroll_factor, 0, MIPS)
    317 HANDLE_DW_AT(0x2006, MIPS_software_pipeline_depth, 0, MIPS)
    318 HANDLE_DW_AT(0x2007, MIPS_linkage_name, 0, MIPS)
    319 HANDLE_DW_AT(0x2008, MIPS_stride, 0, MIPS)
    320 HANDLE_DW_AT(0x2009, MIPS_abstract_name, 0, MIPS)
    321 HANDLE_DW_AT(0x200a, MIPS_clone_origin, 0, MIPS)
    322 HANDLE_DW_AT(0x200b, MIPS_has_inlines, 0, MIPS)
    323 HANDLE_DW_AT(0x200c, MIPS_stride_byte, 0, MIPS)
    324 HANDLE_DW_AT(0x200d, MIPS_stride_elem, 0, MIPS)
    325 HANDLE_DW_AT(0x200e, MIPS_ptr_dopetype, 0, MIPS)
    326 HANDLE_DW_AT(0x200f, MIPS_allocatable_dopetype, 0, MIPS)
    327 HANDLE_DW_AT(0x2010, MIPS_assumed_shape_dopetype, 0, MIPS)
    328 // This one appears to have only been implemented by Open64 for
    329 // fortran and may conflict with other extensions.
    330 HANDLE_DW_AT(0x2011, MIPS_assumed_size, 0, MIPS)
    331 // GNU extensions
    332 HANDLE_DW_AT(0x2101, sf_names, 0, GNU)
    333 HANDLE_DW_AT(0x2102, src_info, 0, GNU)
    334 HANDLE_DW_AT(0x2103, mac_info, 0, GNU)
    335 HANDLE_DW_AT(0x2104, src_coords, 0, GNU)
    336 HANDLE_DW_AT(0x2105, body_begin, 0, GNU)
    337 HANDLE_DW_AT(0x2106, body_end, 0, GNU)
    338 HANDLE_DW_AT(0x2107, GNU_vector, 0, GNU)
    339 HANDLE_DW_AT(0x2110, GNU_template_name, 0, GNU)
    340 HANDLE_DW_AT(0x210f, GNU_odr_signature, 0, GNU)
    341 HANDLE_DW_AT(0x2119, GNU_macros, 0, GNU)
    342 // Extensions for Fission proposal.
    343 HANDLE_DW_AT(0x2130, GNU_dwo_name, 0, GNU)
    344 HANDLE_DW_AT(0x2131, GNU_dwo_id, 0, GNU)
    345 HANDLE_DW_AT(0x2132, GNU_ranges_base, 0, GNU)
    346 HANDLE_DW_AT(0x2133, GNU_addr_base, 0, GNU)
    347 HANDLE_DW_AT(0x2134, GNU_pubnames, 0, GNU)
    348 HANDLE_DW_AT(0x2135, GNU_pubtypes, 0, GNU)
    349 HANDLE_DW_AT(0x2136, GNU_discriminator, 0, GNU)
    350 // Borland extensions.
    351 HANDLE_DW_AT(0x3b11, BORLAND_property_read, 0, BORLAND)
    352 HANDLE_DW_AT(0x3b12, BORLAND_property_write, 0, BORLAND)
    353 HANDLE_DW_AT(0x3b13, BORLAND_property_implements, 0, BORLAND)
    354 HANDLE_DW_AT(0x3b14, BORLAND_property_index, 0, BORLAND)
    355 HANDLE_DW_AT(0x3b15, BORLAND_property_default, 0, BORLAND)
    356 HANDLE_DW_AT(0x3b20, BORLAND_Delphi_unit, 0, BORLAND)
    357 HANDLE_DW_AT(0x3b21, BORLAND_Delphi_class, 0, BORLAND)
    358 HANDLE_DW_AT(0x3b22, BORLAND_Delphi_record, 0, BORLAND)
    359 HANDLE_DW_AT(0x3b23, BORLAND_Delphi_metaclass, 0, BORLAND)
    360 HANDLE_DW_AT(0x3b24, BORLAND_Delphi_constructor, 0, BORLAND)
    361 HANDLE_DW_AT(0x3b25, BORLAND_Delphi_destructor, 0, BORLAND)
    362 HANDLE_DW_AT(0x3b26, BORLAND_Delphi_anonymous_method, 0, BORLAND)
    363 HANDLE_DW_AT(0x3b27, BORLAND_Delphi_interface, 0, BORLAND)
    364 HANDLE_DW_AT(0x3b28, BORLAND_Delphi_ABI, 0, BORLAND)
    365 HANDLE_DW_AT(0x3b29, BORLAND_Delphi_return, 0, BORLAND)
    366 HANDLE_DW_AT(0x3b30, BORLAND_Delphi_frameptr, 0, BORLAND)
    367 HANDLE_DW_AT(0x3b31, BORLAND_closure, 0, BORLAND)
    368 // LLVM project extensions.
    369 HANDLE_DW_AT(0x3e00, LLVM_include_path, 0, LLVM)
    370 HANDLE_DW_AT(0x3e01, LLVM_config_macros, 0, LLVM)
    371 HANDLE_DW_AT(0x3e02, LLVM_isysroot, 0, LLVM)
    372 // Apple extensions.
    373 HANDLE_DW_AT(0x3fe1, APPLE_optimized, 0, APPLE)
    374 HANDLE_DW_AT(0x3fe2, APPLE_flags, 0, APPLE)
    375 HANDLE_DW_AT(0x3fe3, APPLE_isa, 0, APPLE)
    376 HANDLE_DW_AT(0x3fe4, APPLE_block, 0, APPLE)
    377 HANDLE_DW_AT(0x3fe5, APPLE_major_runtime_vers, 0, APPLE)
    378 HANDLE_DW_AT(0x3fe6, APPLE_runtime_class, 0, APPLE)
    379 HANDLE_DW_AT(0x3fe7, APPLE_omit_frame_ptr, 0, APPLE)
    380 HANDLE_DW_AT(0x3fe8, APPLE_property_name, 0, APPLE)
    381 HANDLE_DW_AT(0x3fe9, APPLE_property_getter, 0, APPLE)
    382 HANDLE_DW_AT(0x3fea, APPLE_property_setter, 0, APPLE)
    383 HANDLE_DW_AT(0x3feb, APPLE_property_attribute, 0, APPLE)
    384 HANDLE_DW_AT(0x3fec, APPLE_objc_complete_type, 0, APPLE)
    385 HANDLE_DW_AT(0x3fed, APPLE_property, 0, APPLE)
    386 
    387 // Attribute form encodings.
    388 HANDLE_DW_FORM(0x01, addr, 2, DWARF)
    389 HANDLE_DW_FORM(0x03, block2, 2, DWARF)
    390 HANDLE_DW_FORM(0x04, block4, 2, DWARF)
    391 HANDLE_DW_FORM(0x05, data2, 2, DWARF)
    392 HANDLE_DW_FORM(0x06, data4, 2, DWARF)
    393 HANDLE_DW_FORM(0x07, data8, 2, DWARF)
    394 HANDLE_DW_FORM(0x08, string, 2, DWARF)
    395 HANDLE_DW_FORM(0x09, block, 2, DWARF)
    396 HANDLE_DW_FORM(0x0a, block1, 2, DWARF)
    397 HANDLE_DW_FORM(0x0b, data1, 2, DWARF)
    398 HANDLE_DW_FORM(0x0c, flag, 2, DWARF)
    399 HANDLE_DW_FORM(0x0d, sdata, 2, DWARF)
    400 HANDLE_DW_FORM(0x0e, strp, 2, DWARF)
    401 HANDLE_DW_FORM(0x0f, udata, 2, DWARF)
    402 HANDLE_DW_FORM(0x10, ref_addr, 2, DWARF)
    403 HANDLE_DW_FORM(0x11, ref1, 2, DWARF)
    404 HANDLE_DW_FORM(0x12, ref2, 2, DWARF)
    405 HANDLE_DW_FORM(0x13, ref4, 2, DWARF)
    406 HANDLE_DW_FORM(0x14, ref8, 2, DWARF)
    407 HANDLE_DW_FORM(0x15, ref_udata, 2, DWARF)
    408 HANDLE_DW_FORM(0x16, indirect, 2, DWARF)
    409 // New in DWARF v4:
    410 HANDLE_DW_FORM(0x17, sec_offset, 4, DWARF)
    411 HANDLE_DW_FORM(0x18, exprloc, 4, DWARF)
    412 HANDLE_DW_FORM(0x19, flag_present, 4, DWARF)
    413 // This was defined out of sequence.
    414 HANDLE_DW_FORM(0x20, ref_sig8, 4, DWARF)
    415 // New in DWARF v5:
    416 HANDLE_DW_FORM(0x1a, strx, 5, DWARF)
    417 HANDLE_DW_FORM(0x1b, addrx, 5, DWARF)
    418 HANDLE_DW_FORM(0x1c, ref_sup4, 5, DWARF)
    419 HANDLE_DW_FORM(0x1d, strp_sup, 5, DWARF)
    420 HANDLE_DW_FORM(0x1e, data16, 5, DWARF)
    421 HANDLE_DW_FORM(0x1f, line_strp, 5, DWARF)
    422 HANDLE_DW_FORM(0x21, implicit_const, 5, DWARF)
    423 HANDLE_DW_FORM(0x22, loclistx, 5, DWARF)
    424 HANDLE_DW_FORM(0x23, rnglistx, 5, DWARF)
    425 HANDLE_DW_FORM(0x24, ref_sup8, 5, DWARF)
    426 HANDLE_DW_FORM(0x25, strx1, 5, DWARF)
    427 HANDLE_DW_FORM(0x26, strx2, 5, DWARF)
    428 HANDLE_DW_FORM(0x27, strx3, 5, DWARF)
    429 HANDLE_DW_FORM(0x28, strx4, 5, DWARF)
    430 HANDLE_DW_FORM(0x29, addrx1, 5, DWARF)
    431 HANDLE_DW_FORM(0x2a, addrx2, 5, DWARF)
    432 HANDLE_DW_FORM(0x2b, addrx3, 5, DWARF)
    433 HANDLE_DW_FORM(0x2c, addrx4, 5, DWARF)
    434 // Extensions for Fission proposal
    435 HANDLE_DW_FORM(0x1f01, GNU_addr_index, 0, GNU)
    436 HANDLE_DW_FORM(0x1f02, GNU_str_index, 0, GNU)
    437 // Alternate debug sections proposal (output of "dwz" tool).
    438 HANDLE_DW_FORM(0x1f20, GNU_ref_alt, 0, GNU)
    439 HANDLE_DW_FORM(0x1f21, GNU_strp_alt, 0, GNU)
    440 
    441 // DWARF Expression operators.
    442 HANDLE_DW_OP(0x03, addr, 2, DWARF)
    443 HANDLE_DW_OP(0x06, deref, 2, DWARF)
    444 HANDLE_DW_OP(0x08, const1u, 2, DWARF)
    445 HANDLE_DW_OP(0x09, const1s, 2, DWARF)
    446 HANDLE_DW_OP(0x0a, const2u, 2, DWARF)
    447 HANDLE_DW_OP(0x0b, const2s, 2, DWARF)
    448 HANDLE_DW_OP(0x0c, const4u, 2, DWARF)
    449 HANDLE_DW_OP(0x0d, const4s, 2, DWARF)
    450 HANDLE_DW_OP(0x0e, const8u, 2, DWARF)
    451 HANDLE_DW_OP(0x0f, const8s, 2, DWARF)
    452 HANDLE_DW_OP(0x10, constu, 2, DWARF)
    453 HANDLE_DW_OP(0x11, consts, 2, DWARF)
    454 HANDLE_DW_OP(0x12, dup, 2, DWARF)
    455 HANDLE_DW_OP(0x13, drop, 2, DWARF)
    456 HANDLE_DW_OP(0x14, over, 2, DWARF)
    457 HANDLE_DW_OP(0x15, pick, 2, DWARF)
    458 HANDLE_DW_OP(0x16, swap, 2, DWARF)
    459 HANDLE_DW_OP(0x17, rot, 2, DWARF)
    460 HANDLE_DW_OP(0x18, xderef, 2, DWARF)
    461 HANDLE_DW_OP(0x19, abs, 2, DWARF)
    462 HANDLE_DW_OP(0x1a, and, 2, DWARF)
    463 HANDLE_DW_OP(0x1b, div, 2, DWARF)
    464 HANDLE_DW_OP(0x1c, minus, 2, DWARF)
    465 HANDLE_DW_OP(0x1d, mod, 2, DWARF)
    466 HANDLE_DW_OP(0x1e, mul, 2, DWARF)
    467 HANDLE_DW_OP(0x1f, neg, 2, DWARF)
    468 HANDLE_DW_OP(0x20, not, 2, DWARF)
    469 HANDLE_DW_OP(0x21, or, 2, DWARF)
    470 HANDLE_DW_OP(0x22, plus, 2, DWARF)
    471 HANDLE_DW_OP(0x23, plus_uconst, 2, DWARF)
    472 HANDLE_DW_OP(0x24, shl, 2, DWARF)
    473 HANDLE_DW_OP(0x25, shr, 2, DWARF)
    474 HANDLE_DW_OP(0x26, shra, 2, DWARF)
    475 HANDLE_DW_OP(0x27, xor, 2, DWARF)
    476 HANDLE_DW_OP(0x28, bra, 2, DWARF)
    477 HANDLE_DW_OP(0x29, eq, 2, DWARF)
    478 HANDLE_DW_OP(0x2a, ge, 2, DWARF)
    479 HANDLE_DW_OP(0x2b, gt, 2, DWARF)
    480 HANDLE_DW_OP(0x2c, le, 2, DWARF)
    481 HANDLE_DW_OP(0x2d, lt, 2, DWARF)
    482 HANDLE_DW_OP(0x2e, ne, 2, DWARF)
    483 HANDLE_DW_OP(0x2f, skip, 2, DWARF)
    484 HANDLE_DW_OP(0x30, lit0, 2, DWARF)
    485 HANDLE_DW_OP(0x31, lit1, 2, DWARF)
    486 HANDLE_DW_OP(0x32, lit2, 2, DWARF)
    487 HANDLE_DW_OP(0x33, lit3, 2, DWARF)
    488 HANDLE_DW_OP(0x34, lit4, 2, DWARF)
    489 HANDLE_DW_OP(0x35, lit5, 2, DWARF)
    490 HANDLE_DW_OP(0x36, lit6, 2, DWARF)
    491 HANDLE_DW_OP(0x37, lit7, 2, DWARF)
    492 HANDLE_DW_OP(0x38, lit8, 2, DWARF)
    493 HANDLE_DW_OP(0x39, lit9, 2, DWARF)
    494 HANDLE_DW_OP(0x3a, lit10, 2, DWARF)
    495 HANDLE_DW_OP(0x3b, lit11, 2, DWARF)
    496 HANDLE_DW_OP(0x3c, lit12, 2, DWARF)
    497 HANDLE_DW_OP(0x3d, lit13, 2, DWARF)
    498 HANDLE_DW_OP(0x3e, lit14, 2, DWARF)
    499 HANDLE_DW_OP(0x3f, lit15, 2, DWARF)
    500 HANDLE_DW_OP(0x40, lit16, 2, DWARF)
    501 HANDLE_DW_OP(0x41, lit17, 2, DWARF)
    502 HANDLE_DW_OP(0x42, lit18, 2, DWARF)
    503 HANDLE_DW_OP(0x43, lit19, 2, DWARF)
    504 HANDLE_DW_OP(0x44, lit20, 2, DWARF)
    505 HANDLE_DW_OP(0x45, lit21, 2, DWARF)
    506 HANDLE_DW_OP(0x46, lit22, 2, DWARF)
    507 HANDLE_DW_OP(0x47, lit23, 2, DWARF)
    508 HANDLE_DW_OP(0x48, lit24, 2, DWARF)
    509 HANDLE_DW_OP(0x49, lit25, 2, DWARF)
    510 HANDLE_DW_OP(0x4a, lit26, 2, DWARF)
    511 HANDLE_DW_OP(0x4b, lit27, 2, DWARF)
    512 HANDLE_DW_OP(0x4c, lit28, 2, DWARF)
    513 HANDLE_DW_OP(0x4d, lit29, 2, DWARF)
    514 HANDLE_DW_OP(0x4e, lit30, 2, DWARF)
    515 HANDLE_DW_OP(0x4f, lit31, 2, DWARF)
    516 HANDLE_DW_OP(0x50, reg0, 2, DWARF)
    517 HANDLE_DW_OP(0x51, reg1, 2, DWARF)
    518 HANDLE_DW_OP(0x52, reg2, 2, DWARF)
    519 HANDLE_DW_OP(0x53, reg3, 2, DWARF)
    520 HANDLE_DW_OP(0x54, reg4, 2, DWARF)
    521 HANDLE_DW_OP(0x55, reg5, 2, DWARF)
    522 HANDLE_DW_OP(0x56, reg6, 2, DWARF)
    523 HANDLE_DW_OP(0x57, reg7, 2, DWARF)
    524 HANDLE_DW_OP(0x58, reg8, 2, DWARF)
    525 HANDLE_DW_OP(0x59, reg9, 2, DWARF)
    526 HANDLE_DW_OP(0x5a, reg10, 2, DWARF)
    527 HANDLE_DW_OP(0x5b, reg11, 2, DWARF)
    528 HANDLE_DW_OP(0x5c, reg12, 2, DWARF)
    529 HANDLE_DW_OP(0x5d, reg13, 2, DWARF)
    530 HANDLE_DW_OP(0x5e, reg14, 2, DWARF)
    531 HANDLE_DW_OP(0x5f, reg15, 2, DWARF)
    532 HANDLE_DW_OP(0x60, reg16, 2, DWARF)
    533 HANDLE_DW_OP(0x61, reg17, 2, DWARF)
    534 HANDLE_DW_OP(0x62, reg18, 2, DWARF)
    535 HANDLE_DW_OP(0x63, reg19, 2, DWARF)
    536 HANDLE_DW_OP(0x64, reg20, 2, DWARF)
    537 HANDLE_DW_OP(0x65, reg21, 2, DWARF)
    538 HANDLE_DW_OP(0x66, reg22, 2, DWARF)
    539 HANDLE_DW_OP(0x67, reg23, 2, DWARF)
    540 HANDLE_DW_OP(0x68, reg24, 2, DWARF)
    541 HANDLE_DW_OP(0x69, reg25, 2, DWARF)
    542 HANDLE_DW_OP(0x6a, reg26, 2, DWARF)
    543 HANDLE_DW_OP(0x6b, reg27, 2, DWARF)
    544 HANDLE_DW_OP(0x6c, reg28, 2, DWARF)
    545 HANDLE_DW_OP(0x6d, reg29, 2, DWARF)
    546 HANDLE_DW_OP(0x6e, reg30, 2, DWARF)
    547 HANDLE_DW_OP(0x6f, reg31, 2, DWARF)
    548 HANDLE_DW_OP(0x70, breg0, 2, DWARF)
    549 HANDLE_DW_OP(0x71, breg1, 2, DWARF)
    550 HANDLE_DW_OP(0x72, breg2, 2, DWARF)
    551 HANDLE_DW_OP(0x73, breg3, 2, DWARF)
    552 HANDLE_DW_OP(0x74, breg4, 2, DWARF)
    553 HANDLE_DW_OP(0x75, breg5, 2, DWARF)
    554 HANDLE_DW_OP(0x76, breg6, 2, DWARF)
    555 HANDLE_DW_OP(0x77, breg7, 2, DWARF)
    556 HANDLE_DW_OP(0x78, breg8, 2, DWARF)
    557 HANDLE_DW_OP(0x79, breg9, 2, DWARF)
    558 HANDLE_DW_OP(0x7a, breg10, 2, DWARF)
    559 HANDLE_DW_OP(0x7b, breg11, 2, DWARF)
    560 HANDLE_DW_OP(0x7c, breg12, 2, DWARF)
    561 HANDLE_DW_OP(0x7d, breg13, 2, DWARF)
    562 HANDLE_DW_OP(0x7e, breg14, 2, DWARF)
    563 HANDLE_DW_OP(0x7f, breg15, 2, DWARF)
    564 HANDLE_DW_OP(0x80, breg16, 2, DWARF)
    565 HANDLE_DW_OP(0x81, breg17, 2, DWARF)
    566 HANDLE_DW_OP(0x82, breg18, 2, DWARF)
    567 HANDLE_DW_OP(0x83, breg19, 2, DWARF)
    568 HANDLE_DW_OP(0x84, breg20, 2, DWARF)
    569 HANDLE_DW_OP(0x85, breg21, 2, DWARF)
    570 HANDLE_DW_OP(0x86, breg22, 2, DWARF)
    571 HANDLE_DW_OP(0x87, breg23, 2, DWARF)
    572 HANDLE_DW_OP(0x88, breg24, 2, DWARF)
    573 HANDLE_DW_OP(0x89, breg25, 2, DWARF)
    574 HANDLE_DW_OP(0x8a, breg26, 2, DWARF)
    575 HANDLE_DW_OP(0x8b, breg27, 2, DWARF)
    576 HANDLE_DW_OP(0x8c, breg28, 2, DWARF)
    577 HANDLE_DW_OP(0x8d, breg29, 2, DWARF)
    578 HANDLE_DW_OP(0x8e, breg30, 2, DWARF)
    579 HANDLE_DW_OP(0x8f, breg31, 2, DWARF)
    580 HANDLE_DW_OP(0x90, regx, 2, DWARF)
    581 HANDLE_DW_OP(0x91, fbreg, 2, DWARF)
    582 HANDLE_DW_OP(0x92, bregx, 2, DWARF)
    583 HANDLE_DW_OP(0x93, piece, 2, DWARF)
    584 HANDLE_DW_OP(0x94, deref_size, 2, DWARF)
    585 HANDLE_DW_OP(0x95, xderef_size, 2, DWARF)
    586 HANDLE_DW_OP(0x96, nop, 2, DWARF)
    587 // New in DWARF v3:
    588 HANDLE_DW_OP(0x97, push_object_address, 3, DWARF)
    589 HANDLE_DW_OP(0x98, call2, 3, DWARF)
    590 HANDLE_DW_OP(0x99, call4, 3, DWARF)
    591 HANDLE_DW_OP(0x9a, call_ref, 3, DWARF)
    592 HANDLE_DW_OP(0x9b, form_tls_address, 3, DWARF)
    593 HANDLE_DW_OP(0x9c, call_frame_cfa, 3, DWARF)
    594 HANDLE_DW_OP(0x9d, bit_piece, 3, DWARF)
    595 // New in DWARF v4:
    596 HANDLE_DW_OP(0x9e, implicit_value, 4, DWARF)
    597 HANDLE_DW_OP(0x9f, stack_value, 4, DWARF)
    598 // New in DWARF v5:
    599 HANDLE_DW_OP(0xa0, implicit_pointer, 5, DWARF)
    600 HANDLE_DW_OP(0xa1, addrx, 5, DWARF)
    601 HANDLE_DW_OP(0xa2, constx, 5, DWARF)
    602 HANDLE_DW_OP(0xa3, entry_value, 5, DWARF)
    603 HANDLE_DW_OP(0xa4, const_type, 5, DWARF)
    604 HANDLE_DW_OP(0xa5, regval_type, 5, DWARF)
    605 HANDLE_DW_OP(0xa6, deref_type, 5, DWARF)
    606 HANDLE_DW_OP(0xa7, xderef_type, 5, DWARF)
    607 HANDLE_DW_OP(0xa8, convert, 5, DWARF)
    608 HANDLE_DW_OP(0xa9, reinterpret, 5, DWARF)
    609 // Vendor extensions:
    610 // Extensions for GNU-style thread-local storage.
    611 HANDLE_DW_OP(0xe0, GNU_push_tls_address, 0, GNU)
    612 // Extensions for Fission proposal.
    613 HANDLE_DW_OP(0xfb, GNU_addr_index, 0, GNU)
    614 HANDLE_DW_OP(0xfc, GNU_const_index, 0, GNU)
    615 
    616 // DWARF languages.
    617 HANDLE_DW_LANG(0x0001, C89, 2, DWARF)
    618 HANDLE_DW_LANG(0x0002, C, 2, DWARF)
    619 HANDLE_DW_LANG(0x0003, Ada83, 2, DWARF)
    620 HANDLE_DW_LANG(0x0004, C_plus_plus, 2, DWARF)
    621 HANDLE_DW_LANG(0x0005, Cobol74, 2, DWARF)
    622 HANDLE_DW_LANG(0x0006, Cobol85, 2, DWARF)
    623 HANDLE_DW_LANG(0x0007, Fortran77, 2, DWARF)
    624 HANDLE_DW_LANG(0x0008, Fortran90, 2, DWARF)
    625 HANDLE_DW_LANG(0x0009, Pascal83, 2, DWARF)
    626 HANDLE_DW_LANG(0x000a, Modula2, 2, DWARF)
    627 // New in DWARF v3:
    628 HANDLE_DW_LANG(0x000b, Java, 3, DWARF)
    629 HANDLE_DW_LANG(0x000c, C99, 3, DWARF)
    630 HANDLE_DW_LANG(0x000d, Ada95, 3, DWARF)
    631 HANDLE_DW_LANG(0x000e, Fortran95, 3, DWARF)
    632 HANDLE_DW_LANG(0x000f, PLI, 3, DWARF)
    633 HANDLE_DW_LANG(0x0010, ObjC, 3, DWARF)
    634 HANDLE_DW_LANG(0x0011, ObjC_plus_plus, 3, DWARF)
    635 HANDLE_DW_LANG(0x0012, UPC, 3, DWARF)
    636 HANDLE_DW_LANG(0x0013, D, 3, DWARF)
    637 // New in DWARF v4:
    638 HANDLE_DW_LANG(0x0014, Python, 4, DWARF)
    639 // New in DWARF v5:
    640 HANDLE_DW_LANG(0x0015, OpenCL, 5, DWARF)
    641 HANDLE_DW_LANG(0x0016, Go, 5, DWARF)
    642 HANDLE_DW_LANG(0x0017, Modula3, 5, DWARF)
    643 HANDLE_DW_LANG(0x0018, Haskell, 5, DWARF)
    644 HANDLE_DW_LANG(0x0019, C_plus_plus_03, 5, DWARF)
    645 HANDLE_DW_LANG(0x001a, C_plus_plus_11, 5, DWARF)
    646 HANDLE_DW_LANG(0x001b, OCaml, 5, DWARF)
    647 HANDLE_DW_LANG(0x001c, Rust, 5, DWARF)
    648 HANDLE_DW_LANG(0x001d, C11, 5, DWARF)
    649 HANDLE_DW_LANG(0x001e, Swift, 5, DWARF)
    650 HANDLE_DW_LANG(0x001f, Julia, 5, DWARF)
    651 HANDLE_DW_LANG(0x0020, Dylan, 5, DWARF)
    652 HANDLE_DW_LANG(0x0021, C_plus_plus_14, 5, DWARF)
    653 HANDLE_DW_LANG(0x0022, Fortran03, 5, DWARF)
    654 HANDLE_DW_LANG(0x0023, Fortran08, 5, DWARF)
    655 HANDLE_DW_LANG(0x0024, RenderScript, 5, DWARF)
    656 HANDLE_DW_LANG(0x0025, BLISS, 5, DWARF)
    657 // Vendor extensions:
    658 HANDLE_DW_LANG(0x8001, Mips_Assembler, 0, MIPS)
    659 HANDLE_DW_LANG(0x8e57, GOOGLE_RenderScript, 0, GOOGLE)
    660 HANDLE_DW_LANG(0xb000, BORLAND_Delphi, 0, BORLAND)
    661 
    662 // DWARF attribute type encodings.
    663 HANDLE_DW_ATE(0x01, address, 2, DWARF)
    664 HANDLE_DW_ATE(0x02, boolean, 2, DWARF)
    665 HANDLE_DW_ATE(0x03, complex_float, 2, DWARF)
    666 HANDLE_DW_ATE(0x04, float, 2, DWARF)
    667 HANDLE_DW_ATE(0x05, signed, 2, DWARF)
    668 HANDLE_DW_ATE(0x06, signed_char, 2, DWARF)
    669 HANDLE_DW_ATE(0x07, unsigned, 2, DWARF)
    670 HANDLE_DW_ATE(0x08, unsigned_char, 2, DWARF)
    671 // New in DWARF v3:
    672 HANDLE_DW_ATE(0x09, imaginary_float, 3, DWARF)
    673 HANDLE_DW_ATE(0x0a, packed_decimal, 3, DWARF)
    674 HANDLE_DW_ATE(0x0b, numeric_string, 3, DWARF)
    675 HANDLE_DW_ATE(0x0c, edited, 3, DWARF)
    676 HANDLE_DW_ATE(0x0d, signed_fixed, 3, DWARF)
    677 HANDLE_DW_ATE(0x0e, unsigned_fixed, 3, DWARF)
    678 HANDLE_DW_ATE(0x0f, decimal_float, 3, DWARF)
    679 // New in DWARF v4:
    680 HANDLE_DW_ATE(0x10, UTF, 4, DWARF)
    681 // New in DWARF v5:
    682 HANDLE_DW_ATE(0x11, UCS, 5, DWARF)
    683 HANDLE_DW_ATE(0x12, ASCII, 5, DWARF)
    684 
    685 // DWARF virtuality codes.
    686 HANDLE_DW_VIRTUALITY(0x00, none)
    687 HANDLE_DW_VIRTUALITY(0x01, virtual)
    688 HANDLE_DW_VIRTUALITY(0x02, pure_virtual)
    689 
    690 // DWARF v5 Defaulted Member Encodings.
    691 HANDLE_DW_DEFAULTED(0x00, no)
    692 HANDLE_DW_DEFAULTED(0x01, in_class)
    693 HANDLE_DW_DEFAULTED(0x02, out_of_class)
    694 
    695 // DWARF calling convention codes.
    696 HANDLE_DW_CC(0x01, normal)
    697 HANDLE_DW_CC(0x02, program)
    698 HANDLE_DW_CC(0x03, nocall)
    699 // New in DWARF v5:
    700 HANDLE_DW_CC(0x04, pass_by_reference)
    701 HANDLE_DW_CC(0x05, pass_by_value)
    702 // Vendor extensions:
    703 HANDLE_DW_CC(0x41, GNU_borland_fastcall_i386)
    704 HANDLE_DW_CC(0xb0, BORLAND_safecall)
    705 HANDLE_DW_CC(0xb1, BORLAND_stdcall)
    706 HANDLE_DW_CC(0xb2, BORLAND_pascal)
    707 HANDLE_DW_CC(0xb3, BORLAND_msfastcall)
    708 HANDLE_DW_CC(0xb4, BORLAND_msreturn)
    709 HANDLE_DW_CC(0xb5, BORLAND_thiscall)
    710 HANDLE_DW_CC(0xb6, BORLAND_fastcall)
    711 HANDLE_DW_CC(0xc0, LLVM_vectorcall)
    712 
    713 // Line Number Extended Opcode Encodings
    714 HANDLE_DW_LNE(0x01, end_sequence)
    715 HANDLE_DW_LNE(0x02, set_address)
    716 HANDLE_DW_LNE(0x03, define_file)
    717 // New in DWARF v4:
    718 HANDLE_DW_LNE(0x04, set_discriminator)
    719 
    720 // Line Number Standard Opcode Encodings.
    721 HANDLE_DW_LNS(0x00, extended_op)
    722 HANDLE_DW_LNS(0x01, copy)
    723 HANDLE_DW_LNS(0x02, advance_pc)
    724 HANDLE_DW_LNS(0x03, advance_line)
    725 HANDLE_DW_LNS(0x04, set_file)
    726 HANDLE_DW_LNS(0x05, set_column)
    727 HANDLE_DW_LNS(0x06, negate_stmt)
    728 HANDLE_DW_LNS(0x07, set_basic_block)
    729 HANDLE_DW_LNS(0x08, const_add_pc)
    730 HANDLE_DW_LNS(0x09, fixed_advance_pc)
    731 // New in DWARF v3:
    732 HANDLE_DW_LNS(0x0a, set_prologue_end)
    733 HANDLE_DW_LNS(0x0b, set_epilogue_begin)
    734 HANDLE_DW_LNS(0x0c, set_isa)
    735 
    736 // DWARF v5 Line number header entry format.
    737 HANDLE_DW_LNCT(0x01, path)
    738 HANDLE_DW_LNCT(0x02, directory_index)
    739 HANDLE_DW_LNCT(0x03, timestamp)
    740 HANDLE_DW_LNCT(0x04, size)
    741 HANDLE_DW_LNCT(0x05, MD5)
    742 
    743 // DWARF v5 Macro information.
    744 HANDLE_DW_MACRO(0x01, define)
    745 HANDLE_DW_MACRO(0x02, undef)
    746 HANDLE_DW_MACRO(0x03, start_file)
    747 HANDLE_DW_MACRO(0x04, end_file)
    748 HANDLE_DW_MACRO(0x05, define_strp)
    749 HANDLE_DW_MACRO(0x06, undef_strp)
    750 HANDLE_DW_MACRO(0x07, import)
    751 HANDLE_DW_MACRO(0x08, define_sup)
    752 HANDLE_DW_MACRO(0x09, undef_sup)
    753 HANDLE_DW_MACRO(0x0a, import_sup)
    754 HANDLE_DW_MACRO(0x0b, define_strx)
    755 HANDLE_DW_MACRO(0x0c, undef_strx)
    756 
    757 // DWARF v5 Range List Entry encoding values.
    758 HANDLE_DW_RLE(0x00, end_of_list)
    759 HANDLE_DW_RLE(0x01, base_addressx)
    760 HANDLE_DW_RLE(0x02, startx_endx)
    761 HANDLE_DW_RLE(0x03, startx_length)
    762 HANDLE_DW_RLE(0x04, offset_pair)
    763 HANDLE_DW_RLE(0x05, base_address)
    764 HANDLE_DW_RLE(0x06, start_end)
    765 HANDLE_DW_RLE(0x07, start_length)
    766 
    767 // Call frame instruction encodings.
    768 HANDLE_DW_CFA(0x00, nop)
    769 HANDLE_DW_CFA(0x40, advance_loc)
    770 HANDLE_DW_CFA(0x80, offset)
    771 HANDLE_DW_CFA(0xc0, restore)
    772 HANDLE_DW_CFA(0x01, set_loc)
    773 HANDLE_DW_CFA(0x02, advance_loc1)
    774 HANDLE_DW_CFA(0x03, advance_loc2)
    775 HANDLE_DW_CFA(0x04, advance_loc4)
    776 HANDLE_DW_CFA(0x05, offset_extended)
    777 HANDLE_DW_CFA(0x06, restore_extended)
    778 HANDLE_DW_CFA(0x07, undefined)
    779 HANDLE_DW_CFA(0x08, same_value)
    780 HANDLE_DW_CFA(0x09, register)
    781 HANDLE_DW_CFA(0x0a, remember_state)
    782 HANDLE_DW_CFA(0x0b, restore_state)
    783 HANDLE_DW_CFA(0x0c, def_cfa)
    784 HANDLE_DW_CFA(0x0d, def_cfa_register)
    785 HANDLE_DW_CFA(0x0e, def_cfa_offset)
    786 // New in DWARF v3:
    787 HANDLE_DW_CFA(0x0f, def_cfa_expression)
    788 HANDLE_DW_CFA(0x10, expression)
    789 HANDLE_DW_CFA(0x11, offset_extended_sf)
    790 HANDLE_DW_CFA(0x12, def_cfa_sf)
    791 HANDLE_DW_CFA(0x13, def_cfa_offset_sf)
    792 HANDLE_DW_CFA(0x14, val_offset)
    793 HANDLE_DW_CFA(0x15, val_offset_sf)
    794 HANDLE_DW_CFA(0x16, val_expression)
    795 // Vendor extensions:
    796 HANDLE_DW_CFA(0x1d, MIPS_advance_loc8)
    797 HANDLE_DW_CFA(0x2d, GNU_window_save)
    798 HANDLE_DW_CFA(0x2e, GNU_args_size)
    799 
    800 // Apple Objective-C Property Attributes.
    801 // Keep this list in sync with clang's DeclSpec.h ObjCPropertyAttributeKind!
    802 HANDLE_DW_APPLE_PROPERTY(0x01, readonly)
    803 HANDLE_DW_APPLE_PROPERTY(0x02, getter)
    804 HANDLE_DW_APPLE_PROPERTY(0x04, assign)
    805 HANDLE_DW_APPLE_PROPERTY(0x08, readwrite)
    806 HANDLE_DW_APPLE_PROPERTY(0x10, retain)
    807 HANDLE_DW_APPLE_PROPERTY(0x20, copy)
    808 HANDLE_DW_APPLE_PROPERTY(0x40, nonatomic)
    809 HANDLE_DW_APPLE_PROPERTY(0x80, setter)
    810 HANDLE_DW_APPLE_PROPERTY(0x100, atomic)
    811 HANDLE_DW_APPLE_PROPERTY(0x200, weak)
    812 HANDLE_DW_APPLE_PROPERTY(0x400, strong)
    813 HANDLE_DW_APPLE_PROPERTY(0x800, unsafe_unretained)
    814 HANDLE_DW_APPLE_PROPERTY(0x1000, nullability)
    815 HANDLE_DW_APPLE_PROPERTY(0x2000, null_resettable)
    816 HANDLE_DW_APPLE_PROPERTY(0x4000, class)
    817 
    818 // DWARF v5 Unit Types.
    819 HANDLE_DW_UT(0x01, compile)
    820 HANDLE_DW_UT(0x02, type)
    821 HANDLE_DW_UT(0x03, partial)
    822 HANDLE_DW_UT(0x04, skeleton)
    823 HANDLE_DW_UT(0x05, split_compile)
    824 HANDLE_DW_UT(0x06, split_type)
    825 
    826 // DWARF section types. (enum name, ELF name, ELF DWO name, cmdline name)
    827 // Note that these IDs don't mean anything.
    828 // TODO: Add Mach-O and COFF names.
    829 // Official DWARF sections.
    830 HANDLE_DWARF_SECTION(DebugAbbrev, ".debug_abbrev", "debug-abbrev")
    831 HANDLE_DWARF_SECTION(DebugAranges, ".debug_aranges", "debug-aranges")
    832 HANDLE_DWARF_SECTION(DebugInfo, ".debug_info", "debug-info")
    833 HANDLE_DWARF_SECTION(DebugTypes, ".debug_types", "debug-types")
    834 HANDLE_DWARF_SECTION(DebugLine, ".debug_line", "debug-line")
    835 HANDLE_DWARF_SECTION(DebugLoc, ".debug_loc", "debug-loc")
    836 HANDLE_DWARF_SECTION(DebugFrame, ".debug_frame", "debug-frame")
    837 HANDLE_DWARF_SECTION(DebugMacro, ".debug_macro", "debug-macro")
    838 HANDLE_DWARF_SECTION(DebugRanges, ".debug_ranges", "debug-ranges")
    839 HANDLE_DWARF_SECTION(DebugPubnames, ".debug_pubnames", "debug-pubnames")
    840 HANDLE_DWARF_SECTION(DebugPubtypes, ".debug_pubtypes", "debug-pubtypes")
    841 HANDLE_DWARF_SECTION(DebugGnuPubnames, ".debug_gnu_pubnames", "debug-gnu-pubnames")
    842 HANDLE_DWARF_SECTION(DebugGnuPubtypes, ".debug_gnu_pubtypes", "debug-gnu-pubtypes")
    843 HANDLE_DWARF_SECTION(DebugStr, ".debug_str", "debug-str")
    844 HANDLE_DWARF_SECTION(DebugStrOffsets, ".debug_str_offsets", "debug-str-offsets")
    845 HANDLE_DWARF_SECTION(DebugCUIndex, ".debug_cu_index", "debug-cu-index")
    846 HANDLE_DWARF_SECTION(DebugTUIndex, ".debug_tu_index", "debug-tu-index")
    847 // Vendor extensions.
    848 HANDLE_DWARF_SECTION(AppleNames, ".apple_names", "apple-names")
    849 HANDLE_DWARF_SECTION(AppleTypes, ".apple_types", "apple-types")
    850 HANDLE_DWARF_SECTION(AppleNamespaces, ".apple_namespaces", "apple-namespaces")
    851 HANDLE_DWARF_SECTION(AppleObjC, ".apple_objc", "apple-objc")
    852 HANDLE_DWARF_SECTION(GdbIndex, ".gdb_index", "gdb-index")
    853 
    854 
    855 #undef HANDLE_DW_TAG
    856 #undef HANDLE_DW_AT
    857 #undef HANDLE_DW_FORM
    858 #undef HANDLE_DW_OP
    859 #undef HANDLE_DW_LANG
    860 #undef HANDLE_DW_ATE
    861 #undef HANDLE_DW_VIRTUALITY
    862 #undef HANDLE_DW_DEFAULTED
    863 #undef HANDLE_DW_CC
    864 #undef HANDLE_DW_LNS
    865 #undef HANDLE_DW_LNE
    866 #undef HANDLE_DW_LNCT
    867 #undef HANDLE_DW_MACRO
    868 #undef HANDLE_DW_RLE
    869 #undef HANDLE_DW_CFA
    870 #undef HANDLE_DW_APPLE_PROPERTY
    871 #undef HANDLE_DW_UT
    872 #undef HANDLE_DWARF_SECTION
    873