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