/* Declarations and definitions of codes relating to the DWARF symbolic
   debugging information format.

   Written by Ron Guilmette (rfg@netcom.com)

Copyright (C) 1992, 2004 Free Software Foundation, Inc.

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2, or (at your option) any later
version.

GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING.  If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.  */

/* This file is derived from the DWARF specification (a public document)
   Revision 1.0.1 (April 8, 1992) developed by the UNIX International
   Programming Languages Special Interest Group (UI/PLSIG) and distributed
   by UNIX International.  Copies of this specification are available from
   UNIX International, 20 Waterview Boulevard, Parsippany, NJ, 07054.
*/

/* Tag names and codes.  */

enum dwarf_tag {
    TAG_padding			= 0x0000,
    TAG_array_type		= 0x0001,
    TAG_class_type		= 0x0002,
    TAG_entry_point		= 0x0003,
    TAG_enumeration_type	= 0x0004,
    TAG_formal_parameter	= 0x0005,
    TAG_global_subroutine	= 0x0006,
    TAG_global_variable		= 0x0007,
    				/* 0x0008 -- reserved */
				/* 0x0009 -- reserved */
    TAG_label			= 0x000a,
    TAG_lexical_block		= 0x000b,
    TAG_local_variable		= 0x000c,
    TAG_member			= 0x000d,
				/* 0x000e -- reserved */
    TAG_pointer_type		= 0x000f,
    TAG_reference_type		= 0x0010,
    TAG_compile_unit		= 0x0011,
    TAG_string_type		= 0x0012,
    TAG_structure_type		= 0x0013,
    TAG_subroutine		= 0x0014,
    TAG_subroutine_type		= 0x0015,
    TAG_typedef			= 0x0016,
    TAG_union_type		= 0x0017,
    TAG_unspecified_parameters	= 0x0018,
    TAG_variant			= 0x0019,
    TAG_common_block		= 0x001a,
    TAG_common_inclusion	= 0x001b,
    TAG_inheritance		= 0x001c,
    TAG_inlined_subroutine	= 0x001d,
    TAG_module			= 0x001e,
    TAG_ptr_to_member_type	= 0x001f,
    TAG_set_type		= 0x0020,
    TAG_subrange_type		= 0x0021,
    TAG_with_stmt		= 0x0022,

    /* GNU extensions */

    TAG_format_label		= 0x8000,  /* for FORTRAN 77 and Fortran 90 */
    TAG_namelist		= 0x8001,  /* For Fortran 90 */
    TAG_function_template	= 0x8002,  /* for C++ */
    TAG_class_template		= 0x8003   /* for C++ */
};

#define TAG_lo_user	0x8000  /* implementation-defined range start */
#define TAG_hi_user	0xffff  /* implementation-defined range end */
#define TAG_source_file TAG_compile_unit  /* for backward compatibility */

/* Form names and codes.  */

enum dwarf_form {
    FORM_ADDR	= 0x1,
    FORM_REF	= 0x2,
    FORM_BLOCK2	= 0x3,
    FORM_BLOCK4	= 0x4,
    FORM_DATA2	= 0x5,
    FORM_DATA4	= 0x6,
    FORM_DATA8	= 0x7,
    FORM_STRING	= 0x8
};

/* Attribute names and codes.  */

