dwarf2.h revision 50397
150397Sobrien/* Declarations and definitions of codes relating to the DWARF2 symbolic 250397Sobrien debugging information format. 350397Sobrien Copyright (C) 1992, 1993, 1995, 1996, 1997 Free Software Foundation, Inc. 450397Sobrien Contributed by Gary Funck (gary@intrepid.com). Derived from the 550397Sobrien DWARF 1 implementation written by Ron Guilmette (rfg@monkeys.com). 650397Sobrien 750397Sobrien This file is part of GNU CC. 850397Sobrien 950397Sobrien GNU CC is free software; you can redistribute it and/or modify 1050397Sobrien it under the terms of the GNU General Public License as published by 1150397Sobrien the Free Software Foundation; either version 2, or (at your option) 1250397Sobrien any later version. 1350397Sobrien 1450397Sobrien GNU CC is distributed in the hope that it will be useful, 1550397Sobrien but WITHOUT ANY WARRANTY; without even the implied warranty of 1650397Sobrien MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1750397Sobrien GNU General Public License for more details. 1850397Sobrien 1950397Sobrien You should have received a copy of the GNU General Public License 2050397Sobrien along with GNU CC; see the file COPYING. If not, write to 2150397Sobrien the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ 2250397Sobrien 2350397Sobrien/* This file is derived from the DWARF specification (a public document) 2450397Sobrien Revision 2.0.0 (July 27, 1993) developed by the UNIX International 2550397Sobrien Programming Languages Special Interest Group (UI/PLSIG) and distributed 2650397Sobrien by UNIX International. Copies of this specification are available from 2750397Sobrien UNIX International, 20 Waterview Boulevard, Parsippany, NJ, 07054. */ 2850397Sobrien 2950397Sobrien/* This file is shared between GCC and GDB, and should not contain 3050397Sobrien prototypes. */ 3150397Sobrien 3250397Sobrien/* Tag names and codes. */ 3350397Sobrien 3450397Sobrienenum dwarf_tag 3550397Sobrien { 3650397Sobrien DW_TAG_padding = 0x00, 3750397Sobrien DW_TAG_array_type = 0x01, 3850397Sobrien DW_TAG_class_type = 0x02, 3950397Sobrien DW_TAG_entry_point = 0x03, 4050397Sobrien DW_TAG_enumeration_type = 0x04, 4150397Sobrien DW_TAG_formal_parameter = 0x05, 4250397Sobrien DW_TAG_imported_declaration = 0x08, 4350397Sobrien DW_TAG_label = 0x0a, 4450397Sobrien DW_TAG_lexical_block = 0x0b, 4550397Sobrien DW_TAG_member = 0x0d, 4650397Sobrien DW_TAG_pointer_type = 0x0f, 4750397Sobrien DW_TAG_reference_type = 0x10, 4850397Sobrien DW_TAG_compile_unit = 0x11, 4950397Sobrien DW_TAG_string_type = 0x12, 5050397Sobrien DW_TAG_structure_type = 0x13, 5150397Sobrien DW_TAG_subroutine_type = 0x15, 5250397Sobrien DW_TAG_typedef = 0x16, 5350397Sobrien DW_TAG_union_type = 0x17, 5450397Sobrien DW_TAG_unspecified_parameters = 0x18, 5550397Sobrien DW_TAG_variant = 0x19, 5650397Sobrien DW_TAG_common_block = 0x1a, 5750397Sobrien DW_TAG_common_inclusion = 0x1b, 5850397Sobrien DW_TAG_inheritance = 0x1c, 5950397Sobrien DW_TAG_inlined_subroutine = 0x1d, 6050397Sobrien DW_TAG_module = 0x1e, 6150397Sobrien DW_TAG_ptr_to_member_type = 0x1f, 6250397Sobrien DW_TAG_set_type = 0x20, 6350397Sobrien DW_TAG_subrange_type = 0x21, 6450397Sobrien DW_TAG_with_stmt = 0x22, 6550397Sobrien DW_TAG_access_declaration = 0x23, 6650397Sobrien DW_TAG_base_type = 0x24, 6750397Sobrien DW_TAG_catch_block = 0x25, 6850397Sobrien DW_TAG_const_type = 0x26, 6950397Sobrien DW_TAG_constant = 0x27, 7050397Sobrien DW_TAG_enumerator = 0x28, 7150397Sobrien DW_TAG_file_type = 0x29, 7250397Sobrien DW_TAG_friend = 0x2a, 7350397Sobrien DW_TAG_namelist = 0x2b, 7450397Sobrien DW_TAG_namelist_item = 0x2c, 7550397Sobrien DW_TAG_packed_type = 0x2d, 7650397Sobrien DW_TAG_subprogram = 0x2e, 7750397Sobrien DW_TAG_template_type_param = 0x2f, 7850397Sobrien DW_TAG_template_value_param = 0x30, 7950397Sobrien DW_TAG_thrown_type = 0x31, 8050397Sobrien DW_TAG_try_block = 0x32, 8150397Sobrien DW_TAG_variant_part = 0x33, 8250397Sobrien DW_TAG_variable = 0x34, 8350397Sobrien DW_TAG_volatile_type = 0x35, 8450397Sobrien /* SGI/MIPS Extensions */ 8550397Sobrien DW_TAG_MIPS_loop = 0x4081, 8650397Sobrien /* GNU extensions */ 8750397Sobrien DW_TAG_format_label = 0x4101, /* for FORTRAN 77 and Fortran 90 */ 8850397Sobrien DW_TAG_function_template = 0x4102, /* for C++ */ 8950397Sobrien DW_TAG_class_template = 0x4103 /* for C++ */ 9050397Sobrien }; 9150397Sobrien 9250397Sobrien#define DW_TAG_lo_user 0x4080 9350397Sobrien#define DW_TAG_hi_user 0xffff 9450397Sobrien 9550397Sobrien/* flag that tells whether entry has a child or not */ 9650397Sobrien#define DW_children_no 0 9750397Sobrien#define DW_children_yes 1 9850397Sobrien 9950397Sobrien/* Form names and codes. */ 10050397Sobrienenum dwarf_form 10150397Sobrien { 10250397Sobrien DW_FORM_addr = 0x01, 10350397Sobrien DW_FORM_block2 = 0x03, 10450397Sobrien DW_FORM_block4 = 0x04, 10550397Sobrien DW_FORM_data2 = 0x05, 10650397Sobrien DW_FORM_data4 = 0x06, 10750397Sobrien DW_FORM_data8 = 0x07, 10850397Sobrien DW_FORM_string = 0x08, 10950397Sobrien DW_FORM_block = 0x09, 11050397Sobrien DW_FORM_block1 = 0x0a, 11150397Sobrien DW_FORM_data1 = 0x0b, 11250397Sobrien DW_FORM_flag = 0x0c, 11350397Sobrien DW_FORM_sdata = 0x0d, 11450397Sobrien DW_FORM_strp = 0x0e, 11550397Sobrien DW_FORM_udata = 0x0f, 11650397Sobrien DW_FORM_ref_addr = 0x10, 11750397Sobrien DW_FORM_ref1 = 0x11, 11850397Sobrien DW_FORM_ref2 = 0x12, 11950397Sobrien DW_FORM_ref4 = 0x13, 12050397Sobrien DW_FORM_ref8 = 0x14, 12150397Sobrien DW_FORM_ref_udata = 0x15, 12250397Sobrien DW_FORM_indirect = 0x16 12350397Sobrien }; 12450397Sobrien 12550397Sobrien/* Attribute names and codes. */ 12650397Sobrien 12750397Sobrienenum dwarf_attribute 12850397Sobrien { 12950397Sobrien DW_AT_sibling = 0x01, 13050397Sobrien DW_AT_location = 0x02, 13150397Sobrien DW_AT_name = 0x03, 13250397Sobrien DW_AT_ordering = 0x09, 13350397Sobrien DW_AT_subscr_data = 0x0a, 13450397Sobrien DW_AT_byte_size = 0x0b, 13550397Sobrien DW_AT_bit_offset = 0x0c, 13650397Sobrien DW_AT_bit_size = 0x0d, 13750397Sobrien DW_AT_element_list = 0x0f, 13850397Sobrien DW_AT_stmt_list = 0x10, 13950397Sobrien DW_AT_low_pc = 0x11, 14050397Sobrien DW_AT_high_pc = 0x12, 14150397Sobrien DW_AT_language = 0x13, 14250397Sobrien DW_AT_member = 0x14, 14350397Sobrien DW_AT_discr = 0x15, 14450397Sobrien DW_AT_discr_value = 0x16, 14550397Sobrien DW_AT_visibility = 0x17, 14650397Sobrien DW_AT_import = 0x18, 14750397Sobrien DW_AT_string_length = 0x19, 14850397Sobrien DW_AT_common_reference = 0x1a, 14950397Sobrien DW_AT_comp_dir = 0x1b, 15050397Sobrien DW_AT_const_value = 0x1c, 15150397Sobrien DW_AT_containing_type = 0x1d, 15250397Sobrien DW_AT_default_value = 0x1e, 15350397Sobrien DW_AT_inline = 0x20, 15450397Sobrien DW_AT_is_optional = 0x21, 15550397Sobrien DW_AT_lower_bound = 0x22, 15650397Sobrien DW_AT_producer = 0x25, 15750397Sobrien DW_AT_prototyped = 0x27, 15850397Sobrien DW_AT_return_addr = 0x2a, 15950397Sobrien DW_AT_start_scope = 0x2c, 16050397Sobrien DW_AT_stride_size = 0x2e, 16150397Sobrien DW_AT_upper_bound = 0x2f, 16250397Sobrien DW_AT_abstract_origin = 0x31, 16350397Sobrien DW_AT_accessibility = 0x32, 16450397Sobrien DW_AT_address_class = 0x33, 16550397Sobrien DW_AT_artificial = 0x34, 16650397Sobrien DW_AT_base_types = 0x35, 16750397Sobrien DW_AT_calling_convention = 0x36, 16850397Sobrien DW_AT_count = 0x37, 16950397Sobrien DW_AT_data_member_location = 0x38, 17050397Sobrien DW_AT_decl_column = 0x39, 17150397Sobrien DW_AT_decl_file = 0x3a, 17250397Sobrien DW_AT_decl_line = 0x3b, 17350397Sobrien DW_AT_declaration = 0x3c, 17450397Sobrien DW_AT_discr_list = 0x3d, 17550397Sobrien DW_AT_encoding = 0x3e, 17650397Sobrien DW_AT_external = 0x3f, 17750397Sobrien DW_AT_frame_base = 0x40, 17850397Sobrien DW_AT_friend = 0x41, 17950397Sobrien DW_AT_identifier_case = 0x42, 18050397Sobrien DW_AT_macro_info = 0x43, 18150397Sobrien DW_AT_namelist_items = 0x44, 18250397Sobrien DW_AT_priority = 0x45, 18350397Sobrien DW_AT_segment = 0x46, 18450397Sobrien DW_AT_specification = 0x47, 18550397Sobrien DW_AT_static_link = 0x48, 18650397Sobrien DW_AT_type = 0x49, 18750397Sobrien DW_AT_use_location = 0x4a, 18850397Sobrien DW_AT_variable_parameter = 0x4b, 18950397Sobrien DW_AT_virtuality = 0x4c, 19050397Sobrien DW_AT_vtable_elem_location = 0x4d, 19150397Sobrien /* SGI/MIPS Extensions */ 19250397Sobrien DW_AT_MIPS_fde = 0x2001, 19350397Sobrien DW_AT_MIPS_loop_begin = 0x2002, 19450397Sobrien DW_AT_MIPS_tail_loop_begin = 0x2003, 19550397Sobrien DW_AT_MIPS_epilog_begin = 0x2004, 19650397Sobrien DW_AT_MIPS_loop_unroll_factor = 0x2005, 19750397Sobrien DW_AT_MIPS_software_pipeline_depth = 0x2006, 19850397Sobrien DW_AT_MIPS_linkage_name = 0x2007, 19950397Sobrien DW_AT_MIPS_stride = 0x2008, 20050397Sobrien DW_AT_MIPS_abstract_name = 0x2009, 20150397Sobrien DW_AT_MIPS_clone_origin = 0x200a, 20250397Sobrien DW_AT_MIPS_has_inlines = 0x200b, 20350397Sobrien /* GNU extensions. */ 20450397Sobrien DW_AT_sf_names = 0x2101, 20550397Sobrien DW_AT_src_info = 0x2102, 20650397Sobrien DW_AT_mac_info = 0x2103, 20750397Sobrien DW_AT_src_coords = 0x2104, 20850397Sobrien DW_AT_body_begin = 0x2105, 20950397Sobrien DW_AT_body_end = 0x2106 21050397Sobrien }; 21150397Sobrien 21250397Sobrien#define DW_AT_lo_user 0x2000 /* implementation-defined range start */ 21350397Sobrien#define DW_AT_hi_user 0x3ff0 /* implementation-defined range end */ 21450397Sobrien 21550397Sobrien/* Location atom names and codes. */ 21650397Sobrien 21750397Sobrienenum dwarf_location_atom 21850397Sobrien { 21950397Sobrien DW_OP_addr = 0x03, 22050397Sobrien DW_OP_deref = 0x06, 22150397Sobrien DW_OP_const1u = 0x08, 22250397Sobrien DW_OP_const1s = 0x09, 22350397Sobrien DW_OP_const2u = 0x0a, 22450397Sobrien DW_OP_const2s = 0x0b, 22550397Sobrien DW_OP_const4u = 0x0c, 22650397Sobrien DW_OP_const4s = 0x0d, 22750397Sobrien DW_OP_const8u = 0x0e, 22850397Sobrien DW_OP_const8s = 0x0f, 22950397Sobrien DW_OP_constu = 0x10, 23050397Sobrien DW_OP_consts = 0x11, 23150397Sobrien DW_OP_dup = 0x12, 23250397Sobrien DW_OP_drop = 0x13, 23350397Sobrien DW_OP_over = 0x14, 23450397Sobrien DW_OP_pick = 0x15, 23550397Sobrien DW_OP_swap = 0x16, 23650397Sobrien DW_OP_rot = 0x17, 23750397Sobrien DW_OP_xderef = 0x18, 23850397Sobrien DW_OP_abs = 0x19, 23950397Sobrien DW_OP_and = 0x1a, 24050397Sobrien DW_OP_div = 0x1b, 24150397Sobrien DW_OP_minus = 0x1c, 24250397Sobrien DW_OP_mod = 0x1d, 24350397Sobrien DW_OP_mul = 0x1e, 24450397Sobrien DW_OP_neg = 0x1f, 24550397Sobrien DW_OP_not = 0x20, 24650397Sobrien DW_OP_or = 0x21, 24750397Sobrien DW_OP_plus = 0x22, 24850397Sobrien DW_OP_plus_uconst = 0x23, 24950397Sobrien DW_OP_shl = 0x24, 25050397Sobrien DW_OP_shr = 0x25, 25150397Sobrien DW_OP_shra = 0x26, 25250397Sobrien DW_OP_xor = 0x27, 25350397Sobrien DW_OP_bra = 0x28, 25450397Sobrien DW_OP_eq = 0x29, 25550397Sobrien DW_OP_ge = 0x2a, 25650397Sobrien DW_OP_gt = 0x2b, 25750397Sobrien DW_OP_le = 0x2c, 25850397Sobrien DW_OP_lt = 0x2d, 25950397Sobrien DW_OP_ne = 0x2e, 26050397Sobrien DW_OP_skip = 0x2f, 26150397Sobrien DW_OP_lit0 = 0x30, 26250397Sobrien DW_OP_lit1 = 0x31, 26350397Sobrien DW_OP_lit2 = 0x32, 26450397Sobrien DW_OP_lit3 = 0x33, 26550397Sobrien DW_OP_lit4 = 0x34, 26650397Sobrien DW_OP_lit5 = 0x35, 26750397Sobrien DW_OP_lit6 = 0x36, 26850397Sobrien DW_OP_lit7 = 0x37, 26950397Sobrien DW_OP_lit8 = 0x38, 27050397Sobrien DW_OP_lit9 = 0x39, 27150397Sobrien DW_OP_lit10 = 0x3a, 27250397Sobrien DW_OP_lit11 = 0x3b, 27350397Sobrien DW_OP_lit12 = 0x3c, 27450397Sobrien DW_OP_lit13 = 0x3d, 27550397Sobrien DW_OP_lit14 = 0x3e, 27650397Sobrien DW_OP_lit15 = 0x3f, 27750397Sobrien DW_OP_lit16 = 0x40, 27850397Sobrien DW_OP_lit17 = 0x41, 27950397Sobrien DW_OP_lit18 = 0x42, 28050397Sobrien DW_OP_lit19 = 0x43, 28150397Sobrien DW_OP_lit20 = 0x44, 28250397Sobrien DW_OP_lit21 = 0x45, 28350397Sobrien DW_OP_lit22 = 0x46, 28450397Sobrien DW_OP_lit23 = 0x47, 28550397Sobrien DW_OP_lit24 = 0x48, 28650397Sobrien DW_OP_lit25 = 0x49, 28750397Sobrien DW_OP_lit26 = 0x4a, 28850397Sobrien DW_OP_lit27 = 0x4b, 28950397Sobrien DW_OP_lit28 = 0x4c, 29050397Sobrien DW_OP_lit29 = 0x4d, 29150397Sobrien DW_OP_lit30 = 0x4e, 29250397Sobrien DW_OP_lit31 = 0x4f, 29350397Sobrien DW_OP_reg0 = 0x50, 29450397Sobrien DW_OP_reg1 = 0x51, 29550397Sobrien DW_OP_reg2 = 0x52, 29650397Sobrien DW_OP_reg3 = 0x53, 29750397Sobrien DW_OP_reg4 = 0x54, 29850397Sobrien DW_OP_reg5 = 0x55, 29950397Sobrien DW_OP_reg6 = 0x56, 30050397Sobrien DW_OP_reg7 = 0x57, 30150397Sobrien DW_OP_reg8 = 0x58, 30250397Sobrien DW_OP_reg9 = 0x59, 30350397Sobrien DW_OP_reg10 = 0x5a, 30450397Sobrien DW_OP_reg11 = 0x5b, 30550397Sobrien DW_OP_reg12 = 0x5c, 30650397Sobrien DW_OP_reg13 = 0x5d, 30750397Sobrien DW_OP_reg14 = 0x5e, 30850397Sobrien DW_OP_reg15 = 0x5f, 30950397Sobrien DW_OP_reg16 = 0x60, 31050397Sobrien DW_OP_reg17 = 0x61, 31150397Sobrien DW_OP_reg18 = 0x62, 31250397Sobrien DW_OP_reg19 = 0x63, 31350397Sobrien DW_OP_reg20 = 0x64, 31450397Sobrien DW_OP_reg21 = 0x65, 31550397Sobrien DW_OP_reg22 = 0x66, 31650397Sobrien DW_OP_reg23 = 0x67, 31750397Sobrien DW_OP_reg24 = 0x68, 31850397Sobrien DW_OP_reg25 = 0x69, 31950397Sobrien DW_OP_reg26 = 0x6a, 32050397Sobrien DW_OP_reg27 = 0x6b, 32150397Sobrien DW_OP_reg28 = 0x6c, 32250397Sobrien DW_OP_reg29 = 0x6d, 32350397Sobrien DW_OP_reg30 = 0x6e, 32450397Sobrien DW_OP_reg31 = 0x6f, 32550397Sobrien DW_OP_breg0 = 0x70, 32650397Sobrien DW_OP_breg1 = 0x71, 32750397Sobrien DW_OP_breg2 = 0x72, 32850397Sobrien DW_OP_breg3 = 0x73, 32950397Sobrien DW_OP_breg4 = 0x74, 33050397Sobrien DW_OP_breg5 = 0x75, 33150397Sobrien DW_OP_breg6 = 0x76, 33250397Sobrien DW_OP_breg7 = 0x77, 33350397Sobrien DW_OP_breg8 = 0x78, 33450397Sobrien DW_OP_breg9 = 0x79, 33550397Sobrien DW_OP_breg10 = 0x7a, 33650397Sobrien DW_OP_breg11 = 0x7b, 33750397Sobrien DW_OP_breg12 = 0x7c, 33850397Sobrien DW_OP_breg13 = 0x7d, 33950397Sobrien DW_OP_breg14 = 0x7e, 34050397Sobrien DW_OP_breg15 = 0x7f, 34150397Sobrien DW_OP_breg16 = 0x80, 34250397Sobrien DW_OP_breg17 = 0x81, 34350397Sobrien DW_OP_breg18 = 0x82, 34450397Sobrien DW_OP_breg19 = 0x83, 34550397Sobrien DW_OP_breg20 = 0x84, 34650397Sobrien DW_OP_breg21 = 0x85, 34750397Sobrien DW_OP_breg22 = 0x86, 34850397Sobrien DW_OP_breg23 = 0x87, 34950397Sobrien DW_OP_breg24 = 0x88, 35050397Sobrien DW_OP_breg25 = 0x89, 35150397Sobrien DW_OP_breg26 = 0x8a, 35250397Sobrien DW_OP_breg27 = 0x8b, 35350397Sobrien DW_OP_breg28 = 0x8c, 35450397Sobrien DW_OP_breg29 = 0x8d, 35550397Sobrien DW_OP_breg30 = 0x8e, 35650397Sobrien DW_OP_breg31 = 0x8f, 35750397Sobrien DW_OP_regx = 0x90, 35850397Sobrien DW_OP_fbreg = 0x91, 35950397Sobrien DW_OP_bregx = 0x92, 36050397Sobrien DW_OP_piece = 0x93, 36150397Sobrien DW_OP_deref_size = 0x94, 36250397Sobrien DW_OP_xderef_size = 0x95, 36350397Sobrien DW_OP_nop = 0x96 36450397Sobrien }; 36550397Sobrien 36650397Sobrien#define DW_OP_lo_user 0x80 /* implementation-defined range start */ 36750397Sobrien#define DW_OP_hi_user 0xff /* implementation-defined range end */ 36850397Sobrien 36950397Sobrien/* Type encodings. */ 37050397Sobrien 37150397Sobrienenum dwarf_type 37250397Sobrien { 37350397Sobrien DW_ATE_void = 0x0, 37450397Sobrien DW_ATE_address = 0x1, 37550397Sobrien DW_ATE_boolean = 0x2, 37650397Sobrien DW_ATE_complex_float = 0x3, 37750397Sobrien DW_ATE_float = 0x4, 37850397Sobrien DW_ATE_signed = 0x5, 37950397Sobrien DW_ATE_signed_char = 0x6, 38050397Sobrien DW_ATE_unsigned = 0x7, 38150397Sobrien DW_ATE_unsigned_char = 0x8 38250397Sobrien }; 38350397Sobrien 38450397Sobrien#define DW_ATE_lo_user 0x80 38550397Sobrien#define DW_ATE_hi_user 0xff 38650397Sobrien 38750397Sobrien/* Array ordering names and codes. */ 38850397Sobrienenum dwarf_array_dim_ordering 38950397Sobrien { 39050397Sobrien DW_ORD_row_major = 0, 39150397Sobrien DW_ORD_col_major = 1 39250397Sobrien }; 39350397Sobrien 39450397Sobrien/* access attribute */ 39550397Sobrienenum dwarf_access_attribute 39650397Sobrien { 39750397Sobrien DW_ACCESS_public = 1, 39850397Sobrien DW_ACCESS_protected = 2, 39950397Sobrien DW_ACCESS_private = 3 40050397Sobrien }; 40150397Sobrien 40250397Sobrien/* visibility */ 40350397Sobrienenum dwarf_visibility_attribute 40450397Sobrien { 40550397Sobrien DW_VIS_local = 1, 40650397Sobrien DW_VIS_exported = 2, 40750397Sobrien DW_VIS_qualified = 3 40850397Sobrien }; 40950397Sobrien 41050397Sobrien/* virtuality */ 41150397Sobrienenum dwarf_virtuality_attribute 41250397Sobrien { 41350397Sobrien DW_VIRTUALITY_none = 0, 41450397Sobrien DW_VIRTUALITY_virtual = 1, 41550397Sobrien DW_VIRTUALITY_pure_virtual = 2 41650397Sobrien }; 41750397Sobrien 41850397Sobrien/* case sensitivity */ 41950397Sobrienenum dwarf_id_case 42050397Sobrien { 42150397Sobrien DW_ID_case_sensitive = 0, 42250397Sobrien DW_ID_up_case = 1, 42350397Sobrien DW_ID_down_case = 2, 42450397Sobrien DW_ID_case_insensitive = 3 42550397Sobrien }; 42650397Sobrien 42750397Sobrien/* calling convention */ 42850397Sobrienenum dwarf_calling_convention 42950397Sobrien { 43050397Sobrien DW_CC_normal = 0x1, 43150397Sobrien DW_CC_program = 0x2, 43250397Sobrien DW_CC_nocall = 0x3 43350397Sobrien }; 43450397Sobrien 43550397Sobrien#define DW_CC_lo_user 0x40 43650397Sobrien#define DW_CC_hi_user 0xff 43750397Sobrien 43850397Sobrien/* inline attribute */ 43950397Sobrienenum dwarf_inline_attribute 44050397Sobrien { 44150397Sobrien DW_INL_not_inlined = 0, 44250397Sobrien DW_INL_inlined = 1, 44350397Sobrien DW_INL_declared_not_inlined = 2, 44450397Sobrien DW_INL_declared_inlined = 3 44550397Sobrien }; 44650397Sobrien 44750397Sobrien/* discriminant lists */ 44850397Sobrienenum dwarf_discrim_list 44950397Sobrien { 45050397Sobrien DW_DSC_label = 0, 45150397Sobrien DW_DSC_range = 1 45250397Sobrien }; 45350397Sobrien 45450397Sobrien/* line number opcodes */ 45550397Sobrienenum dwarf_line_number_ops 45650397Sobrien { 45750397Sobrien DW_LNS_extended_op = 0, 45850397Sobrien DW_LNS_copy = 1, 45950397Sobrien DW_LNS_advance_pc = 2, 46050397Sobrien DW_LNS_advance_line = 3, 46150397Sobrien DW_LNS_set_file = 4, 46250397Sobrien DW_LNS_set_column = 5, 46350397Sobrien DW_LNS_negate_stmt = 6, 46450397Sobrien DW_LNS_set_basic_block = 7, 46550397Sobrien DW_LNS_const_add_pc = 8, 46650397Sobrien DW_LNS_fixed_advance_pc = 9 46750397Sobrien }; 46850397Sobrien 46950397Sobrien/* line number extended opcodes */ 47050397Sobrienenum dwarf_line_number_x_ops 47150397Sobrien { 47250397Sobrien DW_LNE_end_sequence = 1, 47350397Sobrien DW_LNE_set_address = 2, 47450397Sobrien DW_LNE_define_file = 3 47550397Sobrien }; 47650397Sobrien 47750397Sobrien/* call frame information */ 47850397Sobrienenum dwarf_call_frame_info 47950397Sobrien { 48050397Sobrien DW_CFA_advance_loc = 0x40, 48150397Sobrien DW_CFA_offset = 0x80, 48250397Sobrien DW_CFA_restore = 0xc0, 48350397Sobrien DW_CFA_nop = 0x00, 48450397Sobrien DW_CFA_set_loc = 0x01, 48550397Sobrien DW_CFA_advance_loc1 = 0x02, 48650397Sobrien DW_CFA_advance_loc2 = 0x03, 48750397Sobrien DW_CFA_advance_loc4 = 0x04, 48850397Sobrien DW_CFA_offset_extended = 0x05, 48950397Sobrien DW_CFA_restore_extended = 0x06, 49050397Sobrien DW_CFA_undefined = 0x07, 49150397Sobrien DW_CFA_same_value = 0x08, 49250397Sobrien DW_CFA_register = 0x09, 49350397Sobrien DW_CFA_remember_state = 0x0a, 49450397Sobrien DW_CFA_restore_state = 0x0b, 49550397Sobrien DW_CFA_def_cfa = 0x0c, 49650397Sobrien DW_CFA_def_cfa_register = 0x0d, 49750397Sobrien DW_CFA_def_cfa_offset = 0x0e, 49850397Sobrien /* SGI/MIPS specific */ 49950397Sobrien DW_CFA_MIPS_advance_loc8 = 0x1d, 50050397Sobrien 50150397Sobrien /* GNU extensions */ 50250397Sobrien DW_CFA_GNU_window_save = 0x2d, 50350397Sobrien DW_CFA_GNU_args_size = 0x2e 50450397Sobrien }; 50550397Sobrien 50650397Sobrien#define DW_CIE_ID 0xffffffff 50750397Sobrien#define DW_CIE_VERSION 1 50850397Sobrien 50950397Sobrien#define DW_CFA_extended 0 51050397Sobrien#define DW_CFA_low_user 0x1c 51150397Sobrien#define DW_CFA_high_user 0x3f 51250397Sobrien 51350397Sobrien#define DW_CHILDREN_no 0x00 51450397Sobrien#define DW_CHILDREN_yes 0x01 51550397Sobrien 51650397Sobrien#define DW_ADDR_none 0 51750397Sobrien 51850397Sobrien/* Source language names and codes. */ 51950397Sobrien 52050397Sobrienenum dwarf_source_language 52150397Sobrien { 52250397Sobrien DW_LANG_C89 = 0x0001, 52350397Sobrien DW_LANG_C = 0x0002, 52450397Sobrien DW_LANG_Ada83 = 0x0003, 52550397Sobrien DW_LANG_C_plus_plus = 0x0004, 52650397Sobrien DW_LANG_Cobol74 = 0x0005, 52750397Sobrien DW_LANG_Cobol85 = 0x0006, 52850397Sobrien DW_LANG_Fortran77 = 0x0007, 52950397Sobrien DW_LANG_Fortran90 = 0x0008, 53050397Sobrien DW_LANG_Pascal83 = 0x0009, 53150397Sobrien DW_LANG_Modula2 = 0x000a, 53250397Sobrien DW_LANG_Mips_Assembler = 0x8001 53350397Sobrien }; 53450397Sobrien 53550397Sobrien 53650397Sobrien#define DW_LANG_lo_user 0x8000 /* implementation-defined range start */ 53750397Sobrien#define DW_LANG_hi_user 0xffff /* implementation-defined range start */ 53850397Sobrien 53950397Sobrien/* Names and codes for macro information. */ 54050397Sobrien 54150397Sobrienenum dwarf_macinfo_record_type 54250397Sobrien { 54350397Sobrien DW_MACINFO_define = 1, 54450397Sobrien DW_MACINFO_undef = 2, 54550397Sobrien DW_MACINFO_start_file = 3, 54650397Sobrien DW_MACINFO_end_file = 4, 54750397Sobrien DW_MACINFO_vendor_ext = 255 54850397Sobrien }; 549