15796c8dcSSimon Schubert /* Declarations and definitions of codes relating to the DWARF2 and 25796c8dcSSimon Schubert DWARF3 symbolic debugging information formats. 35796c8dcSSimon Schubert Copyright (C) 1992, 1993, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 4*cf7f2e2dSJohn Marino 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 5*cf7f2e2dSJohn Marino Free Software Foundation, Inc. 65796c8dcSSimon Schubert 75796c8dcSSimon Schubert Written by Gary Funck (gary@intrepid.com) The Ada Joint Program 85796c8dcSSimon Schubert Office (AJPO), Florida State University and Silicon Graphics Inc. 95796c8dcSSimon Schubert provided support for this effort -- June 21, 1995. 105796c8dcSSimon Schubert 115796c8dcSSimon Schubert Derived from the DWARF 1 implementation written by Ron Guilmette 125796c8dcSSimon Schubert (rfg@netcom.com), November 1990. 135796c8dcSSimon Schubert 145796c8dcSSimon Schubert This file is part of GCC. 155796c8dcSSimon Schubert 165796c8dcSSimon Schubert GCC is free software; you can redistribute it and/or modify it under 175796c8dcSSimon Schubert the terms of the GNU General Public License as published by the Free 185796c8dcSSimon Schubert Software Foundation; either version 3, or (at your option) any later 195796c8dcSSimon Schubert version. 205796c8dcSSimon Schubert 215796c8dcSSimon Schubert GCC is distributed in the hope that it will be useful, but WITHOUT 225796c8dcSSimon Schubert ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 235796c8dcSSimon Schubert or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 245796c8dcSSimon Schubert License for more details. 255796c8dcSSimon Schubert 265796c8dcSSimon Schubert Under Section 7 of GPL version 3, you are granted additional 275796c8dcSSimon Schubert permissions described in the GCC Runtime Library Exception, version 285796c8dcSSimon Schubert 3.1, as published by the Free Software Foundation. 295796c8dcSSimon Schubert 305796c8dcSSimon Schubert You should have received a copy of the GNU General Public License and 315796c8dcSSimon Schubert a copy of the GCC Runtime Library Exception along with this program; 325796c8dcSSimon Schubert see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 335796c8dcSSimon Schubert <http://www.gnu.org/licenses/>. */ 345796c8dcSSimon Schubert 355796c8dcSSimon Schubert /* This file is derived from the DWARF specification (a public document) 365796c8dcSSimon Schubert Revision 2.0.0 (July 27, 1993) developed by the UNIX International 375796c8dcSSimon Schubert Programming Languages Special Interest Group (UI/PLSIG) and distributed 385796c8dcSSimon Schubert by UNIX International. Copies of this specification are available from 395796c8dcSSimon Schubert UNIX International, 20 Waterview Boulevard, Parsippany, NJ, 07054. 405796c8dcSSimon Schubert 415796c8dcSSimon Schubert This file also now contains definitions from the DWARF 3 specification 425796c8dcSSimon Schubert published Dec 20, 2005, available from: http://dwarf.freestandards.org. */ 435796c8dcSSimon Schubert 445796c8dcSSimon Schubert /* This file is shared between GCC and GDB, and should not contain 455796c8dcSSimon Schubert prototypes. */ 465796c8dcSSimon Schubert 475796c8dcSSimon Schubert #ifndef _ELF_DWARF2_H 485796c8dcSSimon Schubert #define _ELF_DWARF2_H 495796c8dcSSimon Schubert 505796c8dcSSimon Schubert /* Structure found in the .debug_line section. */ 515796c8dcSSimon Schubert typedef struct 525796c8dcSSimon Schubert { 535796c8dcSSimon Schubert unsigned char li_length [4]; 545796c8dcSSimon Schubert unsigned char li_version [2]; 555796c8dcSSimon Schubert unsigned char li_prologue_length [4]; 565796c8dcSSimon Schubert unsigned char li_min_insn_length [1]; 575796c8dcSSimon Schubert unsigned char li_default_is_stmt [1]; 585796c8dcSSimon Schubert unsigned char li_line_base [1]; 595796c8dcSSimon Schubert unsigned char li_line_range [1]; 605796c8dcSSimon Schubert unsigned char li_opcode_base [1]; 615796c8dcSSimon Schubert } 625796c8dcSSimon Schubert DWARF2_External_LineInfo; 635796c8dcSSimon Schubert 645796c8dcSSimon Schubert typedef struct 655796c8dcSSimon Schubert { 665796c8dcSSimon Schubert unsigned long li_length; 675796c8dcSSimon Schubert unsigned short li_version; 685796c8dcSSimon Schubert unsigned int li_prologue_length; 695796c8dcSSimon Schubert unsigned char li_min_insn_length; 70*cf7f2e2dSJohn Marino unsigned char li_max_ops_per_insn; 715796c8dcSSimon Schubert unsigned char li_default_is_stmt; 725796c8dcSSimon Schubert int li_line_base; 735796c8dcSSimon Schubert unsigned char li_line_range; 745796c8dcSSimon Schubert unsigned char li_opcode_base; 755796c8dcSSimon Schubert } 765796c8dcSSimon Schubert DWARF2_Internal_LineInfo; 775796c8dcSSimon Schubert 785796c8dcSSimon Schubert /* Structure found in .debug_pubnames section. */ 795796c8dcSSimon Schubert typedef struct 805796c8dcSSimon Schubert { 815796c8dcSSimon Schubert unsigned char pn_length [4]; 825796c8dcSSimon Schubert unsigned char pn_version [2]; 835796c8dcSSimon Schubert unsigned char pn_offset [4]; 845796c8dcSSimon Schubert unsigned char pn_size [4]; 855796c8dcSSimon Schubert } 865796c8dcSSimon Schubert DWARF2_External_PubNames; 875796c8dcSSimon Schubert 885796c8dcSSimon Schubert typedef struct 895796c8dcSSimon Schubert { 905796c8dcSSimon Schubert unsigned long pn_length; 915796c8dcSSimon Schubert unsigned short pn_version; 925796c8dcSSimon Schubert unsigned long pn_offset; 935796c8dcSSimon Schubert unsigned long pn_size; 945796c8dcSSimon Schubert } 955796c8dcSSimon Schubert DWARF2_Internal_PubNames; 965796c8dcSSimon Schubert 975796c8dcSSimon Schubert /* Structure found in .debug_info section. */ 985796c8dcSSimon Schubert typedef struct 995796c8dcSSimon Schubert { 1005796c8dcSSimon Schubert unsigned char cu_length [4]; 1015796c8dcSSimon Schubert unsigned char cu_version [2]; 1025796c8dcSSimon Schubert unsigned char cu_abbrev_offset [4]; 1035796c8dcSSimon Schubert unsigned char cu_pointer_size [1]; 1045796c8dcSSimon Schubert } 1055796c8dcSSimon Schubert DWARF2_External_CompUnit; 1065796c8dcSSimon Schubert 1075796c8dcSSimon Schubert typedef struct 1085796c8dcSSimon Schubert { 1095796c8dcSSimon Schubert unsigned long cu_length; 1105796c8dcSSimon Schubert unsigned short cu_version; 1115796c8dcSSimon Schubert unsigned long cu_abbrev_offset; 1125796c8dcSSimon Schubert unsigned char cu_pointer_size; 1135796c8dcSSimon Schubert } 1145796c8dcSSimon Schubert DWARF2_Internal_CompUnit; 1155796c8dcSSimon Schubert 1165796c8dcSSimon Schubert typedef struct 1175796c8dcSSimon Schubert { 1185796c8dcSSimon Schubert unsigned char ar_length [4]; 1195796c8dcSSimon Schubert unsigned char ar_version [2]; 1205796c8dcSSimon Schubert unsigned char ar_info_offset [4]; 1215796c8dcSSimon Schubert unsigned char ar_pointer_size [1]; 1225796c8dcSSimon Schubert unsigned char ar_segment_size [1]; 1235796c8dcSSimon Schubert } 1245796c8dcSSimon Schubert DWARF2_External_ARange; 1255796c8dcSSimon Schubert 1265796c8dcSSimon Schubert typedef struct 1275796c8dcSSimon Schubert { 1285796c8dcSSimon Schubert unsigned long ar_length; 1295796c8dcSSimon Schubert unsigned short ar_version; 1305796c8dcSSimon Schubert unsigned long ar_info_offset; 1315796c8dcSSimon Schubert unsigned char ar_pointer_size; 1325796c8dcSSimon Schubert unsigned char ar_segment_size; 1335796c8dcSSimon Schubert } 1345796c8dcSSimon Schubert DWARF2_Internal_ARange; 1355796c8dcSSimon Schubert 1365796c8dcSSimon Schubert 1375796c8dcSSimon Schubert /* Tag names and codes. */ 1385796c8dcSSimon Schubert enum dwarf_tag 1395796c8dcSSimon Schubert { 1405796c8dcSSimon Schubert DW_TAG_padding = 0x00, 1415796c8dcSSimon Schubert DW_TAG_array_type = 0x01, 1425796c8dcSSimon Schubert DW_TAG_class_type = 0x02, 1435796c8dcSSimon Schubert DW_TAG_entry_point = 0x03, 1445796c8dcSSimon Schubert DW_TAG_enumeration_type = 0x04, 1455796c8dcSSimon Schubert DW_TAG_formal_parameter = 0x05, 1465796c8dcSSimon Schubert DW_TAG_imported_declaration = 0x08, 1475796c8dcSSimon Schubert DW_TAG_label = 0x0a, 1485796c8dcSSimon Schubert DW_TAG_lexical_block = 0x0b, 1495796c8dcSSimon Schubert DW_TAG_member = 0x0d, 1505796c8dcSSimon Schubert DW_TAG_pointer_type = 0x0f, 1515796c8dcSSimon Schubert DW_TAG_reference_type = 0x10, 1525796c8dcSSimon Schubert DW_TAG_compile_unit = 0x11, 1535796c8dcSSimon Schubert DW_TAG_string_type = 0x12, 1545796c8dcSSimon Schubert DW_TAG_structure_type = 0x13, 1555796c8dcSSimon Schubert DW_TAG_subroutine_type = 0x15, 1565796c8dcSSimon Schubert DW_TAG_typedef = 0x16, 1575796c8dcSSimon Schubert DW_TAG_union_type = 0x17, 1585796c8dcSSimon Schubert DW_TAG_unspecified_parameters = 0x18, 1595796c8dcSSimon Schubert DW_TAG_variant = 0x19, 1605796c8dcSSimon Schubert DW_TAG_common_block = 0x1a, 1615796c8dcSSimon Schubert DW_TAG_common_inclusion = 0x1b, 1625796c8dcSSimon Schubert DW_TAG_inheritance = 0x1c, 1635796c8dcSSimon Schubert DW_TAG_inlined_subroutine = 0x1d, 1645796c8dcSSimon Schubert DW_TAG_module = 0x1e, 1655796c8dcSSimon Schubert DW_TAG_ptr_to_member_type = 0x1f, 1665796c8dcSSimon Schubert DW_TAG_set_type = 0x20, 1675796c8dcSSimon Schubert DW_TAG_subrange_type = 0x21, 1685796c8dcSSimon Schubert DW_TAG_with_stmt = 0x22, 1695796c8dcSSimon Schubert DW_TAG_access_declaration = 0x23, 1705796c8dcSSimon Schubert DW_TAG_base_type = 0x24, 1715796c8dcSSimon Schubert DW_TAG_catch_block = 0x25, 1725796c8dcSSimon Schubert DW_TAG_const_type = 0x26, 1735796c8dcSSimon Schubert DW_TAG_constant = 0x27, 1745796c8dcSSimon Schubert DW_TAG_enumerator = 0x28, 1755796c8dcSSimon Schubert DW_TAG_file_type = 0x29, 1765796c8dcSSimon Schubert DW_TAG_friend = 0x2a, 1775796c8dcSSimon Schubert DW_TAG_namelist = 0x2b, 1785796c8dcSSimon Schubert DW_TAG_namelist_item = 0x2c, 1795796c8dcSSimon Schubert DW_TAG_packed_type = 0x2d, 1805796c8dcSSimon Schubert DW_TAG_subprogram = 0x2e, 1815796c8dcSSimon Schubert DW_TAG_template_type_param = 0x2f, 1825796c8dcSSimon Schubert DW_TAG_template_value_param = 0x30, 1835796c8dcSSimon Schubert DW_TAG_thrown_type = 0x31, 1845796c8dcSSimon Schubert DW_TAG_try_block = 0x32, 1855796c8dcSSimon Schubert DW_TAG_variant_part = 0x33, 1865796c8dcSSimon Schubert DW_TAG_variable = 0x34, 1875796c8dcSSimon Schubert DW_TAG_volatile_type = 0x35, 1885796c8dcSSimon Schubert /* DWARF 3. */ 1895796c8dcSSimon Schubert DW_TAG_dwarf_procedure = 0x36, 1905796c8dcSSimon Schubert DW_TAG_restrict_type = 0x37, 1915796c8dcSSimon Schubert DW_TAG_interface_type = 0x38, 1925796c8dcSSimon Schubert DW_TAG_namespace = 0x39, 1935796c8dcSSimon Schubert DW_TAG_imported_module = 0x3a, 1945796c8dcSSimon Schubert DW_TAG_unspecified_type = 0x3b, 1955796c8dcSSimon Schubert DW_TAG_partial_unit = 0x3c, 1965796c8dcSSimon Schubert DW_TAG_imported_unit = 0x3d, 1975796c8dcSSimon Schubert DW_TAG_condition = 0x3f, 1985796c8dcSSimon Schubert DW_TAG_shared_type = 0x40, 1995796c8dcSSimon Schubert /* DWARF 4. */ 2005796c8dcSSimon Schubert DW_TAG_type_unit = 0x41, 201*cf7f2e2dSJohn Marino DW_TAG_rvalue_reference_type = 0x42, 202*cf7f2e2dSJohn Marino DW_TAG_template_alias = 0x43, 2035796c8dcSSimon Schubert 2045796c8dcSSimon Schubert DW_TAG_lo_user = 0x4080, 2055796c8dcSSimon Schubert DW_TAG_hi_user = 0xffff, 2065796c8dcSSimon Schubert 2075796c8dcSSimon Schubert /* SGI/MIPS Extensions. */ 2085796c8dcSSimon Schubert DW_TAG_MIPS_loop = 0x4081, 209*cf7f2e2dSJohn Marino 2105796c8dcSSimon Schubert /* HP extensions. See: ftp://ftp.hp.com/pub/lang/tools/WDB/wdb-4.0.tar.gz . */ 2115796c8dcSSimon Schubert DW_TAG_HP_array_descriptor = 0x4090, 212*cf7f2e2dSJohn Marino DW_TAG_HP_Bliss_field = 0x4091, 213*cf7f2e2dSJohn Marino DW_TAG_HP_Bliss_field_set = 0x4092, 214*cf7f2e2dSJohn Marino 2155796c8dcSSimon Schubert /* GNU extensions. */ 2165796c8dcSSimon Schubert DW_TAG_format_label = 0x4101, /* For FORTRAN 77 and Fortran 90. */ 2175796c8dcSSimon Schubert DW_TAG_function_template = 0x4102, /* For C++. */ 2185796c8dcSSimon Schubert DW_TAG_class_template = 0x4103, /* For C++. */ 2195796c8dcSSimon Schubert DW_TAG_GNU_BINCL = 0x4104, 2205796c8dcSSimon Schubert DW_TAG_GNU_EINCL = 0x4105, 2215796c8dcSSimon Schubert /* Template template parameter. 2225796c8dcSSimon Schubert See http://gcc.gnu.org/wiki/TemplateParmsDwarf . */ 2235796c8dcSSimon Schubert DW_TAG_GNU_template_template_param = 0x4106, 224*cf7f2e2dSJohn Marino 225*cf7f2e2dSJohn Marino /* Template parameter pack extension, specified at 226*cf7f2e2dSJohn Marino http://wiki.dwarfstd.org/index.php?title=C%2B%2B0x:_Variadic_templates 227*cf7f2e2dSJohn Marino The values of these two TAGS are in the DW_TAG_GNU_* space until the tags 228*cf7f2e2dSJohn Marino are properly part of DWARF 5. */ 229*cf7f2e2dSJohn Marino DW_TAG_GNU_template_parameter_pack = 0x4107, 230*cf7f2e2dSJohn Marino DW_TAG_GNU_formal_parameter_pack = 0x4108, 2315796c8dcSSimon Schubert /* Extensions for UPC. See: http://upc.gwu.edu/~upc. */ 2325796c8dcSSimon Schubert DW_TAG_upc_shared_type = 0x8765, 2335796c8dcSSimon Schubert DW_TAG_upc_strict_type = 0x8766, 2345796c8dcSSimon Schubert DW_TAG_upc_relaxed_type = 0x8767, 2355796c8dcSSimon Schubert /* PGI (STMicroelectronics) extensions. No documentation available. */ 2365796c8dcSSimon Schubert DW_TAG_PGI_kanji_type = 0xA000, 2375796c8dcSSimon Schubert DW_TAG_PGI_interface_block = 0xA020 2385796c8dcSSimon Schubert }; 2395796c8dcSSimon Schubert 2405796c8dcSSimon Schubert /* Flag that tells whether entry has a child or not. */ 2415796c8dcSSimon Schubert #define DW_children_no 0 2425796c8dcSSimon Schubert #define DW_children_yes 1 2435796c8dcSSimon Schubert 2445796c8dcSSimon Schubert /* Form names and codes. */ 2455796c8dcSSimon Schubert enum dwarf_form 2465796c8dcSSimon Schubert { 2475796c8dcSSimon Schubert DW_FORM_addr = 0x01, 2485796c8dcSSimon Schubert DW_FORM_block2 = 0x03, 2495796c8dcSSimon Schubert DW_FORM_block4 = 0x04, 2505796c8dcSSimon Schubert DW_FORM_data2 = 0x05, 2515796c8dcSSimon Schubert DW_FORM_data4 = 0x06, 2525796c8dcSSimon Schubert DW_FORM_data8 = 0x07, 2535796c8dcSSimon Schubert DW_FORM_string = 0x08, 2545796c8dcSSimon Schubert DW_FORM_block = 0x09, 2555796c8dcSSimon Schubert DW_FORM_block1 = 0x0a, 2565796c8dcSSimon Schubert DW_FORM_data1 = 0x0b, 2575796c8dcSSimon Schubert DW_FORM_flag = 0x0c, 2585796c8dcSSimon Schubert DW_FORM_sdata = 0x0d, 2595796c8dcSSimon Schubert DW_FORM_strp = 0x0e, 2605796c8dcSSimon Schubert DW_FORM_udata = 0x0f, 2615796c8dcSSimon Schubert DW_FORM_ref_addr = 0x10, 2625796c8dcSSimon Schubert DW_FORM_ref1 = 0x11, 2635796c8dcSSimon Schubert DW_FORM_ref2 = 0x12, 2645796c8dcSSimon Schubert DW_FORM_ref4 = 0x13, 2655796c8dcSSimon Schubert DW_FORM_ref8 = 0x14, 2665796c8dcSSimon Schubert DW_FORM_ref_udata = 0x15, 2675796c8dcSSimon Schubert DW_FORM_indirect = 0x16, 2685796c8dcSSimon Schubert /* DWARF 4. */ 2695796c8dcSSimon Schubert DW_FORM_sec_offset = 0x17, 2705796c8dcSSimon Schubert DW_FORM_exprloc = 0x18, 2715796c8dcSSimon Schubert DW_FORM_flag_present = 0x19, 272*cf7f2e2dSJohn Marino DW_FORM_ref_sig8 = 0x20 273*cf7f2e2dSJohn Marino #define DW_FORM_sig8 DW_FORM_ref_sig8 /* Note: The use of DW_FORM_sig8 is deprecated. */ 2745796c8dcSSimon Schubert }; 2755796c8dcSSimon Schubert 2765796c8dcSSimon Schubert /* Attribute names and codes. */ 2775796c8dcSSimon Schubert enum dwarf_attribute 2785796c8dcSSimon Schubert { 2795796c8dcSSimon Schubert DW_AT_sibling = 0x01, 2805796c8dcSSimon Schubert DW_AT_location = 0x02, 2815796c8dcSSimon Schubert DW_AT_name = 0x03, 2825796c8dcSSimon Schubert DW_AT_ordering = 0x09, 2835796c8dcSSimon Schubert DW_AT_subscr_data = 0x0a, 2845796c8dcSSimon Schubert DW_AT_byte_size = 0x0b, 2855796c8dcSSimon Schubert DW_AT_bit_offset = 0x0c, 2865796c8dcSSimon Schubert DW_AT_bit_size = 0x0d, 2875796c8dcSSimon Schubert DW_AT_element_list = 0x0f, 2885796c8dcSSimon Schubert DW_AT_stmt_list = 0x10, 2895796c8dcSSimon Schubert DW_AT_low_pc = 0x11, 2905796c8dcSSimon Schubert DW_AT_high_pc = 0x12, 2915796c8dcSSimon Schubert DW_AT_language = 0x13, 2925796c8dcSSimon Schubert DW_AT_member = 0x14, 2935796c8dcSSimon Schubert DW_AT_discr = 0x15, 2945796c8dcSSimon Schubert DW_AT_discr_value = 0x16, 2955796c8dcSSimon Schubert DW_AT_visibility = 0x17, 2965796c8dcSSimon Schubert DW_AT_import = 0x18, 2975796c8dcSSimon Schubert DW_AT_string_length = 0x19, 2985796c8dcSSimon Schubert DW_AT_common_reference = 0x1a, 2995796c8dcSSimon Schubert DW_AT_comp_dir = 0x1b, 3005796c8dcSSimon Schubert DW_AT_const_value = 0x1c, 3015796c8dcSSimon Schubert DW_AT_containing_type = 0x1d, 3025796c8dcSSimon Schubert DW_AT_default_value = 0x1e, 3035796c8dcSSimon Schubert DW_AT_inline = 0x20, 3045796c8dcSSimon Schubert DW_AT_is_optional = 0x21, 3055796c8dcSSimon Schubert DW_AT_lower_bound = 0x22, 3065796c8dcSSimon Schubert DW_AT_producer = 0x25, 3075796c8dcSSimon Schubert DW_AT_prototyped = 0x27, 3085796c8dcSSimon Schubert DW_AT_return_addr = 0x2a, 3095796c8dcSSimon Schubert DW_AT_start_scope = 0x2c, 3105796c8dcSSimon Schubert DW_AT_bit_stride = 0x2e, 3115796c8dcSSimon Schubert #define DW_AT_stride_size DW_AT_bit_stride /* Note: The use of DW_AT_stride_size is deprecated. */ 3125796c8dcSSimon Schubert DW_AT_upper_bound = 0x2f, 3135796c8dcSSimon Schubert DW_AT_abstract_origin = 0x31, 3145796c8dcSSimon Schubert DW_AT_accessibility = 0x32, 3155796c8dcSSimon Schubert DW_AT_address_class = 0x33, 3165796c8dcSSimon Schubert DW_AT_artificial = 0x34, 3175796c8dcSSimon Schubert DW_AT_base_types = 0x35, 3185796c8dcSSimon Schubert DW_AT_calling_convention = 0x36, 3195796c8dcSSimon Schubert DW_AT_count = 0x37, 3205796c8dcSSimon Schubert DW_AT_data_member_location = 0x38, 3215796c8dcSSimon Schubert DW_AT_decl_column = 0x39, 3225796c8dcSSimon Schubert DW_AT_decl_file = 0x3a, 3235796c8dcSSimon Schubert DW_AT_decl_line = 0x3b, 3245796c8dcSSimon Schubert DW_AT_declaration = 0x3c, 3255796c8dcSSimon Schubert DW_AT_discr_list = 0x3d, 3265796c8dcSSimon Schubert DW_AT_encoding = 0x3e, 3275796c8dcSSimon Schubert DW_AT_external = 0x3f, 3285796c8dcSSimon Schubert DW_AT_frame_base = 0x40, 3295796c8dcSSimon Schubert DW_AT_friend = 0x41, 3305796c8dcSSimon Schubert DW_AT_identifier_case = 0x42, 3315796c8dcSSimon Schubert DW_AT_macro_info = 0x43, 3325796c8dcSSimon Schubert DW_AT_namelist_items = 0x44, 3335796c8dcSSimon Schubert DW_AT_priority = 0x45, 3345796c8dcSSimon Schubert DW_AT_segment = 0x46, 3355796c8dcSSimon Schubert DW_AT_specification = 0x47, 3365796c8dcSSimon Schubert DW_AT_static_link = 0x48, 3375796c8dcSSimon Schubert DW_AT_type = 0x49, 3385796c8dcSSimon Schubert DW_AT_use_location = 0x4a, 3395796c8dcSSimon Schubert DW_AT_variable_parameter = 0x4b, 3405796c8dcSSimon Schubert DW_AT_virtuality = 0x4c, 3415796c8dcSSimon Schubert DW_AT_vtable_elem_location = 0x4d, 3425796c8dcSSimon Schubert /* DWARF 3 values. */ 3435796c8dcSSimon Schubert DW_AT_allocated = 0x4e, 3445796c8dcSSimon Schubert DW_AT_associated = 0x4f, 3455796c8dcSSimon Schubert DW_AT_data_location = 0x50, 3465796c8dcSSimon Schubert DW_AT_byte_stride = 0x51, 3475796c8dcSSimon Schubert #define DW_AT_stride DW_AT_byte_stride /* Note: The use of DW_AT_stride is deprecated. */ 3485796c8dcSSimon Schubert DW_AT_entry_pc = 0x52, 3495796c8dcSSimon Schubert DW_AT_use_UTF8 = 0x53, 3505796c8dcSSimon Schubert DW_AT_extension = 0x54, 3515796c8dcSSimon Schubert DW_AT_ranges = 0x55, 3525796c8dcSSimon Schubert DW_AT_trampoline = 0x56, 3535796c8dcSSimon Schubert DW_AT_call_column = 0x57, 3545796c8dcSSimon Schubert DW_AT_call_file = 0x58, 3555796c8dcSSimon Schubert DW_AT_call_line = 0x59, 3565796c8dcSSimon Schubert DW_AT_description = 0x5a, 3575796c8dcSSimon Schubert DW_AT_binary_scale = 0x5b, 3585796c8dcSSimon Schubert DW_AT_decimal_scale = 0x5c, 3595796c8dcSSimon Schubert DW_AT_small = 0x5d, 3605796c8dcSSimon Schubert DW_AT_decimal_sign = 0x5e, 3615796c8dcSSimon Schubert DW_AT_digit_count = 0x5f, 3625796c8dcSSimon Schubert DW_AT_picture_string = 0x60, 3635796c8dcSSimon Schubert DW_AT_mutable = 0x61, 3645796c8dcSSimon Schubert DW_AT_threads_scaled = 0x62, 3655796c8dcSSimon Schubert DW_AT_explicit = 0x63, 3665796c8dcSSimon Schubert DW_AT_object_pointer = 0x64, 3675796c8dcSSimon Schubert DW_AT_endianity = 0x65, 3685796c8dcSSimon Schubert DW_AT_elemental = 0x66, 3695796c8dcSSimon Schubert DW_AT_pure = 0x67, 3705796c8dcSSimon Schubert DW_AT_recursive = 0x68, 3715796c8dcSSimon Schubert /* DWARF 4. */ 3725796c8dcSSimon Schubert DW_AT_signature = 0x69, 373*cf7f2e2dSJohn Marino DW_AT_main_subprogram = 0x6a, 374*cf7f2e2dSJohn Marino DW_AT_data_bit_offset = 0x6b, 375*cf7f2e2dSJohn Marino DW_AT_const_expr = 0x6c, 376*cf7f2e2dSJohn Marino DW_AT_enum_class = 0x6d, 377*cf7f2e2dSJohn Marino DW_AT_linkage_name = 0x6e, 3785796c8dcSSimon Schubert 3795796c8dcSSimon Schubert DW_AT_lo_user = 0x2000, /* Implementation-defined range start. */ 3805796c8dcSSimon Schubert DW_AT_hi_user = 0x3ff0, /* Implementation-defined range end. */ 3815796c8dcSSimon Schubert 3825796c8dcSSimon Schubert /* SGI/MIPS extensions. */ 3835796c8dcSSimon Schubert DW_AT_MIPS_fde = 0x2001, 3845796c8dcSSimon Schubert DW_AT_MIPS_loop_begin = 0x2002, 3855796c8dcSSimon Schubert DW_AT_MIPS_tail_loop_begin = 0x2003, 3865796c8dcSSimon Schubert DW_AT_MIPS_epilog_begin = 0x2004, 3875796c8dcSSimon Schubert DW_AT_MIPS_loop_unroll_factor = 0x2005, 3885796c8dcSSimon Schubert DW_AT_MIPS_software_pipeline_depth = 0x2006, 3895796c8dcSSimon Schubert DW_AT_MIPS_linkage_name = 0x2007, 3905796c8dcSSimon Schubert DW_AT_MIPS_stride = 0x2008, 3915796c8dcSSimon Schubert DW_AT_MIPS_abstract_name = 0x2009, 3925796c8dcSSimon Schubert DW_AT_MIPS_clone_origin = 0x200a, 3935796c8dcSSimon Schubert DW_AT_MIPS_has_inlines = 0x200b, 3945796c8dcSSimon Schubert /* HP extensions. */ 3955796c8dcSSimon Schubert DW_AT_HP_block_index = 0x2000, 3965796c8dcSSimon Schubert DW_AT_HP_unmodifiable = 0x2001, /* Same as DW_AT_MIPS_fde. */ 397*cf7f2e2dSJohn Marino DW_AT_HP_prologue = 0x2005, /* Same as DW_AT_MIPS_loop_unroll. */ 398*cf7f2e2dSJohn Marino DW_AT_HP_epilogue = 0x2008, /* Same as DW_AT_MIPS_stride. */ 3995796c8dcSSimon Schubert DW_AT_HP_actuals_stmt_list = 0x2010, 4005796c8dcSSimon Schubert DW_AT_HP_proc_per_section = 0x2011, 4015796c8dcSSimon Schubert DW_AT_HP_raw_data_ptr = 0x2012, 4025796c8dcSSimon Schubert DW_AT_HP_pass_by_reference = 0x2013, 4035796c8dcSSimon Schubert DW_AT_HP_opt_level = 0x2014, 4045796c8dcSSimon Schubert DW_AT_HP_prof_version_id = 0x2015, 4055796c8dcSSimon Schubert DW_AT_HP_opt_flags = 0x2016, 4065796c8dcSSimon Schubert DW_AT_HP_cold_region_low_pc = 0x2017, 4075796c8dcSSimon Schubert DW_AT_HP_cold_region_high_pc = 0x2018, 4085796c8dcSSimon Schubert DW_AT_HP_all_variables_modifiable = 0x2019, 4095796c8dcSSimon Schubert DW_AT_HP_linkage_name = 0x201a, 4105796c8dcSSimon Schubert DW_AT_HP_prof_flags = 0x201b, /* In comp unit of procs_info for -g. */ 411*cf7f2e2dSJohn Marino DW_AT_HP_unit_name = 0x201f, 412*cf7f2e2dSJohn Marino DW_AT_HP_unit_size = 0x2020, 413*cf7f2e2dSJohn Marino DW_AT_HP_widened_byte_size = 0x2021, 414*cf7f2e2dSJohn Marino DW_AT_HP_definition_points = 0x2022, 415*cf7f2e2dSJohn Marino DW_AT_HP_default_location = 0x2023, 416*cf7f2e2dSJohn Marino DW_AT_HP_is_result_param = 0x2029, 417*cf7f2e2dSJohn Marino 4185796c8dcSSimon Schubert /* GNU extensions. */ 4195796c8dcSSimon Schubert DW_AT_sf_names = 0x2101, 4205796c8dcSSimon Schubert DW_AT_src_info = 0x2102, 4215796c8dcSSimon Schubert DW_AT_mac_info = 0x2103, 4225796c8dcSSimon Schubert DW_AT_src_coords = 0x2104, 4235796c8dcSSimon Schubert DW_AT_body_begin = 0x2105, 4245796c8dcSSimon Schubert DW_AT_body_end = 0x2106, 4255796c8dcSSimon Schubert DW_AT_GNU_vector = 0x2107, 426*cf7f2e2dSJohn Marino /* Thread-safety annotations. 427*cf7f2e2dSJohn Marino See http://gcc.gnu.org/wiki/ThreadSafetyAnnotation . */ 428*cf7f2e2dSJohn Marino DW_AT_GNU_guarded_by = 0x2108, 429*cf7f2e2dSJohn Marino DW_AT_GNU_pt_guarded_by = 0x2109, 430*cf7f2e2dSJohn Marino DW_AT_GNU_guarded = 0x210a, 431*cf7f2e2dSJohn Marino DW_AT_GNU_pt_guarded = 0x210b, 432*cf7f2e2dSJohn Marino DW_AT_GNU_locks_excluded = 0x210c, 433*cf7f2e2dSJohn Marino DW_AT_GNU_exclusive_locks_required = 0x210d, 434*cf7f2e2dSJohn Marino DW_AT_GNU_shared_locks_required = 0x210e, 435*cf7f2e2dSJohn Marino /* One-definition rule violation detection. 436*cf7f2e2dSJohn Marino See http://gcc.gnu.org/wiki/DwarfSeparateTypeInfo . */ 437*cf7f2e2dSJohn Marino DW_AT_GNU_odr_signature = 0x210f, 4385796c8dcSSimon Schubert /* Template template argument name. 4395796c8dcSSimon Schubert See http://gcc.gnu.org/wiki/TemplateParmsDwarf . */ 4405796c8dcSSimon Schubert DW_AT_GNU_template_name = 0x2110, 4415796c8dcSSimon Schubert /* VMS extensions. */ 4425796c8dcSSimon Schubert DW_AT_VMS_rtnbeg_pd_address = 0x2201, 443*cf7f2e2dSJohn Marino /* GNAT extensions. */ 444*cf7f2e2dSJohn Marino /* GNAT descriptive type. 445*cf7f2e2dSJohn Marino See http://gcc.gnu.org/wiki/DW_AT_GNAT_descriptive_type . */ 446*cf7f2e2dSJohn Marino DW_AT_use_GNAT_descriptive_type = 0x2301, 447*cf7f2e2dSJohn Marino DW_AT_GNAT_descriptive_type = 0x2302, 4485796c8dcSSimon Schubert /* UPC extension. */ 4495796c8dcSSimon Schubert DW_AT_upc_threads_scaled = 0x3210, 4505796c8dcSSimon Schubert /* PGI (STMicroelectronics) extensions. */ 4515796c8dcSSimon Schubert DW_AT_PGI_lbase = 0x3a00, 4525796c8dcSSimon Schubert DW_AT_PGI_soffset = 0x3a01, 4535796c8dcSSimon Schubert DW_AT_PGI_lstride = 0x3a02 4545796c8dcSSimon Schubert }; 4555796c8dcSSimon Schubert 4565796c8dcSSimon Schubert /* Location atom names and codes. */ 4575796c8dcSSimon Schubert enum dwarf_location_atom 4585796c8dcSSimon Schubert { 4595796c8dcSSimon Schubert DW_OP_addr = 0x03, 4605796c8dcSSimon Schubert DW_OP_deref = 0x06, 4615796c8dcSSimon Schubert DW_OP_const1u = 0x08, 4625796c8dcSSimon Schubert DW_OP_const1s = 0x09, 4635796c8dcSSimon Schubert DW_OP_const2u = 0x0a, 4645796c8dcSSimon Schubert DW_OP_const2s = 0x0b, 4655796c8dcSSimon Schubert DW_OP_const4u = 0x0c, 4665796c8dcSSimon Schubert DW_OP_const4s = 0x0d, 4675796c8dcSSimon Schubert DW_OP_const8u = 0x0e, 4685796c8dcSSimon Schubert DW_OP_const8s = 0x0f, 4695796c8dcSSimon Schubert DW_OP_constu = 0x10, 4705796c8dcSSimon Schubert DW_OP_consts = 0x11, 4715796c8dcSSimon Schubert DW_OP_dup = 0x12, 4725796c8dcSSimon Schubert DW_OP_drop = 0x13, 4735796c8dcSSimon Schubert DW_OP_over = 0x14, 4745796c8dcSSimon Schubert DW_OP_pick = 0x15, 4755796c8dcSSimon Schubert DW_OP_swap = 0x16, 4765796c8dcSSimon Schubert DW_OP_rot = 0x17, 4775796c8dcSSimon Schubert DW_OP_xderef = 0x18, 4785796c8dcSSimon Schubert DW_OP_abs = 0x19, 4795796c8dcSSimon Schubert DW_OP_and = 0x1a, 4805796c8dcSSimon Schubert DW_OP_div = 0x1b, 4815796c8dcSSimon Schubert DW_OP_minus = 0x1c, 4825796c8dcSSimon Schubert DW_OP_mod = 0x1d, 4835796c8dcSSimon Schubert DW_OP_mul = 0x1e, 4845796c8dcSSimon Schubert DW_OP_neg = 0x1f, 4855796c8dcSSimon Schubert DW_OP_not = 0x20, 4865796c8dcSSimon Schubert DW_OP_or = 0x21, 4875796c8dcSSimon Schubert DW_OP_plus = 0x22, 4885796c8dcSSimon Schubert DW_OP_plus_uconst = 0x23, 4895796c8dcSSimon Schubert DW_OP_shl = 0x24, 4905796c8dcSSimon Schubert DW_OP_shr = 0x25, 4915796c8dcSSimon Schubert DW_OP_shra = 0x26, 4925796c8dcSSimon Schubert DW_OP_xor = 0x27, 4935796c8dcSSimon Schubert DW_OP_bra = 0x28, 4945796c8dcSSimon Schubert DW_OP_eq = 0x29, 4955796c8dcSSimon Schubert DW_OP_ge = 0x2a, 4965796c8dcSSimon Schubert DW_OP_gt = 0x2b, 4975796c8dcSSimon Schubert DW_OP_le = 0x2c, 4985796c8dcSSimon Schubert DW_OP_lt = 0x2d, 4995796c8dcSSimon Schubert DW_OP_ne = 0x2e, 5005796c8dcSSimon Schubert DW_OP_skip = 0x2f, 5015796c8dcSSimon Schubert DW_OP_lit0 = 0x30, 5025796c8dcSSimon Schubert DW_OP_lit1 = 0x31, 5035796c8dcSSimon Schubert DW_OP_lit2 = 0x32, 5045796c8dcSSimon Schubert DW_OP_lit3 = 0x33, 5055796c8dcSSimon Schubert DW_OP_lit4 = 0x34, 5065796c8dcSSimon Schubert DW_OP_lit5 = 0x35, 5075796c8dcSSimon Schubert DW_OP_lit6 = 0x36, 5085796c8dcSSimon Schubert DW_OP_lit7 = 0x37, 5095796c8dcSSimon Schubert DW_OP_lit8 = 0x38, 5105796c8dcSSimon Schubert DW_OP_lit9 = 0x39, 5115796c8dcSSimon Schubert DW_OP_lit10 = 0x3a, 5125796c8dcSSimon Schubert DW_OP_lit11 = 0x3b, 5135796c8dcSSimon Schubert DW_OP_lit12 = 0x3c, 5145796c8dcSSimon Schubert DW_OP_lit13 = 0x3d, 5155796c8dcSSimon Schubert DW_OP_lit14 = 0x3e, 5165796c8dcSSimon Schubert DW_OP_lit15 = 0x3f, 5175796c8dcSSimon Schubert DW_OP_lit16 = 0x40, 5185796c8dcSSimon Schubert DW_OP_lit17 = 0x41, 5195796c8dcSSimon Schubert DW_OP_lit18 = 0x42, 5205796c8dcSSimon Schubert DW_OP_lit19 = 0x43, 5215796c8dcSSimon Schubert DW_OP_lit20 = 0x44, 5225796c8dcSSimon Schubert DW_OP_lit21 = 0x45, 5235796c8dcSSimon Schubert DW_OP_lit22 = 0x46, 5245796c8dcSSimon Schubert DW_OP_lit23 = 0x47, 5255796c8dcSSimon Schubert DW_OP_lit24 = 0x48, 5265796c8dcSSimon Schubert DW_OP_lit25 = 0x49, 5275796c8dcSSimon Schubert DW_OP_lit26 = 0x4a, 5285796c8dcSSimon Schubert DW_OP_lit27 = 0x4b, 5295796c8dcSSimon Schubert DW_OP_lit28 = 0x4c, 5305796c8dcSSimon Schubert DW_OP_lit29 = 0x4d, 5315796c8dcSSimon Schubert DW_OP_lit30 = 0x4e, 5325796c8dcSSimon Schubert DW_OP_lit31 = 0x4f, 5335796c8dcSSimon Schubert DW_OP_reg0 = 0x50, 5345796c8dcSSimon Schubert DW_OP_reg1 = 0x51, 5355796c8dcSSimon Schubert DW_OP_reg2 = 0x52, 5365796c8dcSSimon Schubert DW_OP_reg3 = 0x53, 5375796c8dcSSimon Schubert DW_OP_reg4 = 0x54, 5385796c8dcSSimon Schubert DW_OP_reg5 = 0x55, 5395796c8dcSSimon Schubert DW_OP_reg6 = 0x56, 5405796c8dcSSimon Schubert DW_OP_reg7 = 0x57, 5415796c8dcSSimon Schubert DW_OP_reg8 = 0x58, 5425796c8dcSSimon Schubert DW_OP_reg9 = 0x59, 5435796c8dcSSimon Schubert DW_OP_reg10 = 0x5a, 5445796c8dcSSimon Schubert DW_OP_reg11 = 0x5b, 5455796c8dcSSimon Schubert DW_OP_reg12 = 0x5c, 5465796c8dcSSimon Schubert DW_OP_reg13 = 0x5d, 5475796c8dcSSimon Schubert DW_OP_reg14 = 0x5e, 5485796c8dcSSimon Schubert DW_OP_reg15 = 0x5f, 5495796c8dcSSimon Schubert DW_OP_reg16 = 0x60, 5505796c8dcSSimon Schubert DW_OP_reg17 = 0x61, 5515796c8dcSSimon Schubert DW_OP_reg18 = 0x62, 5525796c8dcSSimon Schubert DW_OP_reg19 = 0x63, 5535796c8dcSSimon Schubert DW_OP_reg20 = 0x64, 5545796c8dcSSimon Schubert DW_OP_reg21 = 0x65, 5555796c8dcSSimon Schubert DW_OP_reg22 = 0x66, 5565796c8dcSSimon Schubert DW_OP_reg23 = 0x67, 5575796c8dcSSimon Schubert DW_OP_reg24 = 0x68, 5585796c8dcSSimon Schubert DW_OP_reg25 = 0x69, 5595796c8dcSSimon Schubert DW_OP_reg26 = 0x6a, 5605796c8dcSSimon Schubert DW_OP_reg27 = 0x6b, 5615796c8dcSSimon Schubert DW_OP_reg28 = 0x6c, 5625796c8dcSSimon Schubert DW_OP_reg29 = 0x6d, 5635796c8dcSSimon Schubert DW_OP_reg30 = 0x6e, 5645796c8dcSSimon Schubert DW_OP_reg31 = 0x6f, 5655796c8dcSSimon Schubert DW_OP_breg0 = 0x70, 5665796c8dcSSimon Schubert DW_OP_breg1 = 0x71, 5675796c8dcSSimon Schubert DW_OP_breg2 = 0x72, 5685796c8dcSSimon Schubert DW_OP_breg3 = 0x73, 5695796c8dcSSimon Schubert DW_OP_breg4 = 0x74, 5705796c8dcSSimon Schubert DW_OP_breg5 = 0x75, 5715796c8dcSSimon Schubert DW_OP_breg6 = 0x76, 5725796c8dcSSimon Schubert DW_OP_breg7 = 0x77, 5735796c8dcSSimon Schubert DW_OP_breg8 = 0x78, 5745796c8dcSSimon Schubert DW_OP_breg9 = 0x79, 5755796c8dcSSimon Schubert DW_OP_breg10 = 0x7a, 5765796c8dcSSimon Schubert DW_OP_breg11 = 0x7b, 5775796c8dcSSimon Schubert DW_OP_breg12 = 0x7c, 5785796c8dcSSimon Schubert DW_OP_breg13 = 0x7d, 5795796c8dcSSimon Schubert DW_OP_breg14 = 0x7e, 5805796c8dcSSimon Schubert DW_OP_breg15 = 0x7f, 5815796c8dcSSimon Schubert DW_OP_breg16 = 0x80, 5825796c8dcSSimon Schubert DW_OP_breg17 = 0x81, 5835796c8dcSSimon Schubert DW_OP_breg18 = 0x82, 5845796c8dcSSimon Schubert DW_OP_breg19 = 0x83, 5855796c8dcSSimon Schubert DW_OP_breg20 = 0x84, 5865796c8dcSSimon Schubert DW_OP_breg21 = 0x85, 5875796c8dcSSimon Schubert DW_OP_breg22 = 0x86, 5885796c8dcSSimon Schubert DW_OP_breg23 = 0x87, 5895796c8dcSSimon Schubert DW_OP_breg24 = 0x88, 5905796c8dcSSimon Schubert DW_OP_breg25 = 0x89, 5915796c8dcSSimon Schubert DW_OP_breg26 = 0x8a, 5925796c8dcSSimon Schubert DW_OP_breg27 = 0x8b, 5935796c8dcSSimon Schubert DW_OP_breg28 = 0x8c, 5945796c8dcSSimon Schubert DW_OP_breg29 = 0x8d, 5955796c8dcSSimon Schubert DW_OP_breg30 = 0x8e, 5965796c8dcSSimon Schubert DW_OP_breg31 = 0x8f, 5975796c8dcSSimon Schubert DW_OP_regx = 0x90, 5985796c8dcSSimon Schubert DW_OP_fbreg = 0x91, 5995796c8dcSSimon Schubert DW_OP_bregx = 0x92, 6005796c8dcSSimon Schubert DW_OP_piece = 0x93, 6015796c8dcSSimon Schubert DW_OP_deref_size = 0x94, 6025796c8dcSSimon Schubert DW_OP_xderef_size = 0x95, 6035796c8dcSSimon Schubert DW_OP_nop = 0x96, 6045796c8dcSSimon Schubert /* DWARF 3 extensions. */ 6055796c8dcSSimon Schubert DW_OP_push_object_address = 0x97, 6065796c8dcSSimon Schubert DW_OP_call2 = 0x98, 6075796c8dcSSimon Schubert DW_OP_call4 = 0x99, 6085796c8dcSSimon Schubert DW_OP_call_ref = 0x9a, 6095796c8dcSSimon Schubert DW_OP_form_tls_address = 0x9b, 6105796c8dcSSimon Schubert DW_OP_call_frame_cfa = 0x9c, 6115796c8dcSSimon Schubert DW_OP_bit_piece = 0x9d, 6125796c8dcSSimon Schubert 6135796c8dcSSimon Schubert /* DWARF 4 extensions. */ 6145796c8dcSSimon Schubert DW_OP_implicit_value = 0x9e, 6155796c8dcSSimon Schubert DW_OP_stack_value = 0x9f, 6165796c8dcSSimon Schubert 6175796c8dcSSimon Schubert DW_OP_lo_user = 0xe0, /* Implementation-defined range start. */ 6185796c8dcSSimon Schubert DW_OP_hi_user = 0xff, /* Implementation-defined range end. */ 6195796c8dcSSimon Schubert 6205796c8dcSSimon Schubert /* GNU extensions. */ 6215796c8dcSSimon Schubert DW_OP_GNU_push_tls_address = 0xe0, 6225796c8dcSSimon Schubert /* The following is for marking variables that are uninitialized. */ 6235796c8dcSSimon Schubert DW_OP_GNU_uninit = 0xf0, 6245796c8dcSSimon Schubert DW_OP_GNU_encoded_addr = 0xf1, 6255796c8dcSSimon Schubert /* HP extensions. */ 6265796c8dcSSimon Schubert DW_OP_HP_unknown = 0xe0, /* Ouch, the same as GNU_push_tls_address. */ 6275796c8dcSSimon Schubert DW_OP_HP_is_value = 0xe1, 6285796c8dcSSimon Schubert DW_OP_HP_fltconst4 = 0xe2, 6295796c8dcSSimon Schubert DW_OP_HP_fltconst8 = 0xe3, 6305796c8dcSSimon Schubert DW_OP_HP_mod_range = 0xe4, 6315796c8dcSSimon Schubert DW_OP_HP_unmod_range = 0xe5, 6325796c8dcSSimon Schubert DW_OP_HP_tls = 0xe6, 6335796c8dcSSimon Schubert /* PGI (STMicroelectronics) extensions. */ 6345796c8dcSSimon Schubert DW_OP_PGI_omp_thread_num = 0xf8 6355796c8dcSSimon Schubert }; 6365796c8dcSSimon Schubert 6375796c8dcSSimon Schubert /* Type encodings. */ 6385796c8dcSSimon Schubert enum dwarf_type 6395796c8dcSSimon Schubert { 6405796c8dcSSimon Schubert DW_ATE_void = 0x0, 6415796c8dcSSimon Schubert DW_ATE_address = 0x1, 6425796c8dcSSimon Schubert DW_ATE_boolean = 0x2, 6435796c8dcSSimon Schubert DW_ATE_complex_float = 0x3, 6445796c8dcSSimon Schubert DW_ATE_float = 0x4, 6455796c8dcSSimon Schubert DW_ATE_signed = 0x5, 6465796c8dcSSimon Schubert DW_ATE_signed_char = 0x6, 6475796c8dcSSimon Schubert DW_ATE_unsigned = 0x7, 6485796c8dcSSimon Schubert DW_ATE_unsigned_char = 0x8, 6495796c8dcSSimon Schubert /* DWARF 3. */ 6505796c8dcSSimon Schubert DW_ATE_imaginary_float = 0x9, 6515796c8dcSSimon Schubert DW_ATE_packed_decimal = 0xa, 6525796c8dcSSimon Schubert DW_ATE_numeric_string = 0xb, 6535796c8dcSSimon Schubert DW_ATE_edited = 0xc, 6545796c8dcSSimon Schubert DW_ATE_signed_fixed = 0xd, 6555796c8dcSSimon Schubert DW_ATE_unsigned_fixed = 0xe, 6565796c8dcSSimon Schubert DW_ATE_decimal_float = 0xf, 657*cf7f2e2dSJohn Marino /* DWARF 4. */ 658*cf7f2e2dSJohn Marino DW_ATE_UTF = 0x10, 6595796c8dcSSimon Schubert 6605796c8dcSSimon Schubert DW_ATE_lo_user = 0x80, 6615796c8dcSSimon Schubert DW_ATE_hi_user = 0xff, 6625796c8dcSSimon Schubert 6635796c8dcSSimon Schubert /* HP extensions. */ 6645796c8dcSSimon Schubert DW_ATE_HP_float80 = 0x80, /* Floating-point (80 bit). */ 6655796c8dcSSimon Schubert DW_ATE_HP_complex_float80 = 0x81, /* Complex floating-point (80 bit). */ 6665796c8dcSSimon Schubert DW_ATE_HP_float128 = 0x82, /* Floating-point (128 bit). */ 667*cf7f2e2dSJohn Marino DW_ATE_HP_complex_float128 = 0x83, /* Complex fp (128 bit). */ 6685796c8dcSSimon Schubert DW_ATE_HP_floathpintel = 0x84, /* Floating-point (82 bit IA64). */ 6695796c8dcSSimon Schubert DW_ATE_HP_imaginary_float80 = 0x85, 670*cf7f2e2dSJohn Marino DW_ATE_HP_imaginary_float128 = 0x86, 671*cf7f2e2dSJohn Marino DW_ATE_HP_VAX_float = 0x88, /* F or G floating. */ 672*cf7f2e2dSJohn Marino DW_ATE_HP_VAX_float_d = 0x89, /* D floating. */ 673*cf7f2e2dSJohn Marino DW_ATE_HP_packed_decimal = 0x8a, /* Cobol. */ 674*cf7f2e2dSJohn Marino DW_ATE_HP_zoned_decimal = 0x8b, /* Cobol. */ 675*cf7f2e2dSJohn Marino DW_ATE_HP_edited = 0x8c, /* Cobol. */ 676*cf7f2e2dSJohn Marino DW_ATE_HP_signed_fixed = 0x8d, /* Cobol. */ 677*cf7f2e2dSJohn Marino DW_ATE_HP_unsigned_fixed = 0x8e, /* Cobol. */ 678*cf7f2e2dSJohn Marino DW_ATE_HP_VAX_complex_float = 0x8f, /* F or G floating complex. */ 679*cf7f2e2dSJohn Marino DW_ATE_HP_VAX_complex_float_d = 0x90 /* D floating complex. */ 6805796c8dcSSimon Schubert }; 6815796c8dcSSimon Schubert 6825796c8dcSSimon Schubert /* Decimal sign encodings. */ 6835796c8dcSSimon Schubert enum dwarf_decimal_sign_encoding 6845796c8dcSSimon Schubert { 6855796c8dcSSimon Schubert /* DWARF 3. */ 6865796c8dcSSimon Schubert DW_DS_unsigned = 0x01, 6875796c8dcSSimon Schubert DW_DS_leading_overpunch = 0x02, 6885796c8dcSSimon Schubert DW_DS_trailing_overpunch = 0x03, 6895796c8dcSSimon Schubert DW_DS_leading_separate = 0x04, 6905796c8dcSSimon Schubert DW_DS_trailing_separate = 0x05 6915796c8dcSSimon Schubert }; 6925796c8dcSSimon Schubert 6935796c8dcSSimon Schubert /* Endianity encodings. */ 6945796c8dcSSimon Schubert enum dwarf_endianity_encoding 6955796c8dcSSimon Schubert { 6965796c8dcSSimon Schubert /* DWARF 3. */ 6975796c8dcSSimon Schubert DW_END_default = 0x00, 6985796c8dcSSimon Schubert DW_END_big = 0x01, 6995796c8dcSSimon Schubert DW_END_little = 0x02, 7005796c8dcSSimon Schubert 7015796c8dcSSimon Schubert DW_END_lo_user = 0x40, 7025796c8dcSSimon Schubert DW_END_hi_user = 0xff 7035796c8dcSSimon Schubert }; 7045796c8dcSSimon Schubert 7055796c8dcSSimon Schubert /* Array ordering names and codes. */ 7065796c8dcSSimon Schubert enum dwarf_array_dim_ordering 7075796c8dcSSimon Schubert { 7085796c8dcSSimon Schubert DW_ORD_row_major = 0, 7095796c8dcSSimon Schubert DW_ORD_col_major = 1 7105796c8dcSSimon Schubert }; 7115796c8dcSSimon Schubert 7125796c8dcSSimon Schubert /* Access attribute. */ 7135796c8dcSSimon Schubert enum dwarf_access_attribute 7145796c8dcSSimon Schubert { 7155796c8dcSSimon Schubert DW_ACCESS_public = 1, 7165796c8dcSSimon Schubert DW_ACCESS_protected = 2, 7175796c8dcSSimon Schubert DW_ACCESS_private = 3 7185796c8dcSSimon Schubert }; 7195796c8dcSSimon Schubert 7205796c8dcSSimon Schubert /* Visibility. */ 7215796c8dcSSimon Schubert enum dwarf_visibility_attribute 7225796c8dcSSimon Schubert { 7235796c8dcSSimon Schubert DW_VIS_local = 1, 7245796c8dcSSimon Schubert DW_VIS_exported = 2, 7255796c8dcSSimon Schubert DW_VIS_qualified = 3 7265796c8dcSSimon Schubert }; 7275796c8dcSSimon Schubert 7285796c8dcSSimon Schubert /* Virtuality. */ 7295796c8dcSSimon Schubert enum dwarf_virtuality_attribute 7305796c8dcSSimon Schubert { 7315796c8dcSSimon Schubert DW_VIRTUALITY_none = 0, 7325796c8dcSSimon Schubert DW_VIRTUALITY_virtual = 1, 7335796c8dcSSimon Schubert DW_VIRTUALITY_pure_virtual = 2 7345796c8dcSSimon Schubert }; 7355796c8dcSSimon Schubert 7365796c8dcSSimon Schubert /* Case sensitivity. */ 7375796c8dcSSimon Schubert enum dwarf_id_case 7385796c8dcSSimon Schubert { 7395796c8dcSSimon Schubert DW_ID_case_sensitive = 0, 7405796c8dcSSimon Schubert DW_ID_up_case = 1, 7415796c8dcSSimon Schubert DW_ID_down_case = 2, 7425796c8dcSSimon Schubert DW_ID_case_insensitive = 3 7435796c8dcSSimon Schubert }; 7445796c8dcSSimon Schubert 7455796c8dcSSimon Schubert /* Calling convention. */ 7465796c8dcSSimon Schubert enum dwarf_calling_convention 7475796c8dcSSimon Schubert { 7485796c8dcSSimon Schubert DW_CC_normal = 0x1, 7495796c8dcSSimon Schubert DW_CC_program = 0x2, 7505796c8dcSSimon Schubert DW_CC_nocall = 0x3, 7515796c8dcSSimon Schubert 7525796c8dcSSimon Schubert DW_CC_lo_user = 0x40, 7535796c8dcSSimon Schubert DW_CC_hi_user = 0xff, 7545796c8dcSSimon Schubert 755*cf7f2e2dSJohn Marino DW_CC_GNU_renesas_sh = 0x40, 756*cf7f2e2dSJohn Marino DW_CC_GNU_borland_fastcall_i386 = 0x41 7575796c8dcSSimon Schubert }; 7585796c8dcSSimon Schubert 7595796c8dcSSimon Schubert /* Inline attribute. */ 7605796c8dcSSimon Schubert enum dwarf_inline_attribute 7615796c8dcSSimon Schubert { 7625796c8dcSSimon Schubert DW_INL_not_inlined = 0, 7635796c8dcSSimon Schubert DW_INL_inlined = 1, 7645796c8dcSSimon Schubert DW_INL_declared_not_inlined = 2, 7655796c8dcSSimon Schubert DW_INL_declared_inlined = 3 7665796c8dcSSimon Schubert }; 7675796c8dcSSimon Schubert 7685796c8dcSSimon Schubert /* Discriminant lists. */ 7695796c8dcSSimon Schubert enum dwarf_discrim_list 7705796c8dcSSimon Schubert { 7715796c8dcSSimon Schubert DW_DSC_label = 0, 7725796c8dcSSimon Schubert DW_DSC_range = 1 7735796c8dcSSimon Schubert }; 7745796c8dcSSimon Schubert 7755796c8dcSSimon Schubert /* Line number opcodes. */ 7765796c8dcSSimon Schubert enum dwarf_line_number_ops 7775796c8dcSSimon Schubert { 7785796c8dcSSimon Schubert DW_LNS_extended_op = 0, 7795796c8dcSSimon Schubert DW_LNS_copy = 1, 7805796c8dcSSimon Schubert DW_LNS_advance_pc = 2, 7815796c8dcSSimon Schubert DW_LNS_advance_line = 3, 7825796c8dcSSimon Schubert DW_LNS_set_file = 4, 7835796c8dcSSimon Schubert DW_LNS_set_column = 5, 7845796c8dcSSimon Schubert DW_LNS_negate_stmt = 6, 7855796c8dcSSimon Schubert DW_LNS_set_basic_block = 7, 7865796c8dcSSimon Schubert DW_LNS_const_add_pc = 8, 7875796c8dcSSimon Schubert DW_LNS_fixed_advance_pc = 9, 7885796c8dcSSimon Schubert /* DWARF 3. */ 7895796c8dcSSimon Schubert DW_LNS_set_prologue_end = 10, 7905796c8dcSSimon Schubert DW_LNS_set_epilogue_begin = 11, 7915796c8dcSSimon Schubert DW_LNS_set_isa = 12 7925796c8dcSSimon Schubert }; 7935796c8dcSSimon Schubert 7945796c8dcSSimon Schubert /* Line number extended opcodes. */ 7955796c8dcSSimon Schubert enum dwarf_line_number_x_ops 7965796c8dcSSimon Schubert { 7975796c8dcSSimon Schubert DW_LNE_end_sequence = 1, 7985796c8dcSSimon Schubert DW_LNE_set_address = 2, 7995796c8dcSSimon Schubert DW_LNE_define_file = 3, 8005796c8dcSSimon Schubert DW_LNE_set_discriminator = 4, 8015796c8dcSSimon Schubert /* HP extensions. */ 8025796c8dcSSimon Schubert DW_LNE_HP_negate_is_UV_update = 0x11, 8035796c8dcSSimon Schubert DW_LNE_HP_push_context = 0x12, 8045796c8dcSSimon Schubert DW_LNE_HP_pop_context = 0x13, 8055796c8dcSSimon Schubert DW_LNE_HP_set_file_line_column = 0x14, 8065796c8dcSSimon Schubert DW_LNE_HP_set_routine_name = 0x15, 8075796c8dcSSimon Schubert DW_LNE_HP_set_sequence = 0x16, 8085796c8dcSSimon Schubert DW_LNE_HP_negate_post_semantics = 0x17, 8095796c8dcSSimon Schubert DW_LNE_HP_negate_function_exit = 0x18, 8105796c8dcSSimon Schubert DW_LNE_HP_negate_front_end_logical = 0x19, 8115796c8dcSSimon Schubert DW_LNE_HP_define_proc = 0x20, 812*cf7f2e2dSJohn Marino DW_LNE_HP_source_file_correlation = 0x80, 8135796c8dcSSimon Schubert 8145796c8dcSSimon Schubert DW_LNE_lo_user = 0x80, 8155796c8dcSSimon Schubert DW_LNE_hi_user = 0xff 8165796c8dcSSimon Schubert }; 8175796c8dcSSimon Schubert 8185796c8dcSSimon Schubert /* Call frame information. */ 8195796c8dcSSimon Schubert enum dwarf_call_frame_info 8205796c8dcSSimon Schubert { 8215796c8dcSSimon Schubert DW_CFA_advance_loc = 0x40, 8225796c8dcSSimon Schubert DW_CFA_offset = 0x80, 8235796c8dcSSimon Schubert DW_CFA_restore = 0xc0, 8245796c8dcSSimon Schubert DW_CFA_nop = 0x00, 8255796c8dcSSimon Schubert DW_CFA_set_loc = 0x01, 8265796c8dcSSimon Schubert DW_CFA_advance_loc1 = 0x02, 8275796c8dcSSimon Schubert DW_CFA_advance_loc2 = 0x03, 8285796c8dcSSimon Schubert DW_CFA_advance_loc4 = 0x04, 8295796c8dcSSimon Schubert DW_CFA_offset_extended = 0x05, 8305796c8dcSSimon Schubert DW_CFA_restore_extended = 0x06, 8315796c8dcSSimon Schubert DW_CFA_undefined = 0x07, 8325796c8dcSSimon Schubert DW_CFA_same_value = 0x08, 8335796c8dcSSimon Schubert DW_CFA_register = 0x09, 8345796c8dcSSimon Schubert DW_CFA_remember_state = 0x0a, 8355796c8dcSSimon Schubert DW_CFA_restore_state = 0x0b, 8365796c8dcSSimon Schubert DW_CFA_def_cfa = 0x0c, 8375796c8dcSSimon Schubert DW_CFA_def_cfa_register = 0x0d, 8385796c8dcSSimon Schubert DW_CFA_def_cfa_offset = 0x0e, 8395796c8dcSSimon Schubert /* DWARF 3. */ 8405796c8dcSSimon Schubert DW_CFA_def_cfa_expression = 0x0f, 8415796c8dcSSimon Schubert DW_CFA_expression = 0x10, 8425796c8dcSSimon Schubert DW_CFA_offset_extended_sf = 0x11, 8435796c8dcSSimon Schubert DW_CFA_def_cfa_sf = 0x12, 8445796c8dcSSimon Schubert DW_CFA_def_cfa_offset_sf = 0x13, 8455796c8dcSSimon Schubert DW_CFA_val_offset = 0x14, 8465796c8dcSSimon Schubert DW_CFA_val_offset_sf = 0x15, 8475796c8dcSSimon Schubert DW_CFA_val_expression = 0x16, 8485796c8dcSSimon Schubert 8495796c8dcSSimon Schubert DW_CFA_lo_user = 0x1c, 8505796c8dcSSimon Schubert DW_CFA_hi_user = 0x3f, 8515796c8dcSSimon Schubert 8525796c8dcSSimon Schubert /* SGI/MIPS specific. */ 8535796c8dcSSimon Schubert DW_CFA_MIPS_advance_loc8 = 0x1d, 8545796c8dcSSimon Schubert /* GNU extensions. */ 8555796c8dcSSimon Schubert DW_CFA_GNU_window_save = 0x2d, 8565796c8dcSSimon Schubert DW_CFA_GNU_args_size = 0x2e, 8575796c8dcSSimon Schubert DW_CFA_GNU_negative_offset_extended = 0x2f 8585796c8dcSSimon Schubert }; 8595796c8dcSSimon Schubert 8605796c8dcSSimon Schubert #define DW_CIE_ID 0xffffffff 8615796c8dcSSimon Schubert #define DW64_CIE_ID 0xffffffffffffffffULL 8625796c8dcSSimon Schubert #define DW_CIE_VERSION 1 8635796c8dcSSimon Schubert 8645796c8dcSSimon Schubert #define DW_CFA_extended 0 8655796c8dcSSimon Schubert 8665796c8dcSSimon Schubert #define DW_CHILDREN_no 0x00 8675796c8dcSSimon Schubert #define DW_CHILDREN_yes 0x01 8685796c8dcSSimon Schubert 8695796c8dcSSimon Schubert #define DW_ADDR_none 0 8705796c8dcSSimon Schubert 8715796c8dcSSimon Schubert /* Source language names and codes. */ 8725796c8dcSSimon Schubert enum dwarf_source_language 8735796c8dcSSimon Schubert { 8745796c8dcSSimon Schubert DW_LANG_C89 = 0x0001, 8755796c8dcSSimon Schubert DW_LANG_C = 0x0002, 8765796c8dcSSimon Schubert DW_LANG_Ada83 = 0x0003, 8775796c8dcSSimon Schubert DW_LANG_C_plus_plus = 0x0004, 8785796c8dcSSimon Schubert DW_LANG_Cobol74 = 0x0005, 8795796c8dcSSimon Schubert DW_LANG_Cobol85 = 0x0006, 8805796c8dcSSimon Schubert DW_LANG_Fortran77 = 0x0007, 8815796c8dcSSimon Schubert DW_LANG_Fortran90 = 0x0008, 8825796c8dcSSimon Schubert DW_LANG_Pascal83 = 0x0009, 8835796c8dcSSimon Schubert DW_LANG_Modula2 = 0x000a, 8845796c8dcSSimon Schubert /* DWARF 3. */ 8855796c8dcSSimon Schubert DW_LANG_Java = 0x000b, 8865796c8dcSSimon Schubert DW_LANG_C99 = 0x000c, 8875796c8dcSSimon Schubert DW_LANG_Ada95 = 0x000d, 8885796c8dcSSimon Schubert DW_LANG_Fortran95 = 0x000e, 8895796c8dcSSimon Schubert DW_LANG_PLI = 0x000f, 8905796c8dcSSimon Schubert DW_LANG_ObjC = 0x0010, 8915796c8dcSSimon Schubert DW_LANG_ObjC_plus_plus = 0x0011, 8925796c8dcSSimon Schubert DW_LANG_UPC = 0x0012, 8935796c8dcSSimon Schubert DW_LANG_D = 0x0013, 894*cf7f2e2dSJohn Marino /* DWARF 4. */ 895*cf7f2e2dSJohn Marino DW_LANG_Python = 0x0014, 8965796c8dcSSimon Schubert 8975796c8dcSSimon Schubert DW_LANG_lo_user = 0x8000, /* Implementation-defined range start. */ 8985796c8dcSSimon Schubert DW_LANG_hi_user = 0xffff, /* Implementation-defined range start. */ 8995796c8dcSSimon Schubert 9005796c8dcSSimon Schubert /* MIPS. */ 9015796c8dcSSimon Schubert DW_LANG_Mips_Assembler = 0x8001, 9025796c8dcSSimon Schubert /* UPC. */ 903*cf7f2e2dSJohn Marino DW_LANG_Upc = 0x8765, 904*cf7f2e2dSJohn Marino /* HP extensions. */ 905*cf7f2e2dSJohn Marino DW_LANG_HP_Bliss = 0x8003, 906*cf7f2e2dSJohn Marino DW_LANG_HP_Basic91 = 0x8004, 907*cf7f2e2dSJohn Marino DW_LANG_HP_Pascal91 = 0x8005, 908*cf7f2e2dSJohn Marino DW_LANG_HP_IMacro = 0x8006, 909*cf7f2e2dSJohn Marino DW_LANG_HP_Assembler = 0x8007 9105796c8dcSSimon Schubert }; 9115796c8dcSSimon Schubert 9125796c8dcSSimon Schubert /* Names and codes for macro information. */ 9135796c8dcSSimon Schubert enum dwarf_macinfo_record_type 9145796c8dcSSimon Schubert { 9155796c8dcSSimon Schubert DW_MACINFO_define = 1, 9165796c8dcSSimon Schubert DW_MACINFO_undef = 2, 9175796c8dcSSimon Schubert DW_MACINFO_start_file = 3, 9185796c8dcSSimon Schubert DW_MACINFO_end_file = 4, 9195796c8dcSSimon Schubert DW_MACINFO_vendor_ext = 255 9205796c8dcSSimon Schubert }; 9215796c8dcSSimon Schubert 9225796c8dcSSimon Schubert /* @@@ For use with GNU frame unwind information. */ 9235796c8dcSSimon Schubert 9245796c8dcSSimon Schubert #define DW_EH_PE_absptr 0x00 9255796c8dcSSimon Schubert #define DW_EH_PE_omit 0xff 9265796c8dcSSimon Schubert 9275796c8dcSSimon Schubert #define DW_EH_PE_uleb128 0x01 9285796c8dcSSimon Schubert #define DW_EH_PE_udata2 0x02 9295796c8dcSSimon Schubert #define DW_EH_PE_udata4 0x03 9305796c8dcSSimon Schubert #define DW_EH_PE_udata8 0x04 9315796c8dcSSimon Schubert #define DW_EH_PE_sleb128 0x09 9325796c8dcSSimon Schubert #define DW_EH_PE_sdata2 0x0A 9335796c8dcSSimon Schubert #define DW_EH_PE_sdata4 0x0B 9345796c8dcSSimon Schubert #define DW_EH_PE_sdata8 0x0C 9355796c8dcSSimon Schubert #define DW_EH_PE_signed 0x08 9365796c8dcSSimon Schubert 9375796c8dcSSimon Schubert #define DW_EH_PE_pcrel 0x10 9385796c8dcSSimon Schubert #define DW_EH_PE_textrel 0x20 9395796c8dcSSimon Schubert #define DW_EH_PE_datarel 0x30 9405796c8dcSSimon Schubert #define DW_EH_PE_funcrel 0x40 9415796c8dcSSimon Schubert #define DW_EH_PE_aligned 0x50 9425796c8dcSSimon Schubert 9435796c8dcSSimon Schubert #define DW_EH_PE_indirect 0x80 9445796c8dcSSimon Schubert 9455796c8dcSSimon Schubert #endif /* _ELF_DWARF2_H */ 946