diff options
Diffstat (limited to 'include/llvm/BinaryFormat/Dwarf.def')
-rw-r--r-- | include/llvm/BinaryFormat/Dwarf.def | 198 |
1 files changed, 112 insertions, 86 deletions
diff --git a/include/llvm/BinaryFormat/Dwarf.def b/include/llvm/BinaryFormat/Dwarf.def index b0f78d0fd61f..34a7410f7474 100644 --- a/include/llvm/BinaryFormat/Dwarf.def +++ b/include/llvm/BinaryFormat/Dwarf.def @@ -17,7 +17,7 @@ defined HANDLE_DW_VIRTUALITY || defined HANDLE_DW_DEFAULTED || \ defined HANDLE_DW_CC || defined HANDLE_DW_LNS || defined HANDLE_DW_LNE || \ defined HANDLE_DW_LNCT || defined HANDLE_DW_MACRO || \ - defined HANDLE_DW_RLE || \ + defined HANDLE_DW_RLE || defined HANDLE_DW_LLE || \ (defined HANDLE_DW_CFA && defined HANDLE_DW_CFA_PRED) || \ defined HANDLE_DW_APPLE_PROPERTY || defined HANDLE_DW_UT || \ defined HANDLE_DWARF_SECTION || defined HANDLE_DW_IDX || \ @@ -26,7 +26,17 @@ #endif #ifndef HANDLE_DW_TAG -#define HANDLE_DW_TAG(ID, NAME, VERSION, VENDOR) +#define HANDLE_DW_TAG(ID, NAME, VERSION, VENDOR, KIND) +#endif + +// Note that DW_KIND is not a DWARF concept, but rather a way for us to +// generate a list of tags that belong together. +#ifndef DW_KIND_NONE +#define DW_KIND_NONE 0 +#endif + +#ifndef DW_KIND_TYPE +#define DW_KIND_TYPE 1 #endif #ifndef HANDLE_DW_AT @@ -81,6 +91,10 @@ #define HANDLE_DW_RLE(ID, NAME) #endif +#ifndef HANDLE_DW_LLE +#define HANDLE_DW_LLE(ID, NAME) +#endif + #ifndef HANDLE_DW_CFA #define HANDLE_DW_CFA(ID, NAME) #endif @@ -109,94 +123,94 @@ #define HANDLE_DW_END(ID, NAME) #endif -HANDLE_DW_TAG(0x0000, null, 2, DWARF) -HANDLE_DW_TAG(0x0001, array_type, 2, DWARF) -HANDLE_DW_TAG(0x0002, class_type, 2, DWARF) -HANDLE_DW_TAG(0x0003, entry_point, 2, DWARF) -HANDLE_DW_TAG(0x0004, enumeration_type, 2, DWARF) -HANDLE_DW_TAG(0x0005, formal_parameter, 2, DWARF) -HANDLE_DW_TAG(0x0008, imported_declaration, 2, DWARF) -HANDLE_DW_TAG(0x000a, label, 2, DWARF) -HANDLE_DW_TAG(0x000b, lexical_block, 2, DWARF) -HANDLE_DW_TAG(0x000d, member, 2, DWARF) -HANDLE_DW_TAG(0x000f, pointer_type, 2, DWARF) -HANDLE_DW_TAG(0x0010, reference_type, 2, DWARF) -HANDLE_DW_TAG(0x0011, compile_unit, 2, DWARF) -HANDLE_DW_TAG(0x0012, string_type, 2, DWARF) -HANDLE_DW_TAG(0x0013, structure_type, 2, DWARF) -HANDLE_DW_TAG(0x0015, subroutine_type, 2, DWARF) -HANDLE_DW_TAG(0x0016, typedef, 2, DWARF) -HANDLE_DW_TAG(0x0017, union_type, 2, DWARF) -HANDLE_DW_TAG(0x0018, unspecified_parameters, 2, DWARF) -HANDLE_DW_TAG(0x0019, variant, 2, DWARF) -HANDLE_DW_TAG(0x001a, common_block, 2, DWARF) -HANDLE_DW_TAG(0x001b, common_inclusion, 2, DWARF) -HANDLE_DW_TAG(0x001c, inheritance, 2, DWARF) -HANDLE_DW_TAG(0x001d, inlined_subroutine, 2, DWARF) -HANDLE_DW_TAG(0x001e, module, 2, DWARF) -HANDLE_DW_TAG(0x001f, ptr_to_member_type, 2, DWARF) -HANDLE_DW_TAG(0x0020, set_type, 2, DWARF) -HANDLE_DW_TAG(0x0021, subrange_type, 2, DWARF) -HANDLE_DW_TAG(0x0022, with_stmt, 2, DWARF) -HANDLE_DW_TAG(0x0023, access_declaration, 2, DWARF) -HANDLE_DW_TAG(0x0024, base_type, 2, DWARF) -HANDLE_DW_TAG(0x0025, catch_block, 2, DWARF) -HANDLE_DW_TAG(0x0026, const_type, 2, DWARF) -HANDLE_DW_TAG(0x0027, constant, 2, DWARF) -HANDLE_DW_TAG(0x0028, enumerator, 2, DWARF) -HANDLE_DW_TAG(0x0029, file_type, 2, DWARF) -HANDLE_DW_TAG(0x002a, friend, 2, DWARF) -HANDLE_DW_TAG(0x002b, namelist, 2, DWARF) -HANDLE_DW_TAG(0x002c, namelist_item, 2, DWARF) -HANDLE_DW_TAG(0x002d, packed_type, 2, DWARF) -HANDLE_DW_TAG(0x002e, subprogram, 2, DWARF) -HANDLE_DW_TAG(0x002f, template_type_parameter, 2, DWARF) -HANDLE_DW_TAG(0x0030, template_value_parameter, 2, DWARF) -HANDLE_DW_TAG(0x0031, thrown_type, 2, DWARF) -HANDLE_DW_TAG(0x0032, try_block, 2, DWARF) -HANDLE_DW_TAG(0x0033, variant_part, 2, DWARF) -HANDLE_DW_TAG(0x0034, variable, 2, DWARF) -HANDLE_DW_TAG(0x0035, volatile_type, 2, DWARF) +HANDLE_DW_TAG(0x0000, null, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x0001, array_type, 2, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x0002, class_type, 2, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x0003, entry_point, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x0004, enumeration_type, 2, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x0005, formal_parameter, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x0008, imported_declaration, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x000a, label, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x000b, lexical_block, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x000d, member, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x000f, pointer_type, 2, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x0010, reference_type, 2, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x0011, compile_unit, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x0012, string_type, 2, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x0013, structure_type, 2, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x0015, subroutine_type, 2, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x0016, typedef, 2, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x0017, union_type, 2, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x0018, unspecified_parameters, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x0019, variant, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x001a, common_block, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x001b, common_inclusion, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x001c, inheritance, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x001d, inlined_subroutine, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x001e, module, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x001f, ptr_to_member_type, 2, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x0020, set_type, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x0021, subrange_type, 2, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x0022, with_stmt, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x0023, access_declaration, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x0024, base_type, 2, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x0025, catch_block, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x0026, const_type, 2, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x0027, constant, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x0028, enumerator, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x0029, file_type, 2, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x002a, friend, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x002b, namelist, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x002c, namelist_item, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x002d, packed_type, 2, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x002e, subprogram, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x002f, template_type_parameter, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x0030, template_value_parameter, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x0031, thrown_type, 2, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x0032, try_block, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x0033, variant_part, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x0034, variable, 2, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x0035, volatile_type, 2, DWARF, DW_KIND_TYPE) // New in DWARF v3: -HANDLE_DW_TAG(0x0036, dwarf_procedure, 3, DWARF) -HANDLE_DW_TAG(0x0037, restrict_type, 3, DWARF) -HANDLE_DW_TAG(0x0038, interface_type, 3, DWARF) -HANDLE_DW_TAG(0x0039, namespace, 3, DWARF) -HANDLE_DW_TAG(0x003a, imported_module, 3, DWARF) -HANDLE_DW_TAG(0x003b, unspecified_type, 3, DWARF) -HANDLE_DW_TAG(0x003c, partial_unit, 3, DWARF) -HANDLE_DW_TAG(0x003d, imported_unit, 3, DWARF) -HANDLE_DW_TAG(0x003f, condition, 3, DWARF) -HANDLE_DW_TAG(0x0040, shared_type, 3, DWARF) +HANDLE_DW_TAG(0x0036, dwarf_procedure, 3, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x0037, restrict_type, 3, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x0038, interface_type, 3, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x0039, namespace, 3, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x003a, imported_module, 3, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x003b, unspecified_type, 3, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x003c, partial_unit, 3, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x003d, imported_unit, 3, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x003f, condition, 3, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x0040, shared_type, 3, DWARF, DW_KIND_TYPE) // New in DWARF v4: -HANDLE_DW_TAG(0x0041, type_unit, 4, DWARF) -HANDLE_DW_TAG(0x0042, rvalue_reference_type, 4, DWARF) -HANDLE_DW_TAG(0x0043, template_alias, 4, DWARF) +HANDLE_DW_TAG(0x0041, type_unit, 4, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x0042, rvalue_reference_type, 4, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x0043, template_alias, 4, DWARF, DW_KIND_NONE) // New in DWARF v5: -HANDLE_DW_TAG(0x0044, coarray_type, 5, DWARF) -HANDLE_DW_TAG(0x0045, generic_subrange, 5, DWARF) -HANDLE_DW_TAG(0x0046, dynamic_type, 5, DWARF) -HANDLE_DW_TAG(0x0047, atomic_type, 5, DWARF) -HANDLE_DW_TAG(0x0048, call_site, 5, DWARF) -HANDLE_DW_TAG(0x0049, call_site_parameter, 5, DWARF) -HANDLE_DW_TAG(0x004a, skeleton_unit, 5, DWARF) -HANDLE_DW_TAG(0x004b, immutable_type, 5, DWARF) +HANDLE_DW_TAG(0x0044, coarray_type, 5, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x0045, generic_subrange, 5, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x0046, dynamic_type, 5, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x0047, atomic_type, 5, DWARF, DW_KIND_TYPE) +HANDLE_DW_TAG(0x0048, call_site, 5, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x0049, call_site_parameter, 5, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x004a, skeleton_unit, 5, DWARF, DW_KIND_NONE) +HANDLE_DW_TAG(0x004b, immutable_type, 5, DWARF, DW_KIND_TYPE) // Vendor extensions: -HANDLE_DW_TAG(0x4081, MIPS_loop, 0, MIPS) -HANDLE_DW_TAG(0x4101, format_label, 0, GNU) -HANDLE_DW_TAG(0x4102, function_template, 0, GNU) -HANDLE_DW_TAG(0x4103, class_template, 0, GNU) -HANDLE_DW_TAG(0x4106, GNU_template_template_param, 0, GNU) -HANDLE_DW_TAG(0x4107, GNU_template_parameter_pack, 0, GNU) -HANDLE_DW_TAG(0x4108, GNU_formal_parameter_pack, 0, GNU) -HANDLE_DW_TAG(0x4109, GNU_call_site, 0, GNU) -HANDLE_DW_TAG(0x410a, GNU_call_site_parameter, 0, GNU) -HANDLE_DW_TAG(0x4200, APPLE_property, 0, APPLE) -HANDLE_DW_TAG(0xb000, BORLAND_property, 0, BORLAND) -HANDLE_DW_TAG(0xb001, BORLAND_Delphi_string, 0, BORLAND) -HANDLE_DW_TAG(0xb002, BORLAND_Delphi_dynamic_array, 0, BORLAND) -HANDLE_DW_TAG(0xb003, BORLAND_Delphi_set, 0, BORLAND) -HANDLE_DW_TAG(0xb004, BORLAND_Delphi_variant, 0, BORLAND) +HANDLE_DW_TAG(0x4081, MIPS_loop, 0, MIPS, DW_KIND_NONE) +HANDLE_DW_TAG(0x4101, format_label, 0, GNU, DW_KIND_NONE) +HANDLE_DW_TAG(0x4102, function_template, 0, GNU, DW_KIND_NONE) +HANDLE_DW_TAG(0x4103, class_template, 0, GNU, DW_KIND_NONE) +HANDLE_DW_TAG(0x4106, GNU_template_template_param, 0, GNU, DW_KIND_NONE) +HANDLE_DW_TAG(0x4107, GNU_template_parameter_pack, 0, GNU, DW_KIND_NONE) +HANDLE_DW_TAG(0x4108, GNU_formal_parameter_pack, 0, GNU, DW_KIND_NONE) +HANDLE_DW_TAG(0x4109, GNU_call_site, 0, GNU, DW_KIND_NONE) +HANDLE_DW_TAG(0x410a, GNU_call_site_parameter, 0, GNU, DW_KIND_NONE) +HANDLE_DW_TAG(0x4200, APPLE_property, 0, APPLE, DW_KIND_NONE) +HANDLE_DW_TAG(0xb000, BORLAND_property, 0, BORLAND, DW_KIND_NONE) +HANDLE_DW_TAG(0xb001, BORLAND_Delphi_string, 0, BORLAND, DW_KIND_TYPE) +HANDLE_DW_TAG(0xb002, BORLAND_Delphi_dynamic_array, 0, BORLAND, DW_KIND_TYPE) +HANDLE_DW_TAG(0xb003, BORLAND_Delphi_set, 0, BORLAND, DW_KIND_TYPE) +HANDLE_DW_TAG(0xb004, BORLAND_Delphi_variant, 0, BORLAND, DW_KIND_TYPE) // Attributes. HANDLE_DW_AT(0x01, sibling, 2, DWARF) @@ -815,6 +829,17 @@ HANDLE_DW_RLE(0x05, base_address) HANDLE_DW_RLE(0x06, start_end) HANDLE_DW_RLE(0x07, start_length) +// DWARF v5 Loc List Entry encoding values. +HANDLE_DW_LLE(0x00, end_of_list) +HANDLE_DW_LLE(0x01, base_addressx) +HANDLE_DW_LLE(0x02, startx_endx) +HANDLE_DW_LLE(0x03, startx_length) +HANDLE_DW_LLE(0x04, offset_pair) +HANDLE_DW_LLE(0x05, default_location) +HANDLE_DW_LLE(0x06, base_address) +HANDLE_DW_LLE(0x07, start_end) +HANDLE_DW_LLE(0x08, start_length) + // Call frame instruction encodings. HANDLE_DW_CFA(0x00, nop) HANDLE_DW_CFA(0x40, advance_loc) @@ -929,6 +954,7 @@ HANDLE_DW_IDX(0x05, type_hash) #undef HANDLE_DW_LNCT #undef HANDLE_DW_MACRO #undef HANDLE_DW_RLE +#undef HANDLE_DW_LLE #undef HANDLE_DW_CFA #undef HANDLE_DW_CFA_PRED #undef HANDLE_DW_APPLE_PROPERTY |