enum dwarf_attribute {
    AT_sibling			= (0x0010|FORM_REF),
    AT_location			= (0x0020|FORM_BLOCK2),
    AT_name			= (0x0030|FORM_STRING),
    AT_fund_type		= (0x0050|FORM_DATA2),
    AT_mod_fund_type		= (0x0060|FORM_BLOCK2),
    AT_user_def_type		= (0x0070|FORM_REF),
    AT_mod_u_d_type		= (0x0080|FORM_BLOCK2),
    AT_ordering			= (0x0090|FORM_DATA2),
    AT_subscr_data		= (0x00a0|FORM_BLOCK2),
    AT_byte_size		= (0x00b0|FORM_DATA4),
    AT_bit_offset		= (0x00c0|FORM_DATA2),
    AT_bit_size			= (0x00d0|FORM_DATA4),
				/* (0x00e0|FORM_xxxx) -- reserved */
    AT_element_list		= (0x00f0|FORM_BLOCK4),
    AT_stmt_list		= (0x0100|FORM_DATA4),
    AT_low_pc			= (0x0110|FORM_ADDR),
    AT_high_pc			= (0x0120|FORM_ADDR),
    AT_language			= (0x0130|FORM_DATA4),
    AT_member			= (0x0140|FORM_REF),
    AT_discr			= (0x0150|FORM_REF),
    AT_discr_value		= (0x0160|FORM_BLOCK2),
				/* (0x0170|FORM_xxxx) -- reserved */
				/* (0x0180|FORM_xxxx) -- reserved */
    AT_string_length		= (0x0190|FORM_BLOCK2),
    AT_common_reference		= (0x01a0|FORM_REF),
    AT_comp_dir			= (0x01b0|FORM_STRING),
        AT_const_value_string	= (0x01c0|FORM_STRING),
        AT_const_value_data2	= (0x01c0|FORM_DATA2),
        AT_const_value_data4	= (0x01c0|FORM_DATA4),
        AT_const_value_data8	= (0x01c0|FORM_DATA8),
        AT_const_value_block2	= (0x01c0|FORM_BLOCK2),
        AT_const_value_block4	= (0x01c0|FORM_BLOCK4),
    AT_containing_type		= (0x01d0|FORM_REF),
        AT_default_value_addr	= (0x01e0|FORM_ADDR),
        AT_default_value_data2	= (0x01e0|FORM_DATA2),
        AT_default_value_data4	= (0x01e0|FORM_DATA4),
        AT_default_value_data8	= (0x01e0|FORM_DATA8),
        AT_default_value_string	= (0x01e0|FORM_STRING),
    AT_friends			= (0x01f0|FORM_BLOCK2),
    AT_inline			= (0x0200|FORM_STRING),
    AT_is_optional		= (0x0210|FORM_STRING),
        AT_lower_bound_ref	= (0x0220|FORM_REF),
        AT_lower_bound_data2	= (0x0220|FORM_DATA2),
        AT_lower_bound_data4	= (0x0220|FORM_DATA4),
        AT_lower_bound_data8	= (0x0220|FORM_DATA8),
    AT_private			= (0x0240|FORM_STRING),
    AT_producer			= (0x0250|FORM_STRING),
    AT_program			= (0x0230|FORM_STRING),
    AT_protected		= (0x0260|FORM_STRING),
    AT_prototyped		= (0x0270|FORM_STRING),
    AT_public			= (0x0280|FORM_STRING),
    AT_pure_virtual		= (0x0290|FORM_STRING),
    AT_return_addr		= (0x02a0|FORM_BLOCK2),
    AT_abstract_origin		= (0x02b0|FORM_REF),
    AT_start_scope		= (0x02c0|FORM_DATA4),
    AT_stride_size		= (0x02e0|FORM_DATA4),
        AT_upper_bound_ref	= (0x02f0|FORM_REF),
        AT_upper_bound_data2	= (0x02f0|FORM_DATA2),
        AT_upper_bound_data4	= (0x02f0|FORM_DATA4),
        AT_upper_bound_data8	= (0x02f0|FORM_DATA8),
    AT_virtual			= (0x0300|FORM_STRING),

    /* GNU extensions.  */

    AT_sf_names			= (0x8000|FORM_DATA4),
    AT_src_info			= (0x8010|FORM_DATA4),
    AT_mac_info			= (0x8020|FORM_DATA4),
    AT_src_coords		= (0x8030|FORM_DATA4),
    AT_body_begin		= (0x8040|FORM_ADDR),
    AT_body_end			= (0x8050|FORM_ADDR)
};

#define AT_lo_user	0x2000	/* implementation-defined range start */
#define AT_hi_user	0x3ff0	/* implementation-defined range end */

/* Location atom names and codes.  */

enum dwarf_location_atom {
    OP_REG	= 0x01,
    OP_BASEREG	= 0x02,
    OP_ADDR	= 0x03,
    OP_CONST	= 0x04,
    OP_DEREF2	= 0x05,
    OP_DEREF4	= 0x06,
    OP_ADD	= 0x07,

    /* GNU extensions.  */

    OP_MULT	= 0x80
};

#define OP_LO_USER	0x80  /* implementation-defined range start */
#define OP_HI_USER	0xff  /* implementation-defined range end */

/* Fundamental type names and codes.  */

