2006-01-26 14:45:22 +00:00
|
|
|
//===-- llvm/Support/Dwarf.h ---Dwarf Constants------------------*- C++ -*-===//
|
|
|
|
//
|
|
|
|
// The LLVM Compiler Infrastructure
|
|
|
|
//
|
2007-12-29 19:59:42 +00:00
|
|
|
// This file is distributed under the University of Illinois Open Source
|
|
|
|
// License. See LICENSE.TXT for details.
|
2006-01-26 14:45:22 +00:00
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
//
|
2014-10-23 04:08:38 +00:00
|
|
|
// \file
|
|
|
|
// \brief This file contains constants used for implementing Dwarf
|
|
|
|
// debug support.
|
|
|
|
//
|
|
|
|
// For details on the Dwarf specfication see the latest DWARF Debugging
|
|
|
|
// Information Format standard document on http://www.dwarfstd.org. This
|
|
|
|
// file often includes support for non-released standard features.
|
2009-02-20 22:51:36 +00:00
|
|
|
//
|
2006-01-26 14:45:22 +00:00
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
|
|
|
|
#ifndef LLVM_SUPPORT_DWARF_H
|
|
|
|
#define LLVM_SUPPORT_DWARF_H
|
|
|
|
|
2013-09-23 23:26:57 +00:00
|
|
|
#include "llvm/Support/Compiler.h"
|
2013-02-05 23:30:58 +00:00
|
|
|
#include "llvm/Support/DataTypes.h"
|
|
|
|
|
2006-02-27 22:37:23 +00:00
|
|
|
namespace llvm {
|
|
|
|
|
2006-02-27 12:43:29 +00:00
|
|
|
namespace dwarf {
|
|
|
|
|
|
|
|
//===----------------------------------------------------------------------===//
|
2013-01-08 00:16:33 +00:00
|
|
|
// Dwarf constants as gleaned from the DWARF Debugging Information Format V.4
|
2013-12-18 21:48:14 +00:00
|
|
|
// reference manual http://www.dwarfstd.org/.
|
2006-02-27 12:43:29 +00:00
|
|
|
//
|
2006-03-01 20:39:36 +00:00
|
|
|
|
|
|
|
// Do not mix the following two enumerations sets. DW_TAG_invalid changes the
|
|
|
|
// enumeration base type.
|
|
|
|
|
2014-03-02 03:20:38 +00:00
|
|
|
enum LLVMConstants : uint32_t {
|
2006-03-01 20:39:36 +00:00
|
|
|
// llvm mock tags
|
2013-09-05 00:01:17 +00:00
|
|
|
DW_TAG_invalid = ~0U, // Tag for invalid results.
|
2009-02-20 22:51:36 +00:00
|
|
|
|
2013-09-05 00:01:17 +00:00
|
|
|
DW_TAG_auto_variable = 0x100, // Tag for local (auto) variables.
|
|
|
|
DW_TAG_arg_variable = 0x101, // Tag for argument variables.
|
Move the complex address expression out of DIVariable and into an extra
argument of the llvm.dbg.declare/llvm.dbg.value intrinsics.
Previously, DIVariable was a variable-length field that has an optional
reference to a Metadata array consisting of a variable number of
complex address expressions. In the case of OpPiece expressions this is
wasting a lot of storage in IR, because when an aggregate type is, e.g.,
SROA'd into all of its n individual members, the IR will contain n copies
of the DIVariable, all alike, only differing in the complex address
reference at the end.
By making the complex address into an extra argument of the
dbg.value/dbg.declare intrinsics, all of the pieces can reference the
same variable and the complex address expressions can be uniqued across
the CU, too.
Down the road, this will allow us to move other flags, such as
"indirection" out of the DIVariable, too.
The new intrinsics look like this:
declare void @llvm.dbg.declare(metadata %storage, metadata %var, metadata %expr)
declare void @llvm.dbg.value(metadata %storage, i64 %offset, metadata %var, metadata %expr)
This patch adds a new LLVM-local tag to DIExpressions, so we can detect
and pretty-print DIExpression metadata nodes.
What this patch doesn't do:
This patch does not touch the "Indirect" field in DIVariable; but moving
that into the expression would be a natural next step.
http://reviews.llvm.org/D4919
rdar://problem/17994491
Thanks to dblaikie and dexonsmith for reviewing this patch!
Note: I accidentally committed a bogus older version of this patch previously.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218787 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-01 18:55:02 +00:00
|
|
|
DW_TAG_expression = 0x102, // Tag for complex address expressions.
|
2009-02-20 22:51:36 +00:00
|
|
|
|
2013-09-05 00:01:17 +00:00
|
|
|
DW_TAG_user_base = 0x1000, // Recommended base for user tags.
|
2009-02-20 22:51:36 +00:00
|
|
|
|
2013-09-05 00:01:17 +00:00
|
|
|
DWARF_VERSION = 4, // Default dwarf version we output.
|
|
|
|
DW_PUBTYPES_VERSION = 2, // Section version number for .debug_pubtypes.
|
2013-09-19 23:21:01 +00:00
|
|
|
DW_PUBNAMES_VERSION = 2, // Section version number for .debug_pubnames.
|
|
|
|
DW_ARANGES_VERSION = 2 // Section version number for .debug_aranges.
|
2006-03-01 20:39:36 +00:00
|
|
|
};
|
|
|
|
|
2013-02-05 23:30:58 +00:00
|
|
|
// Special ID values that distinguish a CIE from a FDE in DWARF CFI.
|
|
|
|
// Not inside an enum because a 64-bit value is needed.
|
|
|
|
const uint32_t DW_CIE_ID = UINT32_MAX;
|
|
|
|
const uint64_t DW64_CIE_ID = UINT64_MAX;
|
|
|
|
|
2014-03-02 03:20:38 +00:00
|
|
|
enum Tag : uint16_t {
|
2006-02-27 12:43:29 +00:00
|
|
|
DW_TAG_array_type = 0x01,
|
|
|
|
DW_TAG_class_type = 0x02,
|
|
|
|
DW_TAG_entry_point = 0x03,
|
|
|
|
DW_TAG_enumeration_type = 0x04,
|
|
|
|
DW_TAG_formal_parameter = 0x05,
|
|
|
|
DW_TAG_imported_declaration = 0x08,
|
|
|
|
DW_TAG_label = 0x0a,
|
|
|
|
DW_TAG_lexical_block = 0x0b,
|
|
|
|
DW_TAG_member = 0x0d,
|
|
|
|
DW_TAG_pointer_type = 0x0f,
|
|
|
|
DW_TAG_reference_type = 0x10,
|
|
|
|
DW_TAG_compile_unit = 0x11,
|
|
|
|
DW_TAG_string_type = 0x12,
|
|
|
|
DW_TAG_structure_type = 0x13,
|
|
|
|
DW_TAG_subroutine_type = 0x15,
|
|
|
|
DW_TAG_typedef = 0x16,
|
|
|
|
DW_TAG_union_type = 0x17,
|
|
|
|
DW_TAG_unspecified_parameters = 0x18,
|
|
|
|
DW_TAG_variant = 0x19,
|
|
|
|
DW_TAG_common_block = 0x1a,
|
|
|
|
DW_TAG_common_inclusion = 0x1b,
|
|
|
|
DW_TAG_inheritance = 0x1c,
|
|
|
|
DW_TAG_inlined_subroutine = 0x1d,
|
|
|
|
DW_TAG_module = 0x1e,
|
|
|
|
DW_TAG_ptr_to_member_type = 0x1f,
|
|
|
|
DW_TAG_set_type = 0x20,
|
|
|
|
DW_TAG_subrange_type = 0x21,
|
|
|
|
DW_TAG_with_stmt = 0x22,
|
|
|
|
DW_TAG_access_declaration = 0x23,
|
|
|
|
DW_TAG_base_type = 0x24,
|
|
|
|
DW_TAG_catch_block = 0x25,
|
|
|
|
DW_TAG_const_type = 0x26,
|
|
|
|
DW_TAG_constant = 0x27,
|
|
|
|
DW_TAG_enumerator = 0x28,
|
|
|
|
DW_TAG_file_type = 0x29,
|
|
|
|
DW_TAG_friend = 0x2a,
|
|
|
|
DW_TAG_namelist = 0x2b,
|
|
|
|
DW_TAG_namelist_item = 0x2c,
|
|
|
|
DW_TAG_packed_type = 0x2d,
|
|
|
|
DW_TAG_subprogram = 0x2e,
|
|
|
|
DW_TAG_template_type_parameter = 0x2f,
|
|
|
|
DW_TAG_template_value_parameter = 0x30,
|
|
|
|
DW_TAG_thrown_type = 0x31,
|
|
|
|
DW_TAG_try_block = 0x32,
|
|
|
|
DW_TAG_variant_part = 0x33,
|
|
|
|
DW_TAG_variable = 0x34,
|
|
|
|
DW_TAG_volatile_type = 0x35,
|
|
|
|
DW_TAG_dwarf_procedure = 0x36,
|
|
|
|
DW_TAG_restrict_type = 0x37,
|
|
|
|
DW_TAG_interface_type = 0x38,
|
|
|
|
DW_TAG_namespace = 0x39,
|
|
|
|
DW_TAG_imported_module = 0x3a,
|
|
|
|
DW_TAG_unspecified_type = 0x3b,
|
|
|
|
DW_TAG_partial_unit = 0x3c,
|
|
|
|
DW_TAG_imported_unit = 0x3d,
|
|
|
|
DW_TAG_condition = 0x3f,
|
|
|
|
DW_TAG_shared_type = 0x40,
|
2011-09-15 04:23:44 +00:00
|
|
|
DW_TAG_type_unit = 0x41,
|
|
|
|
DW_TAG_rvalue_reference_type = 0x42,
|
|
|
|
DW_TAG_template_alias = 0x43,
|
2013-12-18 21:48:14 +00:00
|
|
|
|
|
|
|
// New in DWARF 5:
|
|
|
|
DW_TAG_coarray_type = 0x44,
|
|
|
|
DW_TAG_generic_subrange = 0x45,
|
|
|
|
DW_TAG_dynamic_type = 0x46,
|
|
|
|
|
2011-09-15 05:21:03 +00:00
|
|
|
DW_TAG_MIPS_loop = 0x4081,
|
|
|
|
DW_TAG_format_label = 0x4101,
|
|
|
|
DW_TAG_function_template = 0x4102,
|
|
|
|
DW_TAG_class_template = 0x4103,
|
|
|
|
DW_TAG_GNU_template_template_param = 0x4106,
|
|
|
|
DW_TAG_GNU_template_parameter_pack = 0x4107,
|
|
|
|
DW_TAG_GNU_formal_parameter_pack = 0x4108,
|
2006-02-27 12:43:29 +00:00
|
|
|
DW_TAG_lo_user = 0x4080,
|
2012-03-29 21:35:05 +00:00
|
|
|
DW_TAG_APPLE_property = 0x4200,
|
2013-10-21 17:28:37 +00:00
|
|
|
DW_TAG_hi_user = 0xffff
|
|
|
|
};
|
2006-02-27 12:43:29 +00:00
|
|
|
|
2013-10-25 18:38:43 +00:00
|
|
|
inline bool isType(Tag T) {
|
|
|
|
switch (T) {
|
|
|
|
case DW_TAG_array_type:
|
|
|
|
case DW_TAG_class_type:
|
|
|
|
case DW_TAG_interface_type:
|
|
|
|
case DW_TAG_enumeration_type:
|
|
|
|
case DW_TAG_pointer_type:
|
|
|
|
case DW_TAG_reference_type:
|
|
|
|
case DW_TAG_rvalue_reference_type:
|
|
|
|
case DW_TAG_string_type:
|
|
|
|
case DW_TAG_structure_type:
|
|
|
|
case DW_TAG_subroutine_type:
|
|
|
|
case DW_TAG_union_type:
|
|
|
|
case DW_TAG_ptr_to_member_type:
|
|
|
|
case DW_TAG_set_type:
|
|
|
|
case DW_TAG_subrange_type:
|
|
|
|
case DW_TAG_base_type:
|
|
|
|
case DW_TAG_const_type:
|
|
|
|
case DW_TAG_file_type:
|
|
|
|
case DW_TAG_packed_type:
|
|
|
|
case DW_TAG_volatile_type:
|
|
|
|
case DW_TAG_typedef:
|
|
|
|
return true;
|
|
|
|
default:
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-03-02 03:20:38 +00:00
|
|
|
enum Attribute : uint16_t {
|
2006-02-27 12:43:29 +00:00
|
|
|
// Attributes
|
|
|
|
DW_AT_sibling = 0x01,
|
|
|
|
DW_AT_location = 0x02,
|
|
|
|
DW_AT_name = 0x03,
|
|
|
|
DW_AT_ordering = 0x09,
|
|
|
|
DW_AT_byte_size = 0x0b,
|
|
|
|
DW_AT_bit_offset = 0x0c,
|
|
|
|
DW_AT_bit_size = 0x0d,
|
|
|
|
DW_AT_stmt_list = 0x10,
|
|
|
|
DW_AT_low_pc = 0x11,
|
|
|
|
DW_AT_high_pc = 0x12,
|
|
|
|
DW_AT_language = 0x13,
|
|
|
|
DW_AT_discr = 0x15,
|
|
|
|
DW_AT_discr_value = 0x16,
|
|
|
|
DW_AT_visibility = 0x17,
|
|
|
|
DW_AT_import = 0x18,
|
|
|
|
DW_AT_string_length = 0x19,
|
|
|
|
DW_AT_common_reference = 0x1a,
|
|
|
|
DW_AT_comp_dir = 0x1b,
|
|
|
|
DW_AT_const_value = 0x1c,
|
|
|
|
DW_AT_containing_type = 0x1d,
|
|
|
|
DW_AT_default_value = 0x1e,
|
|
|
|
DW_AT_inline = 0x20,
|
|
|
|
DW_AT_is_optional = 0x21,
|
|
|
|
DW_AT_lower_bound = 0x22,
|
|
|
|
DW_AT_producer = 0x25,
|
|
|
|
DW_AT_prototyped = 0x27,
|
|
|
|
DW_AT_return_addr = 0x2a,
|
|
|
|
DW_AT_start_scope = 0x2c,
|
|
|
|
DW_AT_bit_stride = 0x2e,
|
|
|
|
DW_AT_upper_bound = 0x2f,
|
|
|
|
DW_AT_abstract_origin = 0x31,
|
|
|
|
DW_AT_accessibility = 0x32,
|
|
|
|
DW_AT_address_class = 0x33,
|
|
|
|
DW_AT_artificial = 0x34,
|
|
|
|
DW_AT_base_types = 0x35,
|
|
|
|
DW_AT_calling_convention = 0x36,
|
|
|
|
DW_AT_count = 0x37,
|
|
|
|
DW_AT_data_member_location = 0x38,
|
|
|
|
DW_AT_decl_column = 0x39,
|
|
|
|
DW_AT_decl_file = 0x3a,
|
|
|
|
DW_AT_decl_line = 0x3b,
|
|
|
|
DW_AT_declaration = 0x3c,
|
|
|
|
DW_AT_discr_list = 0x3d,
|
|
|
|
DW_AT_encoding = 0x3e,
|
|
|
|
DW_AT_external = 0x3f,
|
|
|
|
DW_AT_frame_base = 0x40,
|
|
|
|
DW_AT_friend = 0x41,
|
|
|
|
DW_AT_identifier_case = 0x42,
|
|
|
|
DW_AT_macro_info = 0x43,
|
|
|
|
DW_AT_namelist_item = 0x44,
|
|
|
|
DW_AT_priority = 0x45,
|
|
|
|
DW_AT_segment = 0x46,
|
|
|
|
DW_AT_specification = 0x47,
|
|
|
|
DW_AT_static_link = 0x48,
|
|
|
|
DW_AT_type = 0x49,
|
|
|
|
DW_AT_use_location = 0x4a,
|
|
|
|
DW_AT_variable_parameter = 0x4b,
|
|
|
|
DW_AT_virtuality = 0x4c,
|
|
|
|
DW_AT_vtable_elem_location = 0x4d,
|
|
|
|
DW_AT_allocated = 0x4e,
|
|
|
|
DW_AT_associated = 0x4f,
|
|
|
|
DW_AT_data_location = 0x50,
|
|
|
|
DW_AT_byte_stride = 0x51,
|
|
|
|
DW_AT_entry_pc = 0x52,
|
|
|
|
DW_AT_use_UTF8 = 0x53,
|
|
|
|
DW_AT_extension = 0x54,
|
|
|
|
DW_AT_ranges = 0x55,
|
|
|
|
DW_AT_trampoline = 0x56,
|
|
|
|
DW_AT_call_column = 0x57,
|
|
|
|
DW_AT_call_file = 0x58,
|
|
|
|
DW_AT_call_line = 0x59,
|
|
|
|
DW_AT_description = 0x5a,
|
|
|
|
DW_AT_binary_scale = 0x5b,
|
|
|
|
DW_AT_decimal_scale = 0x5c,
|
|
|
|
DW_AT_small = 0x5d,
|
|
|
|
DW_AT_decimal_sign = 0x5e,
|
|
|
|
DW_AT_digit_count = 0x5f,
|
|
|
|
DW_AT_picture_string = 0x60,
|
|
|
|
DW_AT_mutable = 0x61,
|
|
|
|
DW_AT_threads_scaled = 0x62,
|
|
|
|
DW_AT_explicit = 0x63,
|
|
|
|
DW_AT_object_pointer = 0x64,
|
|
|
|
DW_AT_endianity = 0x65,
|
|
|
|
DW_AT_elemental = 0x66,
|
|
|
|
DW_AT_pure = 0x67,
|
|
|
|
DW_AT_recursive = 0x68,
|
2011-09-15 04:23:44 +00:00
|
|
|
DW_AT_signature = 0x69,
|
|
|
|
DW_AT_main_subprogram = 0x6a,
|
|
|
|
DW_AT_data_bit_offset = 0x6b,
|
|
|
|
DW_AT_const_expr = 0x6c,
|
|
|
|
DW_AT_enum_class = 0x6d,
|
|
|
|
DW_AT_linkage_name = 0x6e,
|
2012-11-16 23:04:31 +00:00
|
|
|
|
2013-12-18 21:48:14 +00:00
|
|
|
// New in DWARF 5:
|
|
|
|
DW_AT_string_length_bit_size = 0x6f,
|
|
|
|
DW_AT_string_length_byte_size = 0x70,
|
|
|
|
DW_AT_rank = 0x71,
|
|
|
|
DW_AT_str_offsets_base = 0x72,
|
|
|
|
DW_AT_addr_base = 0x73,
|
|
|
|
DW_AT_ranges_base = 0x74,
|
|
|
|
DW_AT_dwo_id = 0x75,
|
|
|
|
DW_AT_dwo_name = 0x76,
|
|
|
|
DW_AT_reference = 0x77,
|
|
|
|
DW_AT_rvalue_reference = 0x78,
|
|
|
|
|
2012-11-16 23:04:31 +00:00
|
|
|
DW_AT_lo_user = 0x2000,
|
|
|
|
DW_AT_hi_user = 0x3fff,
|
|
|
|
|
2011-09-15 05:21:03 +00:00
|
|
|
DW_AT_MIPS_loop_begin = 0x2002,
|
|
|
|
DW_AT_MIPS_tail_loop_begin = 0x2003,
|
|
|
|
DW_AT_MIPS_epilog_begin = 0x2004,
|
|
|
|
DW_AT_MIPS_loop_unroll_factor = 0x2005,
|
|
|
|
DW_AT_MIPS_software_pipeline_depth = 0x2006,
|
2006-08-21 21:18:10 +00:00
|
|
|
DW_AT_MIPS_linkage_name = 0x2007,
|
2011-09-15 05:21:03 +00:00
|
|
|
DW_AT_MIPS_stride = 0x2008,
|
|
|
|
DW_AT_MIPS_abstract_name = 0x2009,
|
|
|
|
DW_AT_MIPS_clone_origin = 0x200a,
|
|
|
|
DW_AT_MIPS_has_inlines = 0x200b,
|
|
|
|
DW_AT_MIPS_stride_byte = 0x200c,
|
|
|
|
DW_AT_MIPS_stride_elem = 0x200d,
|
|
|
|
DW_AT_MIPS_ptr_dopetype = 0x200e,
|
|
|
|
DW_AT_MIPS_allocatable_dopetype = 0x200f,
|
|
|
|
DW_AT_MIPS_assumed_shape_dopetype = 0x2010,
|
2012-11-16 23:04:31 +00:00
|
|
|
|
|
|
|
// This one appears to have only been implemented by Open64 for
|
|
|
|
// fortran and may conflict with other extensions.
|
|
|
|
DW_AT_MIPS_assumed_size = 0x2011,
|
|
|
|
|
|
|
|
// GNU extensions
|
2011-09-15 05:21:03 +00:00
|
|
|
DW_AT_sf_names = 0x2101,
|
2006-06-15 20:51:43 +00:00
|
|
|
DW_AT_src_info = 0x2102,
|
|
|
|
DW_AT_mac_info = 0x2103,
|
|
|
|
DW_AT_src_coords = 0x2104,
|
|
|
|
DW_AT_body_begin = 0x2105,
|
|
|
|
DW_AT_body_end = 0x2106,
|
|
|
|
DW_AT_GNU_vector = 0x2107,
|
2011-09-15 05:30:55 +00:00
|
|
|
DW_AT_GNU_template_name = 0x2110,
|
2012-11-16 23:04:31 +00:00
|
|
|
|
2013-07-14 22:02:31 +00:00
|
|
|
DW_AT_GNU_odr_signature = 0x210f,
|
|
|
|
|
2012-11-16 23:04:31 +00:00
|
|
|
// Extensions for Fission proposal.
|
|
|
|
DW_AT_GNU_dwo_name = 0x2130,
|
|
|
|
DW_AT_GNU_dwo_id = 0x2131,
|
|
|
|
DW_AT_GNU_ranges_base = 0x2132,
|
|
|
|
DW_AT_GNU_addr_base = 0x2133,
|
|
|
|
DW_AT_GNU_pubnames = 0x2134,
|
|
|
|
DW_AT_GNU_pubtypes = 0x2135,
|
2009-01-23 22:33:47 +00:00
|
|
|
|
|
|
|
// Apple extensions.
|
|
|
|
DW_AT_APPLE_optimized = 0x3fe1,
|
|
|
|
DW_AT_APPLE_flags = 0x3fe2,
|
2009-05-11 21:58:01 +00:00
|
|
|
DW_AT_APPLE_isa = 0x3fe3,
|
|
|
|
DW_AT_APPLE_block = 0x3fe4,
|
2009-02-17 22:43:44 +00:00
|
|
|
DW_AT_APPLE_major_runtime_vers = 0x3fe5,
|
|
|
|
DW_AT_APPLE_runtime_class = 0x3fe6,
|
2010-04-19 19:14:02 +00:00
|
|
|
DW_AT_APPLE_omit_frame_ptr = 0x3fe7,
|
2011-04-16 00:11:51 +00:00
|
|
|
DW_AT_APPLE_property_name = 0x3fe8,
|
|
|
|
DW_AT_APPLE_property_getter = 0x3fe9,
|
|
|
|
DW_AT_APPLE_property_setter = 0x3fea,
|
|
|
|
DW_AT_APPLE_property_attribute = 0x3feb,
|
2011-05-12 21:29:42 +00:00
|
|
|
DW_AT_APPLE_objc_complete_type = 0x3fec,
|
2013-10-21 17:28:37 +00:00
|
|
|
DW_AT_APPLE_property = 0x3fed
|
|
|
|
};
|
2009-01-23 22:33:47 +00:00
|
|
|
|
2014-03-02 03:20:38 +00:00
|
|
|
enum Form : uint16_t {
|
2006-02-27 12:43:29 +00:00
|
|
|
// Attribute form encodings
|
|
|
|
DW_FORM_addr = 0x01,
|
|
|
|
DW_FORM_block2 = 0x03,
|
|
|
|
DW_FORM_block4 = 0x04,
|
|
|
|
DW_FORM_data2 = 0x05,
|
|
|
|
DW_FORM_data4 = 0x06,
|
|
|
|
DW_FORM_data8 = 0x07,
|
|
|
|
DW_FORM_string = 0x08,
|
|
|
|
DW_FORM_block = 0x09,
|
|
|
|
DW_FORM_block1 = 0x0a,
|
|
|
|
DW_FORM_data1 = 0x0b,
|
|
|
|
DW_FORM_flag = 0x0c,
|
|
|
|
DW_FORM_sdata = 0x0d,
|
|
|
|
DW_FORM_strp = 0x0e,
|
|
|
|
DW_FORM_udata = 0x0f,
|
|
|
|
DW_FORM_ref_addr = 0x10,
|
|
|
|
DW_FORM_ref1 = 0x11,
|
|
|
|
DW_FORM_ref2 = 0x12,
|
|
|
|
DW_FORM_ref4 = 0x13,
|
|
|
|
DW_FORM_ref8 = 0x14,
|
|
|
|
DW_FORM_ref_udata = 0x15,
|
|
|
|
DW_FORM_indirect = 0x16,
|
2011-09-15 04:23:44 +00:00
|
|
|
DW_FORM_sec_offset = 0x17,
|
|
|
|
DW_FORM_exprloc = 0x18,
|
|
|
|
DW_FORM_flag_present = 0x19,
|
|
|
|
DW_FORM_ref_sig8 = 0x20,
|
2006-02-27 12:43:29 +00:00
|
|
|
|
2012-11-16 23:04:31 +00:00
|
|
|
// Extensions for Fission proposal
|
|
|
|
DW_FORM_GNU_addr_index = 0x1f01,
|
2013-10-21 17:28:37 +00:00
|
|
|
DW_FORM_GNU_str_index = 0x1f02
|
|
|
|
};
|
2012-11-16 23:04:31 +00:00
|
|
|
|
2013-10-21 17:28:37 +00:00
|
|
|
enum LocationAtom {
|
2006-02-27 12:43:29 +00:00
|
|
|
// Operation encodings
|
|
|
|
DW_OP_addr = 0x03,
|
|
|
|
DW_OP_deref = 0x06,
|
|
|
|
DW_OP_const1u = 0x08,
|
|
|
|
DW_OP_const1s = 0x09,
|
|
|
|
DW_OP_const2u = 0x0a,
|
|
|
|
DW_OP_const2s = 0x0b,
|
|
|
|
DW_OP_const4u = 0x0c,
|
|
|
|
DW_OP_const4s = 0x0d,
|
|
|
|
DW_OP_const8u = 0x0e,
|
|
|
|
DW_OP_const8s = 0x0f,
|
|
|
|
DW_OP_constu = 0x10,
|
|
|
|
DW_OP_consts = 0x11,
|
|
|
|
DW_OP_dup = 0x12,
|
|
|
|
DW_OP_drop = 0x13,
|
|
|
|
DW_OP_over = 0x14,
|
|
|
|
DW_OP_pick = 0x15,
|
|
|
|
DW_OP_swap = 0x16,
|
|
|
|
DW_OP_rot = 0x17,
|
|
|
|
DW_OP_xderef = 0x18,
|
|
|
|
DW_OP_abs = 0x19,
|
|
|
|
DW_OP_and = 0x1a,
|
|
|
|
DW_OP_div = 0x1b,
|
|
|
|
DW_OP_minus = 0x1c,
|
|
|
|
DW_OP_mod = 0x1d,
|
|
|
|
DW_OP_mul = 0x1e,
|
|
|
|
DW_OP_neg = 0x1f,
|
|
|
|
DW_OP_not = 0x20,
|
|
|
|
DW_OP_or = 0x21,
|
|
|
|
DW_OP_plus = 0x22,
|
|
|
|
DW_OP_plus_uconst = 0x23,
|
|
|
|
DW_OP_shl = 0x24,
|
|
|
|
DW_OP_shr = 0x25,
|
|
|
|
DW_OP_shra = 0x26,
|
|
|
|
DW_OP_xor = 0x27,
|
|
|
|
DW_OP_skip = 0x2f,
|
|
|
|
DW_OP_bra = 0x28,
|
|
|
|
DW_OP_eq = 0x29,
|
|
|
|
DW_OP_ge = 0x2a,
|
|
|
|
DW_OP_gt = 0x2b,
|
|
|
|
DW_OP_le = 0x2c,
|
|
|
|
DW_OP_lt = 0x2d,
|
|
|
|
DW_OP_ne = 0x2e,
|
|
|
|
DW_OP_lit0 = 0x30,
|
|
|
|
DW_OP_lit1 = 0x31,
|
2010-06-17 01:23:24 +00:00
|
|
|
DW_OP_lit2 = 0x32,
|
|
|
|
DW_OP_lit3 = 0x33,
|
|
|
|
DW_OP_lit4 = 0x34,
|
|
|
|
DW_OP_lit5 = 0x35,
|
|
|
|
DW_OP_lit6 = 0x36,
|
|
|
|
DW_OP_lit7 = 0x37,
|
|
|
|
DW_OP_lit8 = 0x38,
|
|
|
|
DW_OP_lit9 = 0x39,
|
|
|
|
DW_OP_lit10 = 0x3a,
|
|
|
|
DW_OP_lit11 = 0x3b,
|
|
|
|
DW_OP_lit12 = 0x3c,
|
|
|
|
DW_OP_lit13 = 0x3d,
|
|
|
|
DW_OP_lit14 = 0x3e,
|
|
|
|
DW_OP_lit15 = 0x3f,
|
|
|
|
DW_OP_lit16 = 0x40,
|
|
|
|
DW_OP_lit17 = 0x41,
|
|
|
|
DW_OP_lit18 = 0x42,
|
|
|
|
DW_OP_lit19 = 0x43,
|
|
|
|
DW_OP_lit20 = 0x44,
|
|
|
|
DW_OP_lit21 = 0x45,
|
|
|
|
DW_OP_lit22 = 0x46,
|
|
|
|
DW_OP_lit23 = 0x47,
|
|
|
|
DW_OP_lit24 = 0x48,
|
|
|
|
DW_OP_lit25 = 0x49,
|
|
|
|
DW_OP_lit26 = 0x4a,
|
|
|
|
DW_OP_lit27 = 0x4b,
|
|
|
|
DW_OP_lit28 = 0x4c,
|
|
|
|
DW_OP_lit29 = 0x4d,
|
|
|
|
DW_OP_lit30 = 0x4e,
|
2006-02-27 12:43:29 +00:00
|
|
|
DW_OP_lit31 = 0x4f,
|
|
|
|
DW_OP_reg0 = 0x50,
|
|
|
|
DW_OP_reg1 = 0x51,
|
2010-06-17 01:23:24 +00:00
|
|
|
DW_OP_reg2 = 0x52,
|
|
|
|
DW_OP_reg3 = 0x53,
|
|
|
|
DW_OP_reg4 = 0x54,
|
|
|
|
DW_OP_reg5 = 0x55,
|
|
|
|
DW_OP_reg6 = 0x56,
|
|
|
|
DW_OP_reg7 = 0x57,
|
|
|
|
DW_OP_reg8 = 0x58,
|
|
|
|
DW_OP_reg9 = 0x59,
|
|
|
|
DW_OP_reg10 = 0x5a,
|
|
|
|
DW_OP_reg11 = 0x5b,
|
|
|
|
DW_OP_reg12 = 0x5c,
|
|
|
|
DW_OP_reg13 = 0x5d,
|
|
|
|
DW_OP_reg14 = 0x5e,
|
|
|
|
DW_OP_reg15 = 0x5f,
|
|
|
|
DW_OP_reg16 = 0x60,
|
|
|
|
DW_OP_reg17 = 0x61,
|
|
|
|
DW_OP_reg18 = 0x62,
|
|
|
|
DW_OP_reg19 = 0x63,
|
|
|
|
DW_OP_reg20 = 0x64,
|
|
|
|
DW_OP_reg21 = 0x65,
|
|
|
|
DW_OP_reg22 = 0x66,
|
|
|
|
DW_OP_reg23 = 0x67,
|
|
|
|
DW_OP_reg24 = 0x68,
|
|
|
|
DW_OP_reg25 = 0x69,
|
|
|
|
DW_OP_reg26 = 0x6a,
|
|
|
|
DW_OP_reg27 = 0x6b,
|
|
|
|
DW_OP_reg28 = 0x6c,
|
|
|
|
DW_OP_reg29 = 0x6d,
|
|
|
|
DW_OP_reg30 = 0x6e,
|
2006-02-27 12:43:29 +00:00
|
|
|
DW_OP_reg31 = 0x6f,
|
|
|
|
DW_OP_breg0 = 0x70,
|
|
|
|
DW_OP_breg1 = 0x71,
|
2010-06-17 01:23:24 +00:00
|
|
|
DW_OP_breg2 = 0x72,
|
|
|
|
DW_OP_breg3 = 0x73,
|
|
|
|
DW_OP_breg4 = 0x74,
|
|
|
|
DW_OP_breg5 = 0x75,
|
|
|
|
DW_OP_breg6 = 0x76,
|
|
|
|
DW_OP_breg7 = 0x77,
|
|
|
|
DW_OP_breg8 = 0x78,
|
|
|
|
DW_OP_breg9 = 0x79,
|
|
|
|
DW_OP_breg10 = 0x7a,
|
|
|
|
DW_OP_breg11 = 0x7b,
|
|
|
|
DW_OP_breg12 = 0x7c,
|
|
|
|
DW_OP_breg13 = 0x7d,
|
|
|
|
DW_OP_breg14 = 0x7e,
|
|
|
|
DW_OP_breg15 = 0x7f,
|
|
|
|
DW_OP_breg16 = 0x80,
|
|
|
|
DW_OP_breg17 = 0x81,
|
|
|
|
DW_OP_breg18 = 0x82,
|
|
|
|
DW_OP_breg19 = 0x83,
|
|
|
|
DW_OP_breg20 = 0x84,
|
|
|
|
DW_OP_breg21 = 0x85,
|
|
|
|
DW_OP_breg22 = 0x86,
|
|
|
|
DW_OP_breg23 = 0x87,
|
|
|
|
DW_OP_breg24 = 0x88,
|
|
|
|
DW_OP_breg25 = 0x89,
|
|
|
|
DW_OP_breg26 = 0x8a,
|
|
|
|
DW_OP_breg27 = 0x8b,
|
|
|
|
DW_OP_breg28 = 0x8c,
|
|
|
|
DW_OP_breg29 = 0x8d,
|
|
|
|
DW_OP_breg30 = 0x8e,
|
2006-02-27 12:43:29 +00:00
|
|
|
DW_OP_breg31 = 0x8f,
|
|
|
|
DW_OP_regx = 0x90,
|
|
|
|
DW_OP_fbreg = 0x91,
|
|
|
|
DW_OP_bregx = 0x92,
|
|
|
|
DW_OP_piece = 0x93,
|
|
|
|
DW_OP_deref_size = 0x94,
|
|
|
|
DW_OP_xderef_size = 0x95,
|
|
|
|
DW_OP_nop = 0x96,
|
|
|
|
DW_OP_push_object_address = 0x97,
|
|
|
|
DW_OP_call2 = 0x98,
|
|
|
|
DW_OP_call4 = 0x99,
|
|
|
|
DW_OP_call_ref = 0x9a,
|
|
|
|
DW_OP_form_tls_address = 0x9b,
|
|
|
|
DW_OP_call_frame_cfa = 0x9c,
|
2011-04-21 22:26:13 +00:00
|
|
|
DW_OP_bit_piece = 0x9d,
|
2011-09-15 04:23:44 +00:00
|
|
|
DW_OP_implicit_value = 0x9e,
|
|
|
|
DW_OP_stack_value = 0x9f,
|
2006-02-27 12:43:29 +00:00
|
|
|
DW_OP_lo_user = 0xe0,
|
|
|
|
DW_OP_hi_user = 0xff,
|
|
|
|
|
2013-10-07 18:39:18 +00:00
|
|
|
// Extensions for GNU-style thread-local storage.
|
|
|
|
DW_OP_GNU_push_tls_address = 0xe0,
|
|
|
|
|
2012-11-16 23:04:31 +00:00
|
|
|
// Extensions for Fission proposal.
|
|
|
|
DW_OP_GNU_addr_index = 0xfb,
|
2013-10-21 17:28:37 +00:00
|
|
|
DW_OP_GNU_const_index = 0xfc
|
|
|
|
};
|
2012-11-16 23:04:31 +00:00
|
|
|
|
2013-10-21 17:28:37 +00:00
|
|
|
enum TypeKind {
|
2006-02-27 12:43:29 +00:00
|
|
|
// Encoding attribute values
|
|
|
|
DW_ATE_address = 0x01,
|
|
|
|
DW_ATE_boolean = 0x02,
|
|
|
|
DW_ATE_complex_float = 0x03,
|
|
|
|
DW_ATE_float = 0x04,
|
|
|
|
DW_ATE_signed = 0x05,
|
|
|
|
DW_ATE_signed_char = 0x06,
|
|
|
|
DW_ATE_unsigned = 0x07,
|
|
|
|
DW_ATE_unsigned_char = 0x08,
|
|
|
|
DW_ATE_imaginary_float = 0x09,
|
|
|
|
DW_ATE_packed_decimal = 0x0a,
|
|
|
|
DW_ATE_numeric_string = 0x0b,
|
|
|
|
DW_ATE_edited = 0x0c,
|
|
|
|
DW_ATE_signed_fixed = 0x0d,
|
|
|
|
DW_ATE_unsigned_fixed = 0x0e,
|
|
|
|
DW_ATE_decimal_float = 0x0f,
|
2011-09-13 16:39:59 +00:00
|
|
|
DW_ATE_UTF = 0x10,
|
2006-02-27 12:43:29 +00:00
|
|
|
DW_ATE_lo_user = 0x80,
|
2013-10-21 17:28:37 +00:00
|
|
|
DW_ATE_hi_user = 0xff
|
|
|
|
};
|
2006-02-27 12:43:29 +00:00
|
|
|
|
2013-10-21 17:28:37 +00:00
|
|
|
enum DecimalSignEncoding {
|
2006-02-27 12:43:29 +00:00
|
|
|
// Decimal sign attribute values
|
|
|
|
DW_DS_unsigned = 0x01,
|
|
|
|
DW_DS_leading_overpunch = 0x02,
|
|
|
|
DW_DS_trailing_overpunch = 0x03,
|
|
|
|
DW_DS_leading_separate = 0x04,
|
2013-10-21 17:28:37 +00:00
|
|
|
DW_DS_trailing_separate = 0x05
|
|
|
|
};
|
2006-02-27 12:43:29 +00:00
|
|
|
|
2013-10-21 17:28:37 +00:00
|
|
|
enum EndianityEncoding {
|
2006-02-27 12:43:29 +00:00
|
|
|
// Endianity attribute values
|
|
|
|
DW_END_default = 0x00,
|
|
|
|
DW_END_big = 0x01,
|
|
|
|
DW_END_little = 0x02,
|
|
|
|
DW_END_lo_user = 0x40,
|
2013-10-21 17:28:37 +00:00
|
|
|
DW_END_hi_user = 0xff
|
|
|
|
};
|
2006-02-27 12:43:29 +00:00
|
|
|
|
2013-10-21 17:28:37 +00:00
|
|
|
enum AccessAttribute {
|
2006-02-27 12:43:29 +00:00
|
|
|
// Accessibility codes
|
|
|
|
DW_ACCESS_public = 0x01,
|
|
|
|
DW_ACCESS_protected = 0x02,
|
2013-10-21 17:28:37 +00:00
|
|
|
DW_ACCESS_private = 0x03
|
|
|
|
};
|
2006-02-27 12:43:29 +00:00
|
|
|
|
2013-10-21 17:28:37 +00:00
|
|
|
enum VisibilityAttribute {
|
2009-02-20 22:51:36 +00:00
|
|
|
// Visibility codes
|
2006-02-27 12:43:29 +00:00
|
|
|
DW_VIS_local = 0x01,
|
|
|
|
DW_VIS_exported = 0x02,
|
2013-10-21 17:28:37 +00:00
|
|
|
DW_VIS_qualified = 0x03
|
|
|
|
};
|
2006-02-27 12:43:29 +00:00
|
|
|
|
2013-10-21 17:28:37 +00:00
|
|
|
enum VirtualityAttribute {
|
2006-02-27 12:43:29 +00:00
|
|
|
// Virtuality codes
|
|
|
|
DW_VIRTUALITY_none = 0x00,
|
|
|
|
DW_VIRTUALITY_virtual = 0x01,
|
2013-10-21 17:28:37 +00:00
|
|
|
DW_VIRTUALITY_pure_virtual = 0x02
|
|
|
|
};
|
2009-02-20 22:51:36 +00:00
|
|
|
|
2013-10-21 17:28:37 +00:00
|
|
|
enum SourceLanguage {
|
2006-02-27 12:43:29 +00:00
|
|
|
// Language names
|
|
|
|
DW_LANG_C89 = 0x0001,
|
|
|
|
DW_LANG_C = 0x0002,
|
|
|
|
DW_LANG_Ada83 = 0x0003,
|
|
|
|
DW_LANG_C_plus_plus = 0x0004,
|
|
|
|
DW_LANG_Cobol74 = 0x0005,
|
|
|
|
DW_LANG_Cobol85 = 0x0006,
|
|
|
|
DW_LANG_Fortran77 = 0x0007,
|
|
|
|
DW_LANG_Fortran90 = 0x0008,
|
|
|
|
DW_LANG_Pascal83 = 0x0009,
|
|
|
|
DW_LANG_Modula2 = 0x000a,
|
|
|
|
DW_LANG_Java = 0x000b,
|
|
|
|
DW_LANG_C99 = 0x000c,
|
|
|
|
DW_LANG_Ada95 = 0x000d,
|
|
|
|
DW_LANG_Fortran95 = 0x000e,
|
|
|
|
DW_LANG_PLI = 0x000f,
|
|
|
|
DW_LANG_ObjC = 0x0010,
|
|
|
|
DW_LANG_ObjC_plus_plus = 0x0011,
|
|
|
|
DW_LANG_UPC = 0x0012,
|
|
|
|
DW_LANG_D = 0x0013,
|
2013-12-18 21:48:14 +00:00
|
|
|
// New in DWARF 5:
|
2011-09-15 04:23:44 +00:00
|
|
|
DW_LANG_Python = 0x0014,
|
2013-12-18 21:48:14 +00:00
|
|
|
DW_LANG_OpenCL = 0x0015,
|
|
|
|
DW_LANG_Go = 0x0016,
|
|
|
|
DW_LANG_Modula3 = 0x0017,
|
|
|
|
DW_LANG_Haskell = 0x0018,
|
|
|
|
DW_LANG_C_plus_plus_03 = 0x0019,
|
|
|
|
DW_LANG_C_plus_plus_11 = 0x001a,
|
|
|
|
DW_LANG_OCaml = 0x001b,
|
|
|
|
|
2006-02-27 12:43:29 +00:00
|
|
|
DW_LANG_lo_user = 0x8000,
|
2011-12-09 18:09:40 +00:00
|
|
|
DW_LANG_Mips_Assembler = 0x8001,
|
2013-10-21 17:28:37 +00:00
|
|
|
DW_LANG_hi_user = 0xffff
|
|
|
|
};
|
2009-02-20 22:51:36 +00:00
|
|
|
|
2013-10-21 17:28:37 +00:00
|
|
|
enum CaseSensitivity {
|
2006-02-27 12:43:29 +00:00
|
|
|
// Identifier case codes
|
|
|
|
DW_ID_case_sensitive = 0x00,
|
|
|
|
DW_ID_up_case = 0x01,
|
|
|
|
DW_ID_down_case = 0x02,
|
2013-10-21 17:28:37 +00:00
|
|
|
DW_ID_case_insensitive = 0x03
|
|
|
|
};
|
2006-02-27 12:43:29 +00:00
|
|
|
|
2013-10-21 17:28:37 +00:00
|
|
|
enum CallingConvention {
|
2006-02-27 12:43:29 +00:00
|
|
|
// Calling convention codes
|
|
|
|
DW_CC_normal = 0x01,
|
|
|
|
DW_CC_program = 0x02,
|
|
|
|
DW_CC_nocall = 0x03,
|
|
|
|
DW_CC_lo_user = 0x40,
|
2013-10-21 17:28:37 +00:00
|
|
|
DW_CC_hi_user = 0xff
|
|
|
|
};
|
2006-02-27 12:43:29 +00:00
|
|
|
|
2013-10-21 17:28:37 +00:00
|
|
|
enum InlineAttribute {
|
2006-02-27 12:43:29 +00:00
|
|
|
// Inline codes
|
|
|
|
DW_INL_not_inlined = 0x00,
|
|
|
|
DW_INL_inlined = 0x01,
|
|
|
|
DW_INL_declared_not_inlined = 0x02,
|
2013-10-21 17:28:37 +00:00
|
|
|
DW_INL_declared_inlined = 0x03
|
|
|
|
};
|
2006-02-27 12:43:29 +00:00
|
|
|
|
2013-10-21 17:28:37 +00:00
|
|
|
enum ArrayDimensionOrdering {
|
2009-02-20 22:51:36 +00:00
|
|
|
// Array ordering
|
2006-02-27 12:43:29 +00:00
|
|
|
DW_ORD_row_major = 0x00,
|
2013-10-21 17:28:37 +00:00
|
|
|
DW_ORD_col_major = 0x01
|
|
|
|
};
|
2006-02-27 12:43:29 +00:00
|
|
|
|
2013-10-21 17:28:37 +00:00
|
|
|
enum DiscriminantList {
|
2006-02-27 12:43:29 +00:00
|
|
|
// Discriminant descriptor values
|
|
|
|
DW_DSC_label = 0x00,
|
2013-10-21 17:28:37 +00:00
|
|
|
DW_DSC_range = 0x01
|
|
|
|
};
|
2006-02-27 12:43:29 +00:00
|
|
|
|
2013-10-21 17:28:37 +00:00
|
|
|
enum LineNumberOps {
|
2006-02-27 12:43:29 +00:00
|
|
|
// Line Number Standard Opcode Encodings
|
2010-09-30 17:16:09 +00:00
|
|
|
DW_LNS_extended_op = 0x00,
|
2006-02-27 12:43:29 +00:00
|
|
|
DW_LNS_copy = 0x01,
|
|
|
|
DW_LNS_advance_pc = 0x02,
|
|
|
|
DW_LNS_advance_line = 0x03,
|
|
|
|
DW_LNS_set_file = 0x04,
|
|
|
|
DW_LNS_set_column = 0x05,
|
|
|
|
DW_LNS_negate_stmt = 0x06,
|
|
|
|
DW_LNS_set_basic_block = 0x07,
|
|
|
|
DW_LNS_const_add_pc = 0x08,
|
|
|
|
DW_LNS_fixed_advance_pc = 0x09,
|
|
|
|
DW_LNS_set_prologue_end = 0x0a,
|
|
|
|
DW_LNS_set_epilogue_begin = 0x0b,
|
2013-10-21 17:28:37 +00:00
|
|
|
DW_LNS_set_isa = 0x0c
|
|
|
|
};
|
2006-02-27 12:43:29 +00:00
|
|
|
|
2013-10-21 17:28:37 +00:00
|
|
|
enum LineNumberExtendedOps {
|
2006-02-27 12:43:29 +00:00
|
|
|
// Line Number Extended Opcode Encodings
|
|
|
|
DW_LNE_end_sequence = 0x01,
|
|
|
|
DW_LNE_set_address = 0x02,
|
|
|
|
DW_LNE_define_file = 0x03,
|
2011-09-15 04:23:44 +00:00
|
|
|
DW_LNE_set_discriminator = 0x04,
|
2006-02-27 12:43:29 +00:00
|
|
|
DW_LNE_lo_user = 0x80,
|
2013-10-21 17:28:37 +00:00
|
|
|
DW_LNE_hi_user = 0xff
|
|
|
|
};
|
2006-02-27 12:43:29 +00:00
|
|
|
|
2013-10-21 17:28:37 +00:00
|
|
|
enum MacinfoRecordType {
|
2006-02-27 12:43:29 +00:00
|
|
|
// Macinfo Type Encodings
|
|
|
|
DW_MACINFO_define = 0x01,
|
|
|
|
DW_MACINFO_undef = 0x02,
|
|
|
|
DW_MACINFO_start_file = 0x03,
|
|
|
|
DW_MACINFO_end_file = 0x04,
|
2013-10-21 17:28:37 +00:00
|
|
|
DW_MACINFO_vendor_ext = 0xff
|
|
|
|
};
|
2006-02-27 12:43:29 +00:00
|
|
|
|
2013-10-21 17:28:37 +00:00
|
|
|
enum CallFrameInfo {
|
2006-02-27 12:43:29 +00:00
|
|
|
// Call frame instruction encodings
|
2006-03-23 18:07:55 +00:00
|
|
|
DW_CFA_extended = 0x00,
|
2009-08-21 21:03:57 +00:00
|
|
|
DW_CFA_nop = 0x00,
|
2006-02-27 12:43:29 +00:00
|
|
|
DW_CFA_advance_loc = 0x40,
|
|
|
|
DW_CFA_offset = 0x80,
|
|
|
|
DW_CFA_restore = 0xc0,
|
|
|
|
DW_CFA_set_loc = 0x01,
|
|
|
|
DW_CFA_advance_loc1 = 0x02,
|
|
|
|
DW_CFA_advance_loc2 = 0x03,
|
|
|
|
DW_CFA_advance_loc4 = 0x04,
|
|
|
|
DW_CFA_offset_extended = 0x05,
|
|
|
|
DW_CFA_restore_extended = 0x06,
|
|
|
|
DW_CFA_undefined = 0x07,
|
|
|
|
DW_CFA_same_value = 0x08,
|
|
|
|
DW_CFA_register = 0x09,
|
|
|
|
DW_CFA_remember_state = 0x0a,
|
|
|
|
DW_CFA_restore_state = 0x0b,
|
|
|
|
DW_CFA_def_cfa = 0x0c,
|
|
|
|
DW_CFA_def_cfa_register = 0x0d,
|
|
|
|
DW_CFA_def_cfa_offset = 0x0e,
|
|
|
|
DW_CFA_def_cfa_expression = 0x0f,
|
|
|
|
DW_CFA_expression = 0x10,
|
|
|
|
DW_CFA_offset_extended_sf = 0x11,
|
|
|
|
DW_CFA_def_cfa_sf = 0x12,
|
|
|
|
DW_CFA_def_cfa_offset_sf = 0x13,
|
|
|
|
DW_CFA_val_offset = 0x14,
|
|
|
|
DW_CFA_val_offset_sf = 0x15,
|
|
|
|
DW_CFA_val_expression = 0x16,
|
2011-09-15 05:21:03 +00:00
|
|
|
DW_CFA_MIPS_advance_loc8 = 0x1d,
|
|
|
|
DW_CFA_GNU_window_save = 0x2d,
|
|
|
|
DW_CFA_GNU_args_size = 0x2e,
|
2006-02-27 12:43:29 +00:00
|
|
|
DW_CFA_lo_user = 0x1c,
|
2013-10-21 17:28:37 +00:00
|
|
|
DW_CFA_hi_user = 0x3f
|
|
|
|
};
|
|
|
|
|
|
|
|
enum Constants {
|
|
|
|
// Children flag
|
|
|
|
DW_CHILDREN_no = 0x00,
|
|
|
|
DW_CHILDREN_yes = 0x01,
|
2007-02-01 16:31:34 +00:00
|
|
|
|
|
|
|
DW_EH_PE_absptr = 0x00,
|
|
|
|
DW_EH_PE_omit = 0xff,
|
|
|
|
DW_EH_PE_uleb128 = 0x01,
|
|
|
|
DW_EH_PE_udata2 = 0x02,
|
|
|
|
DW_EH_PE_udata4 = 0x03,
|
|
|
|
DW_EH_PE_udata8 = 0x04,
|
|
|
|
DW_EH_PE_sleb128 = 0x09,
|
|
|
|
DW_EH_PE_sdata2 = 0x0A,
|
|
|
|
DW_EH_PE_sdata4 = 0x0B,
|
|
|
|
DW_EH_PE_sdata8 = 0x0C,
|
|
|
|
DW_EH_PE_signed = 0x08,
|
|
|
|
DW_EH_PE_pcrel = 0x10,
|
|
|
|
DW_EH_PE_textrel = 0x20,
|
|
|
|
DW_EH_PE_datarel = 0x30,
|
|
|
|
DW_EH_PE_funcrel = 0x40,
|
|
|
|
DW_EH_PE_aligned = 0x50,
|
2013-10-21 17:28:37 +00:00
|
|
|
DW_EH_PE_indirect = 0x80
|
|
|
|
};
|
2011-04-16 00:11:51 +00:00
|
|
|
|
2014-03-31 23:50:20 +00:00
|
|
|
// Constants for debug_loc.dwo in the DWARF5 Split Debug Info Proposal
|
2014-03-25 01:44:02 +00:00
|
|
|
enum LocationListEntry : unsigned char {
|
|
|
|
DW_LLE_end_of_list_entry,
|
|
|
|
DW_LLE_base_address_selection_entry,
|
|
|
|
DW_LLE_start_end_entry,
|
|
|
|
DW_LLE_start_length_entry,
|
|
|
|
DW_LLE_offset_pair_entry
|
|
|
|
};
|
|
|
|
|
2014-10-08 14:59:44 +00:00
|
|
|
/// Contstants for the DW_APPLE_PROPERTY_attributes attribute.
|
|
|
|
/// Keep this list in sync with clang's DeclSpec.h ObjCPropertyAttributeKind.
|
2013-10-21 17:28:37 +00:00
|
|
|
enum ApplePropertyAttributes {
|
2011-04-16 00:11:51 +00:00
|
|
|
// Apple Objective-C Property Attributes
|
|
|
|
DW_APPLE_PROPERTY_readonly = 0x01,
|
2014-10-08 14:59:44 +00:00
|
|
|
DW_APPLE_PROPERTY_getter = 0x02,
|
2011-04-16 00:11:51 +00:00
|
|
|
DW_APPLE_PROPERTY_assign = 0x04,
|
2014-10-08 14:59:44 +00:00
|
|
|
DW_APPLE_PROPERTY_readwrite = 0x08,
|
|
|
|
DW_APPLE_PROPERTY_retain = 0x10,
|
|
|
|
DW_APPLE_PROPERTY_copy = 0x20,
|
|
|
|
DW_APPLE_PROPERTY_nonatomic = 0x40,
|
|
|
|
DW_APPLE_PROPERTY_setter = 0x80,
|
|
|
|
DW_APPLE_PROPERTY_atomic = 0x100,
|
|
|
|
DW_APPLE_PROPERTY_weak = 0x200,
|
|
|
|
DW_APPLE_PROPERTY_strong = 0x400,
|
|
|
|
DW_APPLE_PROPERTY_unsafe_unretained = 0x800
|
2006-02-27 12:43:29 +00:00
|
|
|
};
|
|
|
|
|
2013-09-05 18:20:16 +00:00
|
|
|
// Constants for the DWARF5 Accelerator Table Proposal
|
|
|
|
enum AcceleratorTable {
|
|
|
|
// Data layout descriptors.
|
|
|
|
DW_ATOM_null = 0u, // Marker as the end of a list of atoms.
|
|
|
|
DW_ATOM_die_offset = 1u, // DIE offset in the debug_info section.
|
2013-09-09 20:03:08 +00:00
|
|
|
DW_ATOM_cu_offset = 2u, // Offset of the compile unit header that contains the
|
2013-09-05 18:20:16 +00:00
|
|
|
// item in question.
|
2013-09-09 20:03:08 +00:00
|
|
|
DW_ATOM_die_tag = 3u, // A tag entry.
|
2013-09-05 18:20:16 +00:00
|
|
|
DW_ATOM_type_flags = 4u, // Set of flags for a type.
|
|
|
|
|
|
|
|
// DW_ATOM_type_flags values.
|
|
|
|
|
|
|
|
// Always set for C++, only set for ObjC if this is the @implementation for a
|
|
|
|
// class.
|
|
|
|
DW_FLAG_type_implementation = 2u,
|
|
|
|
|
|
|
|
// Hash functions.
|
|
|
|
|
|
|
|
// Daniel J. Bernstein hash.
|
|
|
|
DW_hash_function_djb = 0u
|
|
|
|
};
|
|
|
|
|
2013-09-09 20:03:11 +00:00
|
|
|
// Constants for the GNU pubnames/pubtypes extensions supporting gdb index.
|
2013-09-19 20:40:26 +00:00
|
|
|
enum GDBIndexEntryKind {
|
|
|
|
GIEK_NONE,
|
|
|
|
GIEK_TYPE,
|
|
|
|
GIEK_VARIABLE,
|
|
|
|
GIEK_FUNCTION,
|
|
|
|
GIEK_OTHER,
|
|
|
|
GIEK_UNUSED5,
|
|
|
|
GIEK_UNUSED6,
|
2013-09-19 23:21:07 +00:00
|
|
|
GIEK_UNUSED7
|
2013-09-09 20:03:11 +00:00
|
|
|
};
|
|
|
|
|
2013-09-19 20:40:26 +00:00
|
|
|
enum GDBIndexEntryLinkage {
|
|
|
|
GIEL_EXTERNAL,
|
|
|
|
GIEL_STATIC
|
|
|
|
};
|
|
|
|
|
2014-10-23 04:08:38 +00:00
|
|
|
/// \defgroup DwarfConstantsDumping Dwarf constants dumping functions
|
|
|
|
///
|
|
|
|
/// All these functions map their argument's value back to the
|
|
|
|
/// corresponding enumerator name or return nullptr if the value isn't
|
|
|
|
/// known.
|
|
|
|
///
|
|
|
|
/// @{
|
|
|
|
const char *TagString(unsigned Tag);
|
|
|
|
const char *ChildrenString(unsigned Children);
|
|
|
|
const char *AttributeString(unsigned Attribute);
|
|
|
|
const char *FormEncodingString(unsigned Encoding);
|
|
|
|
const char *OperationEncodingString(unsigned Encoding);
|
|
|
|
const char *AttributeEncodingString(unsigned Encoding);
|
|
|
|
const char *DecimalSignString(unsigned Sign);
|
|
|
|
const char *EndianityString(unsigned Endian);
|
|
|
|
const char *AccessibilityString(unsigned Access);
|
|
|
|
const char *VisibilityString(unsigned Visibility);
|
|
|
|
const char *VirtualityString(unsigned Virtuality);
|
|
|
|
const char *LanguageString(unsigned Language);
|
|
|
|
const char *CaseString(unsigned Case);
|
|
|
|
const char *ConventionString(unsigned Convention);
|
|
|
|
const char *InlineCodeString(unsigned Code);
|
|
|
|
const char *ArrayOrderString(unsigned Order);
|
|
|
|
const char *DiscriminantString(unsigned Discriminant);
|
|
|
|
const char *LNStandardString(unsigned Standard);
|
|
|
|
const char *LNExtendedString(unsigned Encoding);
|
|
|
|
const char *MacinfoString(unsigned Encoding);
|
|
|
|
const char *CallFrameString(unsigned Encoding);
|
|
|
|
const char *ApplePropertyString(unsigned);
|
|
|
|
const char *AtomTypeString(unsigned Atom);
|
|
|
|
const char *GDBIndexEntryKindString(GDBIndexEntryKind Kind);
|
2013-09-20 00:33:15 +00:00
|
|
|
const char *GDBIndexEntryLinkageString(GDBIndexEntryLinkage Linkage);
|
2014-10-23 04:08:38 +00:00
|
|
|
/// @}
|
2013-09-19 22:19:37 +00:00
|
|
|
|
2014-10-23 04:08:38 +00:00
|
|
|
/// \brief Returns the symbolic string representing Val when used as a value
|
|
|
|
/// for attribute Attr.
|
|
|
|
const char *AttributeValueString(uint16_t Attr, unsigned Val);
|
|
|
|
|
|
|
|
/// \brief Decsribes an entry of the various gnu_pub* debug sections.
|
|
|
|
///
|
2013-09-19 20:40:26 +00:00
|
|
|
/// The gnu_pub* kind looks like:
|
|
|
|
///
|
|
|
|
/// 0-3 reserved
|
|
|
|
/// 4-6 symbol kind
|
|
|
|
/// 7 0 == global, 1 == static
|
|
|
|
///
|
|
|
|
/// A gdb_index descriptor includes the above kind, shifted 24 bits up with the
|
|
|
|
/// offset of the cu within the debug_info section stored in those 24 bits.
|
|
|
|
struct PubIndexEntryDescriptor {
|
|
|
|
GDBIndexEntryKind Kind;
|
2013-09-19 23:01:29 +00:00
|
|
|
GDBIndexEntryLinkage Linkage;
|
|
|
|
PubIndexEntryDescriptor(GDBIndexEntryKind Kind, GDBIndexEntryLinkage Linkage)
|
|
|
|
: Kind(Kind), Linkage(Linkage) {}
|
2013-09-19 20:40:26 +00:00
|
|
|
/* implicit */ PubIndexEntryDescriptor(GDBIndexEntryKind Kind)
|
2013-09-19 23:01:29 +00:00
|
|
|
: Kind(Kind), Linkage(GIEL_EXTERNAL) {}
|
2013-09-19 20:40:26 +00:00
|
|
|
explicit PubIndexEntryDescriptor(uint8_t Value)
|
|
|
|
: Kind(static_cast<GDBIndexEntryKind>((Value & KIND_MASK) >>
|
|
|
|
KIND_OFFSET)),
|
2013-09-19 23:01:29 +00:00
|
|
|
Linkage(static_cast<GDBIndexEntryLinkage>((Value & LINKAGE_MASK) >>
|
|
|
|
LINKAGE_OFFSET)) {}
|
|
|
|
uint8_t toBits() { return Kind << KIND_OFFSET | Linkage << LINKAGE_OFFSET; }
|
|
|
|
|
2013-09-19 20:40:26 +00:00
|
|
|
private:
|
2013-09-19 21:30:00 +00:00
|
|
|
enum {
|
|
|
|
KIND_OFFSET = 4,
|
|
|
|
KIND_MASK = 7 << KIND_OFFSET,
|
2013-09-19 22:19:37 +00:00
|
|
|
LINKAGE_OFFSET = 7,
|
|
|
|
LINKAGE_MASK = 1 << LINKAGE_OFFSET
|
2013-09-19 21:30:00 +00:00
|
|
|
};
|
2013-09-19 20:40:26 +00:00
|
|
|
};
|
2013-09-09 20:03:11 +00:00
|
|
|
|
2014-09-04 19:39:20 +00:00
|
|
|
|
2006-02-27 12:43:29 +00:00
|
|
|
} // End of namespace dwarf
|
2006-01-26 14:45:22 +00:00
|
|
|
|
2006-02-27 22:37:23 +00:00
|
|
|
} // End of namespace llvm
|
|
|
|
|
2006-01-26 14:45:22 +00:00
|
|
|
#endif
|