Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2024-05-18 08:29:48

0001 /* This file defines standard DWARF types, structures, and macros.
0002    Copyright (C) 2000-2011, 2014, 2016, 2017, 2018 Red Hat, Inc.
0003    This file is part of elfutils.
0004 
0005    This file is free software; you can redistribute it and/or modify
0006    it under the terms of either
0007 
0008      * the GNU Lesser General Public License as published by the Free
0009        Software Foundation; either version 3 of the License, or (at
0010        your option) any later version
0011 
0012    or
0013 
0014      * the GNU General Public License as published by the Free
0015        Software Foundation; either version 2 of the License, or (at
0016        your option) any later version
0017 
0018    or both in parallel, as here.
0019 
0020    elfutils is distributed in the hope that it will be useful, but
0021    WITHOUT ANY WARRANTY; without even the implied warranty of
0022    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0023    General Public License for more details.
0024 
0025    You should have received copies of the GNU General Public License and
0026    the GNU Lesser General Public License along with this program.  If
0027    not, see <http://www.gnu.org/licenses/>.  */
0028 
0029 #ifndef _DWARF_H
0030 #define _DWARF_H 1
0031 
0032 /* DWARF Unit Header Types.  */
0033 enum
0034   {
0035     DW_UT_compile = 0x01,
0036     DW_UT_type = 0x02,
0037     DW_UT_partial = 0x03,
0038     DW_UT_skeleton = 0x04,
0039     DW_UT_split_compile = 0x05,
0040     DW_UT_split_type = 0x06,
0041 
0042     DW_UT_lo_user = 0x80,
0043     DW_UT_hi_user = 0xff
0044   };
0045 
0046 /* DWARF tags.  */
0047 enum
0048   {
0049     DW_TAG_array_type = 0x01,
0050     DW_TAG_class_type = 0x02,
0051     DW_TAG_entry_point = 0x03,
0052     DW_TAG_enumeration_type = 0x04,
0053     DW_TAG_formal_parameter = 0x05,
0054     /* 0x06 reserved.  */
0055     /* 0x07 reserved.  */
0056     DW_TAG_imported_declaration = 0x08,
0057     /* 0x09 reserved.  */
0058     DW_TAG_label = 0x0a,
0059     DW_TAG_lexical_block = 0x0b,
0060     /* 0x0c reserved.  */
0061     DW_TAG_member = 0x0d,
0062     /* 0x0e reserved.  */
0063     DW_TAG_pointer_type = 0x0f,
0064     DW_TAG_reference_type = 0x10,
0065     DW_TAG_compile_unit = 0x11,
0066     DW_TAG_string_type = 0x12,
0067     DW_TAG_structure_type = 0x13,
0068     /* 0x14 reserved.  */
0069     DW_TAG_subroutine_type = 0x15,
0070     DW_TAG_typedef = 0x16,
0071     DW_TAG_union_type = 0x17,
0072     DW_TAG_unspecified_parameters = 0x18,
0073     DW_TAG_variant = 0x19,
0074     DW_TAG_common_block = 0x1a,
0075     DW_TAG_common_inclusion = 0x1b,
0076     DW_TAG_inheritance = 0x1c,
0077     DW_TAG_inlined_subroutine = 0x1d,
0078     DW_TAG_module = 0x1e,
0079     DW_TAG_ptr_to_member_type = 0x1f,
0080     DW_TAG_set_type = 0x20,
0081     DW_TAG_subrange_type = 0x21,
0082     DW_TAG_with_stmt = 0x22,
0083     DW_TAG_access_declaration = 0x23,
0084     DW_TAG_base_type = 0x24,
0085     DW_TAG_catch_block = 0x25,
0086     DW_TAG_const_type = 0x26,
0087     DW_TAG_constant = 0x27,
0088     DW_TAG_enumerator = 0x28,
0089     DW_TAG_file_type = 0x29,
0090     DW_TAG_friend = 0x2a,
0091     DW_TAG_namelist = 0x2b,
0092     DW_TAG_namelist_item = 0x2c,
0093     DW_TAG_packed_type = 0x2d,
0094     DW_TAG_subprogram = 0x2e,
0095     DW_TAG_template_type_parameter = 0x2f,
0096     DW_TAG_template_value_parameter = 0x30,
0097     DW_TAG_thrown_type = 0x31,
0098     DW_TAG_try_block = 0x32,
0099     DW_TAG_variant_part = 0x33,
0100     DW_TAG_variable = 0x34,
0101     DW_TAG_volatile_type = 0x35,
0102     DW_TAG_dwarf_procedure = 0x36,
0103     DW_TAG_restrict_type = 0x37,
0104     DW_TAG_interface_type = 0x38,
0105     DW_TAG_namespace = 0x39,
0106     DW_TAG_imported_module = 0x3a,
0107     DW_TAG_unspecified_type = 0x3b,
0108     DW_TAG_partial_unit = 0x3c,
0109     DW_TAG_imported_unit = 0x3d,
0110     /* 0x3e reserved.  Was DW_TAG_mutable_type.  */
0111     DW_TAG_condition = 0x3f,
0112     DW_TAG_shared_type = 0x40,
0113     DW_TAG_type_unit = 0x41,
0114     DW_TAG_rvalue_reference_type = 0x42,
0115     DW_TAG_template_alias = 0x43,
0116     DW_TAG_coarray_type = 0x44,
0117     DW_TAG_generic_subrange = 0x45,
0118     DW_TAG_dynamic_type = 0x46,
0119     DW_TAG_atomic_type = 0x47,
0120     DW_TAG_call_site = 0x48,
0121     DW_TAG_call_site_parameter = 0x49,
0122     DW_TAG_skeleton_unit = 0x4a,
0123     DW_TAG_immutable_type = 0x4b,
0124 
0125     DW_TAG_lo_user = 0x4080,
0126 
0127     DW_TAG_MIPS_loop = 0x4081,
0128     DW_TAG_format_label = 0x4101,
0129     DW_TAG_function_template = 0x4102,
0130     DW_TAG_class_template = 0x4103,
0131 
0132     DW_TAG_GNU_BINCL = 0x4104,
0133     DW_TAG_GNU_EINCL = 0x4105,
0134 
0135     DW_TAG_GNU_template_template_param = 0x4106,
0136     DW_TAG_GNU_template_parameter_pack = 0x4107,
0137     DW_TAG_GNU_formal_parameter_pack = 0x4108,
0138     DW_TAG_GNU_call_site = 0x4109,
0139     DW_TAG_GNU_call_site_parameter = 0x410a,
0140 
0141     DW_TAG_hi_user = 0xffff
0142   };
0143 
0144 
0145 /* Children determination encodings.  */
0146 enum
0147   {
0148     DW_CHILDREN_no = 0,
0149     DW_CHILDREN_yes = 1
0150   };
0151 
0152 
0153 /* DWARF attributes encodings.  */
0154 enum
0155   {
0156     DW_AT_sibling = 0x01,
0157     DW_AT_location = 0x02,
0158     DW_AT_name = 0x03,
0159     /* 0x04 reserved.  */
0160     /* 0x05 reserved.  */
0161     /* 0x06 reserved.  */
0162     /* 0x07 reserved.  */
0163     /* 0x08 reserved.  */
0164     DW_AT_ordering = 0x09,
0165     /* 0x0a reserved.  */
0166     DW_AT_byte_size = 0x0b,
0167     DW_AT_bit_offset = 0x0c,  /* Deprecated in DWARF4.  */
0168     DW_AT_bit_size = 0x0d,
0169     /* 0x0e reserved.  */
0170     /* 0x0f reserved.  */
0171     DW_AT_stmt_list = 0x10,
0172     DW_AT_low_pc = 0x11,
0173     DW_AT_high_pc = 0x12,
0174     DW_AT_language = 0x13,
0175     /* 0x14 reserved.  */
0176     DW_AT_discr = 0x15,
0177     DW_AT_discr_value = 0x16,
0178     DW_AT_visibility = 0x17,
0179     DW_AT_import = 0x18,
0180     DW_AT_string_length = 0x19,
0181     DW_AT_common_reference = 0x1a,
0182     DW_AT_comp_dir = 0x1b,
0183     DW_AT_const_value = 0x1c,
0184     DW_AT_containing_type = 0x1d,
0185     DW_AT_default_value = 0x1e,
0186     /* 0x1f reserved.  */
0187     DW_AT_inline = 0x20,
0188     DW_AT_is_optional = 0x21,
0189     DW_AT_lower_bound = 0x22,
0190     /* 0x23 reserved.  */
0191     /* 0x24 reserved.  */
0192     DW_AT_producer = 0x25,
0193     /* 0x26 reserved.  */
0194     DW_AT_prototyped = 0x27,
0195     /* 0x28 reserved.  */
0196     /* 0x29 reserved.  */
0197     DW_AT_return_addr = 0x2a,
0198     /* 0x2b reserved.  */
0199     DW_AT_start_scope = 0x2c,
0200     /* 0x2d reserved.  */
0201     DW_AT_bit_stride = 0x2e,
0202     DW_AT_upper_bound = 0x2f,
0203     /* 0x30 reserved.  */
0204     DW_AT_abstract_origin = 0x31,
0205     DW_AT_accessibility = 0x32,
0206     DW_AT_address_class = 0x33,
0207     DW_AT_artificial = 0x34,
0208     DW_AT_base_types = 0x35,
0209     DW_AT_calling_convention = 0x36,
0210     DW_AT_count = 0x37,
0211     DW_AT_data_member_location = 0x38,
0212     DW_AT_decl_column = 0x39,
0213     DW_AT_decl_file = 0x3a,
0214     DW_AT_decl_line = 0x3b,
0215     DW_AT_declaration = 0x3c,
0216     DW_AT_discr_list = 0x3d,
0217     DW_AT_encoding = 0x3e,
0218     DW_AT_external = 0x3f,
0219     DW_AT_frame_base = 0x40,
0220     DW_AT_friend = 0x41,
0221     DW_AT_identifier_case = 0x42,
0222     DW_AT_macro_info = 0x43, /* Deprecated in DWARF5.  */
0223     DW_AT_namelist_item = 0x44,
0224     DW_AT_priority = 0x45,
0225     DW_AT_segment = 0x46,
0226     DW_AT_specification = 0x47,
0227     DW_AT_static_link = 0x48,
0228     DW_AT_type = 0x49,
0229     DW_AT_use_location = 0x4a,
0230     DW_AT_variable_parameter = 0x4b,
0231     DW_AT_virtuality = 0x4c,
0232     DW_AT_vtable_elem_location = 0x4d,
0233     DW_AT_allocated = 0x4e,
0234     DW_AT_associated = 0x4f,
0235     DW_AT_data_location = 0x50,
0236     DW_AT_byte_stride = 0x51,
0237     DW_AT_entry_pc = 0x52,
0238     DW_AT_use_UTF8 = 0x53,
0239     DW_AT_extension = 0x54,
0240     DW_AT_ranges = 0x55,
0241     DW_AT_trampoline = 0x56,
0242     DW_AT_call_column = 0x57,
0243     DW_AT_call_file = 0x58,
0244     DW_AT_call_line = 0x59,
0245     DW_AT_description = 0x5a,
0246     DW_AT_binary_scale = 0x5b,
0247     DW_AT_decimal_scale = 0x5c,
0248     DW_AT_small = 0x5d,
0249     DW_AT_decimal_sign = 0x5e,
0250     DW_AT_digit_count = 0x5f,
0251     DW_AT_picture_string = 0x60,
0252     DW_AT_mutable = 0x61,
0253     DW_AT_threads_scaled = 0x62,
0254     DW_AT_explicit = 0x63,
0255     DW_AT_object_pointer = 0x64,
0256     DW_AT_endianity = 0x65,
0257     DW_AT_elemental = 0x66,
0258     DW_AT_pure = 0x67,
0259     DW_AT_recursive = 0x68,
0260     DW_AT_signature = 0x69,
0261     DW_AT_main_subprogram = 0x6a,
0262     DW_AT_data_bit_offset = 0x6b,
0263     DW_AT_const_expr = 0x6c,
0264     DW_AT_enum_class = 0x6d,
0265     DW_AT_linkage_name = 0x6e,
0266     DW_AT_string_length_bit_size = 0x6f,
0267     DW_AT_string_length_byte_size = 0x70,
0268     DW_AT_rank = 0x71,
0269     DW_AT_str_offsets_base = 0x72,
0270     DW_AT_addr_base = 0x73,
0271     DW_AT_rnglists_base = 0x74,
0272     /* 0x75 reserved.  */
0273     DW_AT_dwo_name = 0x76,
0274     DW_AT_reference = 0x77,
0275     DW_AT_rvalue_reference = 0x78,
0276     DW_AT_macros = 0x79,
0277     DW_AT_call_all_calls = 0x7a,
0278     DW_AT_call_all_source_calls = 0x7b,
0279     DW_AT_call_all_tail_calls = 0x7c,
0280     DW_AT_call_return_pc = 0x7d,
0281     DW_AT_call_value = 0x7e,
0282     DW_AT_call_origin = 0x7f,
0283     DW_AT_call_parameter = 0x80,
0284     DW_AT_call_pc = 0x81,
0285     DW_AT_call_tail_call = 0x82,
0286     DW_AT_call_target = 0x83,
0287     DW_AT_call_target_clobbered = 0x84,
0288     DW_AT_call_data_location = 0x85,
0289     DW_AT_call_data_value = 0x86,
0290     DW_AT_noreturn = 0x87,
0291     DW_AT_alignment = 0x88,
0292     DW_AT_export_symbols = 0x89,
0293     DW_AT_deleted = 0x8a,
0294     DW_AT_defaulted = 0x8b,
0295     DW_AT_loclists_base = 0x8c,
0296 
0297     DW_AT_lo_user = 0x2000,
0298 
0299     DW_AT_MIPS_fde = 0x2001,
0300     DW_AT_MIPS_loop_begin = 0x2002,
0301     DW_AT_MIPS_tail_loop_begin = 0x2003,
0302     DW_AT_MIPS_epilog_begin = 0x2004,
0303     DW_AT_MIPS_loop_unroll_factor = 0x2005,
0304     DW_AT_MIPS_software_pipeline_depth = 0x2006,
0305     DW_AT_MIPS_linkage_name = 0x2007,
0306     DW_AT_MIPS_stride = 0x2008,
0307     DW_AT_MIPS_abstract_name = 0x2009,
0308     DW_AT_MIPS_clone_origin = 0x200a,
0309     DW_AT_MIPS_has_inlines = 0x200b,
0310     DW_AT_MIPS_stride_byte = 0x200c,
0311     DW_AT_MIPS_stride_elem = 0x200d,
0312     DW_AT_MIPS_ptr_dopetype = 0x200e,
0313     DW_AT_MIPS_allocatable_dopetype = 0x200f,
0314     DW_AT_MIPS_assumed_shape_dopetype = 0x2010,
0315     DW_AT_MIPS_assumed_size = 0x2011,
0316 
0317     /* GNU extensions.  */
0318     DW_AT_sf_names = 0x2101,
0319     DW_AT_src_info = 0x2102,
0320     DW_AT_mac_info = 0x2103,
0321     DW_AT_src_coords = 0x2104,
0322     DW_AT_body_begin = 0x2105,
0323     DW_AT_body_end = 0x2106,
0324     DW_AT_GNU_vector = 0x2107,
0325     DW_AT_GNU_guarded_by = 0x2108,
0326     DW_AT_GNU_pt_guarded_by = 0x2109,
0327     DW_AT_GNU_guarded = 0x210a,
0328     DW_AT_GNU_pt_guarded = 0x210b,
0329     DW_AT_GNU_locks_excluded = 0x210c,
0330     DW_AT_GNU_exclusive_locks_required = 0x210d,
0331     DW_AT_GNU_shared_locks_required = 0x210e,
0332     DW_AT_GNU_odr_signature = 0x210f,
0333     DW_AT_GNU_template_name = 0x2110,
0334     DW_AT_GNU_call_site_value = 0x2111,
0335     DW_AT_GNU_call_site_data_value = 0x2112,
0336     DW_AT_GNU_call_site_target = 0x2113,
0337     DW_AT_GNU_call_site_target_clobbered = 0x2114,
0338     DW_AT_GNU_tail_call = 0x2115,
0339     DW_AT_GNU_all_tail_call_sites = 0x2116,
0340     DW_AT_GNU_all_call_sites = 0x2117,
0341     DW_AT_GNU_all_source_call_sites = 0x2118,
0342     DW_AT_GNU_locviews = 0x2137,
0343     DW_AT_GNU_entry_view = 0x2138,
0344     DW_AT_GNU_macros = 0x2119,
0345     DW_AT_GNU_deleted = 0x211a,
0346     /* GNU Debug Fission extensions.  */
0347     DW_AT_GNU_dwo_name = 0x2130,
0348     DW_AT_GNU_dwo_id = 0x2131,
0349     DW_AT_GNU_ranges_base = 0x2132,
0350     DW_AT_GNU_addr_base = 0x2133,
0351     DW_AT_GNU_pubnames = 0x2134,
0352     DW_AT_GNU_pubtypes = 0x2135,
0353 
0354     /* https://gcc.gnu.org/wiki/DW_AT_GNU_numerator_denominator  */
0355     DW_AT_GNU_numerator = 0x2303,
0356     DW_AT_GNU_denominator = 0x2304,
0357     /* https://gcc.gnu.org/wiki/DW_AT_GNU_bias  */
0358     DW_AT_GNU_bias = 0x2305,
0359 
0360     DW_AT_hi_user = 0x3fff
0361   };
0362 
0363 /* Old unofficially attribute names.  Should not be used.
0364    Will not appear in known-dwarf.h  */
0365 
0366 /* DWARF1 array subscripts and element data types.  */
0367 #define DW_AT_subscr_data   0x0a
0368 /* DWARF1 enumeration literals.  */
0369 #define DW_AT_element_list  0x0f
0370 /* DWARF1 reference for variable to member structure, class or union.  */
0371 #define DW_AT_member        0x14
0372 
0373 /* DWARF form encodings.  */
0374 enum
0375   {
0376     DW_FORM_addr = 0x01,
0377     DW_FORM_block2 = 0x03,
0378     DW_FORM_block4 = 0x04,
0379     DW_FORM_data2 = 0x05,
0380     DW_FORM_data4 = 0x06,
0381     DW_FORM_data8 = 0x07,
0382     DW_FORM_string = 0x08,
0383     DW_FORM_block = 0x09,
0384     DW_FORM_block1 = 0x0a,
0385     DW_FORM_data1 = 0x0b,
0386     DW_FORM_flag = 0x0c,
0387     DW_FORM_sdata = 0x0d,
0388     DW_FORM_strp = 0x0e,
0389     DW_FORM_udata = 0x0f,
0390     DW_FORM_ref_addr = 0x10,
0391     DW_FORM_ref1 = 0x11,
0392     DW_FORM_ref2 = 0x12,
0393     DW_FORM_ref4 = 0x13,
0394     DW_FORM_ref8 = 0x14,
0395     DW_FORM_ref_udata = 0x15,
0396     DW_FORM_indirect = 0x16,
0397     DW_FORM_sec_offset = 0x17,
0398     DW_FORM_exprloc = 0x18,
0399     DW_FORM_flag_present = 0x19,
0400     DW_FORM_strx = 0x1a,
0401     DW_FORM_addrx = 0x1b,
0402     DW_FORM_ref_sup4 = 0x1c,
0403     DW_FORM_strp_sup = 0x1d,
0404     DW_FORM_data16 = 0x1e,
0405     DW_FORM_line_strp = 0x1f,
0406     DW_FORM_ref_sig8 = 0x20,
0407     DW_FORM_implicit_const = 0x21,
0408     DW_FORM_loclistx = 0x22,
0409     DW_FORM_rnglistx = 0x23,
0410     DW_FORM_ref_sup8 = 0x24,
0411     DW_FORM_strx1 = 0x25,
0412     DW_FORM_strx2 = 0x26,
0413     DW_FORM_strx3 = 0x27,
0414     DW_FORM_strx4 = 0x28,
0415     DW_FORM_addrx1 = 0x29,
0416     DW_FORM_addrx2 = 0x2a,
0417     DW_FORM_addrx3 = 0x2b,
0418     DW_FORM_addrx4 = 0x2c,
0419 
0420     /* GNU Debug Fission extensions.  */
0421     DW_FORM_GNU_addr_index = 0x1f01,
0422     DW_FORM_GNU_str_index = 0x1f02,
0423 
0424     DW_FORM_GNU_ref_alt = 0x1f20, /* offset in alternate .debuginfo.  */
0425     DW_FORM_GNU_strp_alt = 0x1f21 /* offset in alternate .debug_str. */
0426   };
0427 
0428 
0429 /* DWARF location operation encodings.  */
0430 enum
0431   {
0432     DW_OP_addr = 0x03,      /* Constant address.  */
0433     DW_OP_deref = 0x06,
0434     DW_OP_const1u = 0x08,   /* Unsigned 1-byte constant.  */
0435     DW_OP_const1s = 0x09,   /* Signed 1-byte constant.  */
0436     DW_OP_const2u = 0x0a,   /* Unsigned 2-byte constant.  */
0437     DW_OP_const2s = 0x0b,   /* Signed 2-byte constant.  */
0438     DW_OP_const4u = 0x0c,   /* Unsigned 4-byte constant.  */
0439     DW_OP_const4s = 0x0d,   /* Signed 4-byte constant.  */
0440     DW_OP_const8u = 0x0e,   /* Unsigned 8-byte constant.  */
0441     DW_OP_const8s = 0x0f,   /* Signed 8-byte constant.  */
0442     DW_OP_constu = 0x10,    /* Unsigned LEB128 constant.  */
0443     DW_OP_consts = 0x11,    /* Signed LEB128 constant.  */
0444     DW_OP_dup = 0x12,
0445     DW_OP_drop = 0x13,
0446     DW_OP_over = 0x14,
0447     DW_OP_pick = 0x15,      /* 1-byte stack index.  */
0448     DW_OP_swap = 0x16,
0449     DW_OP_rot = 0x17,
0450     DW_OP_xderef = 0x18,
0451     DW_OP_abs = 0x19,
0452     DW_OP_and = 0x1a,
0453     DW_OP_div = 0x1b,
0454     DW_OP_minus = 0x1c,
0455     DW_OP_mod = 0x1d,
0456     DW_OP_mul = 0x1e,
0457     DW_OP_neg = 0x1f,
0458     DW_OP_not = 0x20,
0459     DW_OP_or = 0x21,
0460     DW_OP_plus = 0x22,
0461     DW_OP_plus_uconst = 0x23,   /* Unsigned LEB128 addend.  */
0462     DW_OP_shl = 0x24,
0463     DW_OP_shr = 0x25,
0464     DW_OP_shra = 0x26,
0465     DW_OP_xor = 0x27,
0466     DW_OP_bra = 0x28,       /* Signed 2-byte constant.  */
0467     DW_OP_eq = 0x29,
0468     DW_OP_ge = 0x2a,
0469     DW_OP_gt = 0x2b,
0470     DW_OP_le = 0x2c,
0471     DW_OP_lt = 0x2d,
0472     DW_OP_ne = 0x2e,
0473     DW_OP_skip = 0x2f,      /* Signed 2-byte constant.  */
0474     DW_OP_lit0 = 0x30,      /* Literal 0.  */
0475     DW_OP_lit1 = 0x31,      /* Literal 1.  */
0476     DW_OP_lit2 = 0x32,      /* Literal 2.  */
0477     DW_OP_lit3 = 0x33,      /* Literal 3.  */
0478     DW_OP_lit4 = 0x34,      /* Literal 4.  */
0479     DW_OP_lit5 = 0x35,      /* Literal 5.  */
0480     DW_OP_lit6 = 0x36,      /* Literal 6.  */
0481     DW_OP_lit7 = 0x37,      /* Literal 7.  */
0482     DW_OP_lit8 = 0x38,      /* Literal 8.  */
0483     DW_OP_lit9 = 0x39,      /* Literal 9.  */
0484     DW_OP_lit10 = 0x3a,     /* Literal 10.  */
0485     DW_OP_lit11 = 0x3b,     /* Literal 11.  */
0486     DW_OP_lit12 = 0x3c,     /* Literal 12.  */
0487     DW_OP_lit13 = 0x3d,     /* Literal 13.  */
0488     DW_OP_lit14 = 0x3e,     /* Literal 14.  */
0489     DW_OP_lit15 = 0x3f,     /* Literal 15.  */
0490     DW_OP_lit16 = 0x40,     /* Literal 16.  */
0491     DW_OP_lit17 = 0x41,     /* Literal 17.  */
0492     DW_OP_lit18 = 0x42,     /* Literal 18.  */
0493     DW_OP_lit19 = 0x43,     /* Literal 19.  */
0494     DW_OP_lit20 = 0x44,     /* Literal 20.  */
0495     DW_OP_lit21 = 0x45,     /* Literal 21.  */
0496     DW_OP_lit22 = 0x46,     /* Literal 22.  */
0497     DW_OP_lit23 = 0x47,     /* Literal 23.  */
0498     DW_OP_lit24 = 0x48,     /* Literal 24.  */
0499     DW_OP_lit25 = 0x49,     /* Literal 25.  */
0500     DW_OP_lit26 = 0x4a,     /* Literal 26.  */
0501     DW_OP_lit27 = 0x4b,     /* Literal 27.  */
0502     DW_OP_lit28 = 0x4c,     /* Literal 28.  */
0503     DW_OP_lit29 = 0x4d,     /* Literal 29.  */
0504     DW_OP_lit30 = 0x4e,     /* Literal 30.  */
0505     DW_OP_lit31 = 0x4f,     /* Literal 31.  */
0506     DW_OP_reg0 = 0x50,      /* Register 0.  */
0507     DW_OP_reg1 = 0x51,      /* Register 1.  */
0508     DW_OP_reg2 = 0x52,      /* Register 2.  */
0509     DW_OP_reg3 = 0x53,      /* Register 3.  */
0510     DW_OP_reg4 = 0x54,      /* Register 4.  */
0511     DW_OP_reg5 = 0x55,      /* Register 5.  */
0512     DW_OP_reg6 = 0x56,      /* Register 6.  */
0513     DW_OP_reg7 = 0x57,      /* Register 7.  */
0514     DW_OP_reg8 = 0x58,      /* Register 8.  */
0515     DW_OP_reg9 = 0x59,      /* Register 9.  */
0516     DW_OP_reg10 = 0x5a,     /* Register 10.  */
0517     DW_OP_reg11 = 0x5b,     /* Register 11.  */
0518     DW_OP_reg12 = 0x5c,     /* Register 12.  */
0519     DW_OP_reg13 = 0x5d,     /* Register 13.  */
0520     DW_OP_reg14 = 0x5e,     /* Register 14.  */
0521     DW_OP_reg15 = 0x5f,     /* Register 15.  */
0522     DW_OP_reg16 = 0x60,     /* Register 16.  */
0523     DW_OP_reg17 = 0x61,     /* Register 17.  */
0524     DW_OP_reg18 = 0x62,     /* Register 18.  */
0525     DW_OP_reg19 = 0x63,     /* Register 19.  */
0526     DW_OP_reg20 = 0x64,     /* Register 20.  */
0527     DW_OP_reg21 = 0x65,     /* Register 21.  */
0528     DW_OP_reg22 = 0x66,     /* Register 22.  */
0529     DW_OP_reg23 = 0x67,     /* Register 24.  */
0530     DW_OP_reg24 = 0x68,     /* Register 24.  */
0531     DW_OP_reg25 = 0x69,     /* Register 25.  */
0532     DW_OP_reg26 = 0x6a,     /* Register 26.  */
0533     DW_OP_reg27 = 0x6b,     /* Register 27.  */
0534     DW_OP_reg28 = 0x6c,     /* Register 28.  */
0535     DW_OP_reg29 = 0x6d,     /* Register 29.  */
0536     DW_OP_reg30 = 0x6e,     /* Register 30.  */
0537     DW_OP_reg31 = 0x6f,     /* Register 31.  */
0538     DW_OP_breg0 = 0x70,     /* Base register 0.  */
0539     DW_OP_breg1 = 0x71,     /* Base register 1.  */
0540     DW_OP_breg2 = 0x72,     /* Base register 2.  */
0541     DW_OP_breg3 = 0x73,     /* Base register 3.  */
0542     DW_OP_breg4 = 0x74,     /* Base register 4.  */
0543     DW_OP_breg5 = 0x75,     /* Base register 5.  */
0544     DW_OP_breg6 = 0x76,     /* Base register 6.  */
0545     DW_OP_breg7 = 0x77,     /* Base register 7.  */
0546     DW_OP_breg8 = 0x78,     /* Base register 8.  */
0547     DW_OP_breg9 = 0x79,     /* Base register 9.  */
0548     DW_OP_breg10 = 0x7a,    /* Base register 10.  */
0549     DW_OP_breg11 = 0x7b,    /* Base register 11.  */
0550     DW_OP_breg12 = 0x7c,    /* Base register 12.  */
0551     DW_OP_breg13 = 0x7d,    /* Base register 13.  */
0552     DW_OP_breg14 = 0x7e,    /* Base register 14.  */
0553     DW_OP_breg15 = 0x7f,    /* Base register 15.  */
0554     DW_OP_breg16 = 0x80,    /* Base register 16.  */
0555     DW_OP_breg17 = 0x81,    /* Base register 17.  */
0556     DW_OP_breg18 = 0x82,    /* Base register 18.  */
0557     DW_OP_breg19 = 0x83,    /* Base register 19.  */
0558     DW_OP_breg20 = 0x84,    /* Base register 20.  */
0559     DW_OP_breg21 = 0x85,    /* Base register 21.  */
0560     DW_OP_breg22 = 0x86,    /* Base register 22.  */
0561     DW_OP_breg23 = 0x87,    /* Base register 23.  */
0562     DW_OP_breg24 = 0x88,    /* Base register 24.  */
0563     DW_OP_breg25 = 0x89,    /* Base register 25.  */
0564     DW_OP_breg26 = 0x8a,    /* Base register 26.  */
0565     DW_OP_breg27 = 0x8b,    /* Base register 27.  */
0566     DW_OP_breg28 = 0x8c,    /* Base register 28.  */
0567     DW_OP_breg29 = 0x8d,    /* Base register 29.  */
0568     DW_OP_breg30 = 0x8e,    /* Base register 30.  */
0569     DW_OP_breg31 = 0x8f,    /* Base register 31.  */
0570     DW_OP_regx = 0x90,      /* Unsigned LEB128 register.  */
0571     DW_OP_fbreg = 0x91,     /* Signed LEB128 offset.  */
0572     DW_OP_bregx = 0x92,     /* ULEB128 register followed by SLEB128 off. */
0573     DW_OP_piece = 0x93,     /* ULEB128 size of piece addressed. */
0574     DW_OP_deref_size = 0x94,    /* 1-byte size of data retrieved.  */
0575     DW_OP_xderef_size = 0x95,   /* 1-byte size of data retrieved.  */
0576     DW_OP_nop = 0x96,
0577     DW_OP_push_object_address = 0x97,
0578     DW_OP_call2 = 0x98,
0579     DW_OP_call4 = 0x99,
0580     DW_OP_call_ref = 0x9a,
0581     DW_OP_form_tls_address = 0x9b,/* TLS offset to address in current thread */
0582     DW_OP_call_frame_cfa = 0x9c,/* CFA as determined by CFI.  */
0583     DW_OP_bit_piece = 0x9d, /* ULEB128 size and ULEB128 offset in bits.  */
0584     DW_OP_implicit_value = 0x9e, /* DW_FORM_block follows opcode.  */
0585     DW_OP_stack_value = 0x9f,    /* No operands, special like DW_OP_piece.  */
0586 
0587     DW_OP_implicit_pointer = 0xa0,
0588     DW_OP_addrx = 0xa1,
0589     DW_OP_constx = 0xa2,
0590     DW_OP_entry_value = 0xa3,
0591     DW_OP_const_type = 0xa4,
0592     DW_OP_regval_type = 0xa5,
0593     DW_OP_deref_type = 0xa6,
0594     DW_OP_xderef_type = 0xa7,
0595     DW_OP_convert = 0xa8,
0596     DW_OP_reinterpret = 0xa9,
0597 
0598     /* GNU extensions.  */
0599     DW_OP_GNU_push_tls_address = 0xe0,
0600     DW_OP_GNU_uninit = 0xf0,
0601     DW_OP_GNU_encoded_addr = 0xf1,
0602     DW_OP_GNU_implicit_pointer = 0xf2,
0603     DW_OP_GNU_entry_value = 0xf3,
0604     DW_OP_GNU_const_type = 0xf4,
0605     DW_OP_GNU_regval_type = 0xf5,
0606     DW_OP_GNU_deref_type = 0xf6,
0607     DW_OP_GNU_convert = 0xf7,
0608     DW_OP_GNU_reinterpret = 0xf9,
0609     DW_OP_GNU_parameter_ref = 0xfa,
0610 
0611     /* GNU Debug Fission extensions.  */
0612     DW_OP_GNU_addr_index = 0xfb,
0613     DW_OP_GNU_const_index = 0xfc,
0614 
0615     DW_OP_GNU_variable_value = 0xfd,
0616 
0617     DW_OP_lo_user = 0xe0,   /* Implementation-defined range start.  */
0618     DW_OP_hi_user = 0xff    /* Implementation-defined range end.  */
0619   };
0620 
0621 
0622 /* DWARF base type encodings.  */
0623 enum
0624   {
0625     DW_ATE_void = 0x0,
0626     DW_ATE_address = 0x1,
0627     DW_ATE_boolean = 0x2,
0628     DW_ATE_complex_float = 0x3,
0629     DW_ATE_float = 0x4,
0630     DW_ATE_signed = 0x5,
0631     DW_ATE_signed_char = 0x6,
0632     DW_ATE_unsigned = 0x7,
0633     DW_ATE_unsigned_char = 0x8,
0634     DW_ATE_imaginary_float = 0x9,
0635     DW_ATE_packed_decimal = 0xa,
0636     DW_ATE_numeric_string = 0xb,
0637     DW_ATE_edited = 0xc,
0638     DW_ATE_signed_fixed = 0xd,
0639     DW_ATE_unsigned_fixed = 0xe,
0640     DW_ATE_decimal_float = 0xf,
0641     DW_ATE_UTF = 0x10,
0642     DW_ATE_UCS = 0x11,
0643     DW_ATE_ASCII = 0x12,
0644 
0645     DW_ATE_lo_user = 0x80,
0646     DW_ATE_hi_user = 0xff
0647   };
0648 
0649 
0650 /* DWARF decimal sign encodings.  */
0651 enum
0652   {
0653     DW_DS_unsigned = 1,
0654     DW_DS_leading_overpunch = 2,
0655     DW_DS_trailing_overpunch = 3,
0656     DW_DS_leading_separate = 4,
0657     DW_DS_trailing_separate = 5,
0658   };
0659 
0660 
0661 /* DWARF endianity encodings.  */
0662 enum
0663   {
0664     DW_END_default = 0,
0665     DW_END_big = 1,
0666     DW_END_little = 2,
0667 
0668     DW_END_lo_user = 0x40,
0669     DW_END_hi_user = 0xff
0670   };
0671 
0672 
0673 /* DWARF accessibility encodings.  */
0674 enum
0675   {
0676     DW_ACCESS_public = 1,
0677     DW_ACCESS_protected = 2,
0678     DW_ACCESS_private = 3
0679   };
0680 
0681 
0682 /* DWARF visibility encodings.  */
0683 enum
0684   {
0685     DW_VIS_local = 1,
0686     DW_VIS_exported = 2,
0687     DW_VIS_qualified = 3
0688   };
0689 
0690 
0691 /* DWARF virtuality encodings.  */
0692 enum
0693   {
0694     DW_VIRTUALITY_none = 0,
0695     DW_VIRTUALITY_virtual = 1,
0696     DW_VIRTUALITY_pure_virtual = 2
0697   };
0698 
0699 
0700 /* DWARF language encodings.  */
0701 enum
0702   {
0703     DW_LANG_C89 = 0x0001,        /* ISO C:1989 */
0704     DW_LANG_C = 0x0002,          /* C */
0705     DW_LANG_Ada83 = 0x0003,      /* ISO Ada:1983 */
0706     DW_LANG_C_plus_plus = 0x0004,    /* ISO C++:1998 */
0707     DW_LANG_Cobol74 = 0x0005,        /* ISO Cobol:1974 */
0708     DW_LANG_Cobol85 = 0x0006,        /* ISO Cobol:1985 */
0709     DW_LANG_Fortran77 = 0x0007,      /* ISO FORTRAN 77 */
0710     DW_LANG_Fortran90 = 0x0008,      /* ISO Fortran 90 */
0711     DW_LANG_Pascal83 = 0x0009,       /* ISO Pascal:1983 */
0712     DW_LANG_Modula2 = 0x000a,        /* ISO Modula-2:1996 */
0713     DW_LANG_Java = 0x000b,       /* Java */
0714     DW_LANG_C99 = 0x000c,        /* ISO C:1999 */
0715     DW_LANG_Ada95 = 0x000d,      /* ISO Ada:1995 */
0716     DW_LANG_Fortran95 = 0x000e,      /* ISO Fortran 95 */
0717     DW_LANG_PLI = 0x000f,        /* ISO PL/1:1976 */
0718     DW_LANG_ObjC = 0x0010,       /* Objective-C */
0719     DW_LANG_ObjC_plus_plus = 0x0011, /* Objective-C++ */
0720     DW_LANG_UPC = 0x0012,        /* Unified Parallel C */
0721     DW_LANG_D = 0x0013,          /* D */
0722     DW_LANG_Python = 0x0014,         /* Python */
0723     DW_LANG_OpenCL = 0x0015,         /* OpenCL */
0724     DW_LANG_Go = 0x0016,         /* Go */
0725     DW_LANG_Modula3 = 0x0017,        /* Modula-3 */
0726     DW_LANG_Haskell = 0x0018,        /* Haskell */
0727     DW_LANG_C_plus_plus_03 = 0x0019, /* ISO C++:2003 */
0728     DW_LANG_C_plus_plus_11 = 0x001a, /* ISO C++:2011 */
0729     DW_LANG_OCaml = 0x001b,      /* OCaml */
0730     DW_LANG_Rust = 0x001c,       /* Rust */
0731     DW_LANG_C11 = 0x001d,        /* ISO C:2011 */
0732     DW_LANG_Swift = 0x001e,      /* Swift */
0733     DW_LANG_Julia = 0x001f,      /* Julia */
0734     DW_LANG_Dylan = 0x0020,      /* Dylan */
0735     DW_LANG_C_plus_plus_14 = 0x0021, /* ISO C++:2014 */
0736     DW_LANG_Fortran03 = 0x0022,      /* ISO/IEC 1539-1:2004 */
0737     DW_LANG_Fortran08 = 0x0023,      /* ISO/IEC 1539-1:2010 */
0738     DW_LANG_RenderScript = 0x0024,   /* RenderScript Kernal Language */
0739     DW_LANG_BLISS = 0x0025,      /* BLISS */
0740 
0741     DW_LANG_lo_user = 0x8000,
0742     DW_LANG_Mips_Assembler = 0x8001, /* Assembler */
0743     DW_LANG_hi_user = 0xffff
0744   };
0745 
0746 /* Old (typo) '1' != 'I'.  */
0747 #define DW_LANG_PL1 DW_LANG_PLI
0748 
0749 /* DWARF identifier case encodings.  */
0750 enum
0751   {
0752     DW_ID_case_sensitive = 0,
0753     DW_ID_up_case = 1,
0754     DW_ID_down_case = 2,
0755     DW_ID_case_insensitive = 3
0756   };
0757 
0758 
0759 /* DWARF calling conventions encodings.
0760    Used as values of DW_AT_calling_convention for subroutines
0761    (normal, program or nocall) or structures, unions and class types
0762    (normal, reference or value).  */
0763 enum
0764   {
0765     DW_CC_normal = 0x1,
0766     DW_CC_program = 0x2,
0767     DW_CC_nocall = 0x3,
0768     DW_CC_pass_by_reference = 0x4,
0769     DW_CC_pass_by_value = 0x5,
0770     DW_CC_lo_user = 0x40,
0771     DW_CC_hi_user = 0xff
0772   };
0773 
0774 
0775 /* DWARF inline encodings.  */
0776 enum
0777   {
0778     DW_INL_not_inlined = 0,
0779     DW_INL_inlined = 1,
0780     DW_INL_declared_not_inlined = 2,
0781     DW_INL_declared_inlined = 3
0782   };
0783 
0784 
0785 /* DWARF ordering encodings.  */
0786 enum
0787   {
0788     DW_ORD_row_major = 0,
0789     DW_ORD_col_major = 1
0790   };
0791 
0792 
0793 /* DWARF discriminant descriptor encodings.  */
0794 enum
0795   {
0796     DW_DSC_label = 0,
0797     DW_DSC_range = 1
0798   };
0799 
0800 /* DWARF defaulted member function encodings.  */
0801 enum
0802   {
0803     DW_DEFAULTED_no = 0,
0804     DW_DEFAULTED_in_class = 1,
0805     DW_DEFAULTED_out_of_class = 2
0806   };
0807 
0808 /* DWARF line content descriptions.  */
0809 enum
0810   {
0811     DW_LNCT_path = 0x1,
0812     DW_LNCT_directory_index = 0x2,
0813     DW_LNCT_timestamp = 0x3,
0814     DW_LNCT_size = 0x4,
0815     DW_LNCT_MD5 = 0x5,
0816     DW_LNCT_lo_user = 0x2000,
0817     DW_LNCT_hi_user = 0x3fff
0818   };
0819 
0820 /* DWARF standard opcode encodings.  */
0821 enum
0822   {
0823     DW_LNS_copy = 1,
0824     DW_LNS_advance_pc = 2,
0825     DW_LNS_advance_line = 3,
0826     DW_LNS_set_file = 4,
0827     DW_LNS_set_column = 5,
0828     DW_LNS_negate_stmt = 6,
0829     DW_LNS_set_basic_block = 7,
0830     DW_LNS_const_add_pc = 8,
0831     DW_LNS_fixed_advance_pc = 9,
0832     DW_LNS_set_prologue_end = 10,
0833     DW_LNS_set_epilogue_begin = 11,
0834     DW_LNS_set_isa = 12
0835   };
0836 
0837 
0838 /* DWARF extended opcode encodings.  */
0839 enum
0840   {
0841     DW_LNE_end_sequence = 1,
0842     DW_LNE_set_address = 2,
0843     DW_LNE_define_file = 3,
0844     DW_LNE_set_discriminator = 4,
0845 
0846     DW_LNE_lo_user = 128,
0847 
0848     DW_LNE_NVIDIA_inlined_call = 144,
0849     DW_LNE_NVIDIA_set_function_name = 145,
0850 
0851     DW_LNE_hi_user = 255
0852   };
0853 
0854 
0855 /* DWARF macinfo type encodings.  */
0856 enum
0857   {
0858     DW_MACINFO_define = 1,
0859     DW_MACINFO_undef = 2,
0860     DW_MACINFO_start_file = 3,
0861     DW_MACINFO_end_file = 4,
0862     DW_MACINFO_vendor_ext = 255
0863   };
0864 
0865 
0866 /* DWARF debug_macro type encodings.  */
0867 enum
0868   {
0869     DW_MACRO_define = 0x01,
0870     DW_MACRO_undef = 0x02,
0871     DW_MACRO_start_file = 0x03,
0872     DW_MACRO_end_file = 0x04,
0873     DW_MACRO_define_strp = 0x05,
0874     DW_MACRO_undef_strp = 0x06,
0875     DW_MACRO_import = 0x07,
0876     DW_MACRO_define_sup = 0x08,
0877     DW_MACRO_undef_sup = 0x09,
0878     DW_MACRO_import_sup = 0x0a,
0879     DW_MACRO_define_strx = 0x0b,
0880     DW_MACRO_undef_strx = 0x0c,
0881     DW_MACRO_lo_user = 0xe0,
0882     DW_MACRO_hi_user = 0xff
0883   };
0884 
0885 /* Old GNU extension names for DWARF5 debug_macro type encodings.
0886    There are no equivalents for the supplementary object file (sup)
0887    and indirect string references (strx).  */
0888 #define DW_MACRO_GNU_define      DW_MACRO_define
0889 #define DW_MACRO_GNU_undef       DW_MACRO_undef
0890 #define DW_MACRO_GNU_start_file      DW_MACRO_start_file
0891 #define DW_MACRO_GNU_end_file        DW_MACRO_end_file
0892 #define DW_MACRO_GNU_define_indirect     DW_MACRO_define_strp
0893 #define DW_MACRO_GNU_undef_indirect  DW_MACRO_undef_strp
0894 #define DW_MACRO_GNU_transparent_include DW_MACRO_import
0895 #define DW_MACRO_GNU_lo_user         DW_MACRO_lo_user
0896 #define DW_MACRO_GNU_hi_user         DW_MACRO_hi_user
0897 
0898 
0899 /* Range list entry encoding.  */
0900 enum
0901   {
0902     DW_RLE_end_of_list = 0x0,
0903     DW_RLE_base_addressx = 0x1,
0904     DW_RLE_startx_endx = 0x2,
0905     DW_RLE_startx_length = 0x3,
0906     DW_RLE_offset_pair = 0x4,
0907     DW_RLE_base_address = 0x5,
0908     DW_RLE_start_end = 0x6,
0909     DW_RLE_start_length = 0x7
0910   };
0911 
0912 
0913 /* Location list entry encoding.  */
0914 enum
0915   {
0916     DW_LLE_end_of_list = 0x0,
0917     DW_LLE_base_addressx = 0x1,
0918     DW_LLE_startx_endx = 0x2,
0919     DW_LLE_startx_length = 0x3,
0920     DW_LLE_offset_pair = 0x4,
0921     DW_LLE_default_location = 0x5,
0922     DW_LLE_base_address = 0x6,
0923     DW_LLE_start_end = 0x7,
0924     DW_LLE_start_length = 0x8
0925   };
0926 
0927 
0928 /* GNU DebugFission list entry encodings (.debug_loc.dwo).  */
0929 enum
0930   {
0931     DW_LLE_GNU_end_of_list_entry = 0x0,
0932     DW_LLE_GNU_base_address_selection_entry = 0x1,
0933     DW_LLE_GNU_start_end_entry = 0x2,
0934     DW_LLE_GNU_start_length_entry = 0x3,
0935 
0936     // http://www.fsfla.org/~lxoliva/papers/sfn/dwarf6-sfn-lvu.txt
0937     // https://dwarfstd.org/ShowIssue.php?issue=170427.1
0938     DW_LLE_GNU_view_pair = 0x9
0939   };
0940 
0941 /* DWARF5 package file section identifiers.  */
0942 enum
0943   {
0944     DW_SECT_INFO = 1,
0945     /* Reserved = 2, */
0946     DW_SECT_ABBREV = 3,
0947     DW_SECT_LINE = 4,
0948     DW_SECT_LOCLISTS = 5,
0949     DW_SECT_STR_OFFSETS = 6,
0950     DW_SECT_MACRO = 7,
0951     DW_SECT_RNGLISTS = 8,
0952   };
0953 
0954 
0955 /* DWARF call frame instruction encodings.  */
0956 enum
0957   {
0958     DW_CFA_advance_loc = 0x40,
0959     DW_CFA_offset = 0x80,
0960     DW_CFA_restore = 0xc0,
0961     DW_CFA_extended = 0,
0962 
0963     DW_CFA_nop = 0x00,
0964     DW_CFA_set_loc = 0x01,
0965     DW_CFA_advance_loc1 = 0x02,
0966     DW_CFA_advance_loc2 = 0x03,
0967     DW_CFA_advance_loc4 = 0x04,
0968     DW_CFA_offset_extended = 0x05,
0969     DW_CFA_restore_extended = 0x06,
0970     DW_CFA_undefined = 0x07,
0971     DW_CFA_same_value = 0x08,
0972     DW_CFA_register = 0x09,
0973     DW_CFA_remember_state = 0x0a,
0974     DW_CFA_restore_state = 0x0b,
0975     DW_CFA_def_cfa = 0x0c,
0976     DW_CFA_def_cfa_register = 0x0d,
0977     DW_CFA_def_cfa_offset = 0x0e,
0978     DW_CFA_def_cfa_expression = 0x0f,
0979     DW_CFA_expression = 0x10,
0980     DW_CFA_offset_extended_sf = 0x11,
0981     DW_CFA_def_cfa_sf = 0x12,
0982     DW_CFA_def_cfa_offset_sf = 0x13,
0983     DW_CFA_val_offset = 0x14,
0984     DW_CFA_val_offset_sf = 0x15,
0985     DW_CFA_val_expression = 0x16,
0986 
0987     DW_CFA_low_user = 0x1c,
0988     DW_CFA_MIPS_advance_loc8 = 0x1d,
0989     DW_CFA_GNU_window_save = 0x2d,
0990     DW_CFA_AARCH64_negate_ra_state = 0x2d,
0991     DW_CFA_GNU_args_size = 0x2e,
0992     DW_CFA_GNU_negative_offset_extended = 0x2f,
0993     DW_CFA_high_user = 0x3f
0994   };
0995 
0996 /* ID indicating CIE as opposed to FDE in .debug_frame.  */
0997 enum
0998   {
0999     DW_CIE_ID_32 = 0xffffffffU,      /* In 32-bit format CIE header.  */
1000     DW_CIE_ID_64 = 0xffffffffffffffffULL /* In 64-bit format CIE header.  */
1001   };
1002 
1003 
1004 /* Information for GNU unwind information.  */
1005 enum
1006   {
1007     DW_EH_PE_absptr = 0x00,
1008     DW_EH_PE_omit = 0xff,
1009 
1010     /* FDE data encoding.  */
1011     DW_EH_PE_uleb128 = 0x01,
1012     DW_EH_PE_udata2 = 0x02,
1013     DW_EH_PE_udata4 = 0x03,
1014     DW_EH_PE_udata8 = 0x04,
1015     DW_EH_PE_sleb128 = 0x09,
1016     DW_EH_PE_sdata2 = 0x0a,
1017     DW_EH_PE_sdata4 = 0x0b,
1018     DW_EH_PE_sdata8 = 0x0c,
1019     DW_EH_PE_signed = 0x08,
1020 
1021     /* FDE flags.  */
1022     DW_EH_PE_pcrel = 0x10,
1023     DW_EH_PE_textrel = 0x20,
1024     DW_EH_PE_datarel = 0x30,
1025     DW_EH_PE_funcrel = 0x40,
1026     DW_EH_PE_aligned = 0x50,
1027 
1028     DW_EH_PE_indirect = 0x80
1029   };
1030 
1031 
1032 /* DWARF XXX.  */
1033 #define DW_ADDR_none    0
1034 
1035 /* Section 7.2.2 of the DWARF3 specification defines a range of escape
1036    codes that can appear in the length field of certain DWARF structures.
1037 
1038    These defines enumerate the minimum and maximum values of this range.
1039    Currently only the maximum value is used (to indicate that 64-bit
1040    values are going to be used in the dwarf data that accompanies the
1041    structure).  The other values are reserved.
1042 
1043    Note: There is a typo in DWARF3 spec (published Dec 20, 2005).  In
1044    sections 7.4, 7.5.1, 7.19, 7.20 the minimum escape code is referred to
1045    as 0xffffff00 whereas in fact it should be 0xfffffff0.  */
1046 #define DWARF3_LENGTH_MIN_ESCAPE_CODE 0xfffffff0u
1047 #define DWARF3_LENGTH_MAX_ESCAPE_CODE 0xffffffffu
1048 #define DWARF3_LENGTH_64_BIT          DWARF3_LENGTH_MAX_ESCAPE_CODE
1049 
1050 #endif  /* dwarf.h */