enum dwarf_fundamental_type {
    FT_char		= 0x0001,
    FT_signed_char	= 0x0002,
    FT_unsigned_char	= 0x0003,
    FT_short		= 0x0004,
    FT_signed_short	= 0x0005,
    FT_unsigned_short	= 0x0006,
    FT_integer		= 0x0007,
    FT_signed_integer	= 0x0008,
    FT_unsigned_integer	= 0x0009,
    FT_long		= 0x000a,
    FT_signed_long	= 0x000b,
    FT_unsigned_long	= 0x000c,
    FT_pointer		= 0x000d,  /* an alias for (void *) */
    FT_float		= 0x000e,
    FT_dbl_prec_float	= 0x000f,
    FT_ext_prec_float	= 0x0010,  /* breaks "classic" svr4 SDB */
    FT_complex		= 0x0011,  /* breaks "classic" svr4 SDB */
    FT_dbl_prec_complex	= 0x0012,  /* breaks "classic" svr4 SDB */
			/* 0x0013 -- reserved */
    FT_void		= 0x0014,
    FT_boolean		= 0x0015,  /* breaks "classic" svr4 SDB */
    FT_ext_prec_complex	= 0x0016,  /* breaks "classic" svr4 SDB */
    FT_label		= 0x0017,
  
    /* GNU extensions
       The low order byte must indicate the size (in bytes) for the type.
       All of these types will probably break "classic" svr4 SDB.  */

    FT_long_long	= 0x8008,
    FT_signed_long_long	= 0x8108,
    FT_unsigned_long_long = 0x8208,

    FT_int8		= 0x9001,
    FT_signed_int8	= 0x9101,
    FT_unsigned_int8	= 0x9201,
    FT_int16		= 0x9302,
    FT_signed_int16	= 0x9402,
    FT_unsigned_int16	= 0x9502,
    FT_int32		= 0x9604,
    FT_signed_int32	= 0x9704,
    FT_unsigned_int32	= 0x9804,
    FT_int64		= 0x9908,
    FT_signed_int64	= 0x9a08,
    FT_unsigned_int64	= 0x9b08,
    FT_int128		= 0x9c10,
    FT_signed_int128	= 0x9d10,
    FT_unsigned_int128	= 0x9e10,

    FT_real32		= 0xa004,
    FT_real64		= 0xa108,
    FT_real96		= 0xa20c,
    FT_real128		= 0xa310
};

#define FT_lo_user	0x8000  /* implementation-defined range start */
#define FT_hi_user	0xffff  /* implementation defined range end */

/* Type modifier names and codes.  */

enum dwarf_type_modifier {
    MOD_pointer_to	= 0x01,
    MOD_reference_to	= 0x02,
    MOD_const		= 0x03,
    MOD_volatile	= 0x04
};

#define MOD_lo_user	0x80  /* implementation-defined range start */
#define MOD_hi_user	0xff  /* implementation-defined range end */

/* Array ordering names and codes.  */

enum dwarf_array_dim_ordering {
    ORD_row_major	= 0,
    ORD_col_major	= 1
};

/* Array subscript format names and codes.  */

enum dwarf_subscr_data_formats {
    FMT_FT_C_C	= 0x0,
    FMT_FT_C_X	= 0x1,
    FMT_FT_X_C	= 0x2,
    FMT_FT_X_X	= 0x3,
    FMT_UT_C_C	= 0x4,
    FMT_UT_C_X	= 0x5,
    FMT_UT_X_C	= 0x6,
    FMT_UT_X_X	= 0x7,
    FMT_ET	= 0x8
};

/* Derived from above for ease of use.  */

#define FMT_CODE(_FUNDAMENTAL_TYPE_P, _LB_CONST_P, _UB_CONST_P) \
 (((_FUNDAMENTAL_TYPE_P) ? 0 : 4)	\
  | ((_LB_CONST_P) ? 0 : 2)		\
  | ((_UB_CONST_P) ? 0 : 1))

/* Source language names and codes.  */

enum dwarf_source_language {
    LANG_C89		= 0x00000001,
    LANG_C		= 0x00000002,
    LANG_ADA83		= 0x00000003,
    LANG_C_PLUS_PLUS	= 0x00000004,
    LANG_COBOL74	= 0x00000005,
    LANG_COBOL85	= 0x00000006,
    LANG_FORTRAN77	= 0x00000007,
    LANG_FORTRAN90	= 0x00000008,
    LANG_PASCAL83	= 0x00000009,
    LANG_MODULA2	= 0x0000000a,
    LANG_JAVA		= 0x0000000b
};

#define LANG_lo_user	0x00008000  /* implementation-defined range start */
#define LANG_hi_user	0x0000ffff  /* implementation-defined range end */

/* Names and codes for GNU "macinfo" extension.  */

enum dwarf_macinfo_record_type {
    MACINFO_start	= 's',
    MACINFO_resume	= 'r',
    MACINFO_define	= 'd',
    MACINFO_undef	= 'u'
};
