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