Annotation of GNUtools/cc/dwarf.h, revision 1.1.1.1

1.1       root        1: /* Declarations and definitions of codes relating to the DWARF symbolic
                      2:    debugging information format.
                      3: 
                      4:    Written by Ron Guilmette ([email protected])
                      5: 
                      6: Copyright (C) 1992 Free Software Foundation, Inc.
                      7: 
                      8: This file is part of GNU CC.
                      9: 
                     10: GNU CC is free software; you can redistribute it and/or modify
                     11: it under the terms of the GNU General Public License as published by
                     12: the Free Software Foundation; either version 2, or (at your option)
                     13: any later version.
                     14: 
                     15: GNU CC is distributed in the hope that it will be useful,
                     16: but WITHOUT ANY WARRANTY; without even the implied warranty of
                     17: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     18: GNU General Public License for more details.
                     19: 
                     20: You should have received a copy of the GNU General Public License
                     21: along with GNU CC; see the file COPYING.  If not, write to
                     22: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
                     23: 
                     24: /* This file is derived from the DWARF specification (a public document)
                     25:    Revision 1.0.1 (April 8, 1992) developed by the UNIX International
                     26:    Programming Languages Special Interest Group (UI/PLSIG) and distributed
                     27:    by UNIX International.  Copies of this specification are available from
                     28:    UNIX International, 20 Waterview Boulevard, Parsippany, NJ, 07054.
                     29: */
                     30: 
                     31: /* Tag names and codes.  */
                     32: 
                     33: enum dwarf_tag {
                     34:     TAG_padding                        = 0x0000,
                     35:     TAG_array_type             = 0x0001,
                     36:     TAG_class_type             = 0x0002,
                     37:     TAG_entry_point            = 0x0003,
                     38:     TAG_enumeration_type       = 0x0004,
                     39:     TAG_formal_parameter       = 0x0005,
                     40:     TAG_global_subroutine      = 0x0006,
                     41:     TAG_global_variable                = 0x0007,
                     42:                                /* 0x0008 -- reserved */
                     43:                                /* 0x0009 -- reserved */
                     44:     TAG_label                  = 0x000a,
                     45:     TAG_lexical_block          = 0x000b,
                     46:     TAG_local_variable         = 0x000c,
                     47:     TAG_member                 = 0x000d,
                     48:                                /* 0x000e -- reserved */
                     49:     TAG_pointer_type           = 0x000f,
                     50:     TAG_reference_type         = 0x0010,
                     51:     TAG_compile_unit           = 0x0011,
                     52:     TAG_string_type            = 0x0012,
                     53:     TAG_structure_type         = 0x0013,
                     54:     TAG_subroutine             = 0x0014,
                     55:     TAG_subroutine_type                = 0x0015,
                     56:     TAG_typedef                        = 0x0016,
                     57:     TAG_union_type             = 0x0017,
                     58:     TAG_unspecified_parameters = 0x0018,
                     59:     TAG_variant                        = 0x0019,
                     60:     TAG_common_block           = 0x001a,
                     61:     TAG_common_inclusion       = 0x001b,
                     62:     TAG_inheritance            = 0x001c,
                     63:     TAG_inlined_subroutine     = 0x001d,
                     64:     TAG_module                 = 0x001e,
                     65:     TAG_ptr_to_member_type     = 0x001f,
                     66:     TAG_set_type               = 0x0020,
                     67:     TAG_subrange_type          = 0x0021,
                     68:     TAG_with_stmt              = 0x0022,
                     69: 
                     70:     /* GNU extensions */
                     71: 
                     72:     TAG_format_label           = 0x8000,  /* for FORTRAN 77 and Fortran 90 */
                     73:     TAG_namelist               = 0x8001,  /* For Fortran 90 */
                     74:     TAG_function_template      = 0x8002,  /* for C++ */
                     75:     TAG_class_template         = 0x8003   /* for C++ */
                     76: };
                     77: 
                     78: #define TAG_lo_user    0x8000  /* implementation-defined range start */
                     79: #define TAG_hi_user    0xffff  /* implementation-defined range end */
                     80: #define TAG_source_file TAG_compile_unit  /* for backward compatibility */
                     81: 
                     82: /* Form names and codes.  */
                     83: 
                     84: enum dwarf_form {
                     85:     FORM_ADDR  = 0x1,
                     86:     FORM_REF   = 0x2,
                     87:     FORM_BLOCK2        = 0x3,
                     88:     FORM_BLOCK4        = 0x4,
                     89:     FORM_DATA2 = 0x5,
                     90:     FORM_DATA4 = 0x6,
                     91:     FORM_DATA8 = 0x7,
                     92:     FORM_STRING        = 0x8
                     93: };
                     94: 
                     95: /* Attribute names and codes.  */
                     96: 
                     97: enum dwarf_attribute {
                     98:     AT_sibling                 = (0x0010|FORM_REF),
                     99:     AT_location                        = (0x0020|FORM_BLOCK2),
                    100:     AT_name                    = (0x0030|FORM_STRING),
                    101:     AT_fund_type               = (0x0050|FORM_DATA2),
                    102:     AT_mod_fund_type           = (0x0060|FORM_BLOCK2),
                    103:     AT_user_def_type           = (0x0070|FORM_REF),
                    104:     AT_mod_u_d_type            = (0x0080|FORM_BLOCK2),
                    105:     AT_ordering                        = (0x0090|FORM_DATA2),
                    106:     AT_subscr_data             = (0x00a0|FORM_BLOCK2),
                    107:     AT_byte_size               = (0x00b0|FORM_DATA4),
                    108:     AT_bit_offset              = (0x00c0|FORM_DATA2),
                    109:     AT_bit_size                        = (0x00d0|FORM_DATA4),
                    110:                                /* (0x00e0|FORM_xxxx) -- reserved */
                    111:     AT_element_list            = (0x00f0|FORM_BLOCK4),
                    112:     AT_stmt_list               = (0x0100|FORM_DATA4),
                    113:     AT_low_pc                  = (0x0110|FORM_ADDR),
                    114:     AT_high_pc                 = (0x0120|FORM_ADDR),
                    115:     AT_language                        = (0x0130|FORM_DATA4),
                    116:     AT_member                  = (0x0140|FORM_REF),
                    117:     AT_discr                   = (0x0150|FORM_REF),
                    118:     AT_discr_value             = (0x0160|FORM_BLOCK2),
                    119:                                /* (0x0170|FORM_xxxx) -- reserved */
                    120:                                /* (0x0180|FORM_xxxx) -- reserved */
                    121:     AT_string_length           = (0x0190|FORM_BLOCK2),
                    122:     AT_common_reference                = (0x01a0|FORM_REF),
                    123:     AT_comp_dir                        = (0x01b0|FORM_STRING),
                    124:         AT_const_value_string  = (0x01c0|FORM_STRING),
                    125:         AT_const_value_data2   = (0x01c0|FORM_DATA2),
                    126:         AT_const_value_data4   = (0x01c0|FORM_DATA4),
                    127:         AT_const_value_data8   = (0x01c0|FORM_DATA8),
                    128:         AT_const_value_block2  = (0x01c0|FORM_BLOCK2),
                    129:         AT_const_value_block4  = (0x01c0|FORM_BLOCK4),
                    130:     AT_containing_type         = (0x01d0|FORM_REF),
                    131:         AT_default_value_addr  = (0x01e0|FORM_ADDR),
                    132:         AT_default_value_data2 = (0x01e0|FORM_DATA2),
                    133:         AT_default_value_data4 = (0x01e0|FORM_DATA4),
                    134:         AT_default_value_data8 = (0x01e0|FORM_DATA8),
                    135:         AT_default_value_string        = (0x01e0|FORM_STRING),
                    136:     AT_friends                 = (0x01f0|FORM_BLOCK2),
                    137:     AT_inline                  = (0x0200|FORM_STRING),
                    138:     AT_is_optional             = (0x0210|FORM_STRING),
                    139:         AT_lower_bound_ref     = (0x0220|FORM_REF),
                    140:         AT_lower_bound_data2   = (0x0220|FORM_DATA2),
                    141:         AT_lower_bound_data4   = (0x0220|FORM_DATA4),
                    142:         AT_lower_bound_data8   = (0x0220|FORM_DATA8),
                    143:     AT_private                 = (0x0240|FORM_STRING),
                    144:     AT_producer                        = (0x0250|FORM_STRING),
                    145:     AT_program                 = (0x0230|FORM_STRING),
                    146:     AT_protected               = (0x0260|FORM_STRING),
                    147:     AT_prototyped              = (0x0270|FORM_STRING),
                    148:     AT_public                  = (0x0280|FORM_STRING),
                    149:     AT_pure_virtual            = (0x0290|FORM_STRING),
                    150:     AT_return_addr             = (0x02a0|FORM_BLOCK2),
                    151:     AT_abstract_origin         = (0x02b0|FORM_REF),
                    152:     AT_start_scope             = (0x02c0|FORM_DATA4),
                    153:     AT_stride_size             = (0x02e0|FORM_DATA4),
                    154:         AT_upper_bound_ref     = (0x02f0|FORM_REF),
                    155:         AT_upper_bound_data2   = (0x02f0|FORM_DATA2),
                    156:         AT_upper_bound_data4   = (0x02f0|FORM_DATA4),
                    157:         AT_upper_bound_data8   = (0x02f0|FORM_DATA8),
                    158:     AT_virtual                 = (0x0300|FORM_STRING),
                    159: 
                    160:     /* GNU extensions.  */
                    161: 
                    162:     AT_sf_names                        = (0x8000|FORM_DATA4),
                    163:     AT_src_info                        = (0x8010|FORM_DATA4),
                    164:     AT_mac_info                        = (0x8020|FORM_DATA4),
                    165:     AT_src_coords              = (0x8030|FORM_DATA4),
                    166:     AT_body_begin              = (0x8040|FORM_ADDR),
                    167:     AT_body_end                        = (0x8050|FORM_ADDR)
                    168: };
                    169: 
                    170: #define AT_lo_user     0x2000  /* implementation-defined range start */
                    171: #define AT_hi_user     0x3ff0  /* implementation-defined range end */
                    172: 
                    173: /* Location atom names and codes.  */
                    174: 
                    175: enum dwarf_location_atom {
                    176:     OP_REG     = 0x01,
                    177:     OP_BASEREG = 0x02,
                    178:     OP_ADDR    = 0x03,
                    179:     OP_CONST   = 0x04,
                    180:     OP_DEREF2  = 0x05,
                    181:     OP_DEREF4  = 0x06,
                    182:     OP_ADD     = 0x07
                    183: };
                    184: 
                    185: #define OP_LO_USER     0x80  /* implementation-defined range start */
                    186: #define OP_HI_USER     0xff  /* implementation-defined range end */
                    187: 
                    188: /* Fundamental type names and codes.  */
                    189: 
                    190: enum dwarf_fundamental_type {
                    191:     FT_char            = 0x0001,
                    192:     FT_signed_char     = 0x0002,
                    193:     FT_unsigned_char   = 0x0003,
                    194:     FT_short           = 0x0004,
                    195:     FT_signed_short    = 0x0005,
                    196:     FT_unsigned_short  = 0x0006,
                    197:     FT_integer         = 0x0007,
                    198:     FT_signed_integer  = 0x0008,
                    199:     FT_unsigned_integer        = 0x0009,
                    200:     FT_long            = 0x000a,
                    201:     FT_signed_long     = 0x000b,
                    202:     FT_unsigned_long   = 0x000c,
                    203:     FT_pointer         = 0x000d,  /* an alias for (void *) */
                    204:     FT_float           = 0x000e,
                    205:     FT_dbl_prec_float  = 0x000f,
                    206:     FT_ext_prec_float  = 0x0010,  /* breaks "classic" svr4 SDB */
                    207:     FT_complex         = 0x0011,  /* breaks "classic" svr4 SDB */
                    208:     FT_dbl_prec_complex        = 0x0012,  /* breaks "classic" svr4 SDB */
                    209:                        /* 0x0013 -- reserved */
                    210:     FT_void            = 0x0014,
                    211:     FT_boolean         = 0x0015,  /* breaks "classic" svr4 SDB */
                    212:     FT_ext_prec_complex        = 0x0016,  /* breaks "classic" svr4 SDB */
                    213:     FT_label           = 0x0017,
                    214:   
                    215:     /* GNU extensions
                    216:        The low order byte must indicate the size (in bytes) for the type.
                    217:        All of these types will probably break "classic" svr4 SDB */
                    218: 
                    219:     FT_long_long       = 0x8008,
                    220:     FT_signed_long_long        = 0x8108,
                    221:     FT_unsigned_long_long = 0x8208,
                    222: 
                    223:     FT_int8            = 0x9001,
                    224:     FT_signed_int8     = 0x9101,
                    225:     FT_unsigned_int8   = 0x9201,
                    226:     FT_int16           = 0x9302,
                    227:     FT_signed_int16    = 0x9402,
                    228:     FT_unsigned_int16  = 0x9502,
                    229:     FT_int32           = 0x9604,
                    230:     FT_signed_int32    = 0x9704,
                    231:     FT_unsigned_int32  = 0x9804,
                    232:     FT_int64           = 0x9908,
                    233:     FT_signed_int64    = 0x9a08,
                    234:     FT_unsigned_int64  = 0x9b08,
                    235: 
                    236:     FT_real32          = 0xa004,
                    237:     FT_real64          = 0xa108,
                    238:     FT_real96          = 0xa20c,
                    239:     FT_real128         = 0xa310
                    240: };
                    241: 
                    242: #define FT_lo_user     0x8000  /* implementation-defined range start */
                    243: #define FT_hi_user     0xffff  /* implementation defined range end */
                    244: 
                    245: /* Type modifier names and codes.  */
                    246: 
                    247: enum dwarf_type_modifier {
                    248:     MOD_pointer_to     = 0x01,
                    249:     MOD_reference_to   = 0x02,
                    250:     MOD_const          = 0x03,
                    251:     MOD_volatile       = 0x04
                    252: };
                    253: 
                    254: #define MOD_lo_user    0x80  /* implementation-defined range start */
                    255: #define MOD_hi_user    0xff  /* implementation-defined range end */
                    256: 
                    257: /* Array ordering names and codes.  */
                    258: 
                    259: enum dwarf_array_dim_ordering {
                    260:     ORD_row_major      = 0,
                    261:     ORD_col_major      = 1
                    262: };
                    263: 
                    264: /* Array subscript format names and codes.  */
                    265: 
                    266: enum dwarf_subscr_data_formats {
                    267:     FMT_FT_C_C = 0x0,
                    268:     FMT_FT_C_X = 0x1,
                    269:     FMT_FT_X_C = 0x2,
                    270:     FMT_FT_X_X = 0x3,
                    271:     FMT_UT_C_C = 0x4,
                    272:     FMT_UT_C_X = 0x5,
                    273:     FMT_UT_X_C = 0x6,
                    274:     FMT_UT_X_X = 0x7,
                    275:     FMT_ET     = 0x8
                    276: };
                    277: 
                    278: /* Derived from above for ease of use.  */
                    279: 
                    280: #define FMT_CODE(_FUNDAMENTAL_TYPE_P, _UB_CONST_P, _LB_CONST_P) \
                    281:  (((_FUNDAMENTAL_TYPE_P) ? 0 : 4)      \
                    282:   | ((_UB_CONST_P) ? 0 : 2)            \
                    283:   | ((_LB_CONST_P) ? 0 : 1))
                    284: 
                    285: /* Source language names and codes.  */
                    286: 
                    287: enum dwarf_source_language {
                    288:     LANG_C89           = 0x00000001,
                    289:     LANG_C             = 0x00000002,
                    290:     LANG_ADA83         = 0x00000003,
                    291:     LANG_C_PLUS_PLUS   = 0x00000004,
                    292:     LANG_COBOL74       = 0x00000005,
                    293:     LANG_COBOL85       = 0x00000006,
                    294:     LANG_FORTRAN77     = 0x00000007,
                    295:     LANG_FORTRAN90     = 0x00000008,
                    296:     LANG_PASCAL83      = 0x00000009,
                    297:     LANG_MODULA2       = 0x0000000a
                    298: };
                    299: 
                    300: #define LANG_lo_user   0x00008000  /* implementation-defined range start */
                    301: #define LANG_hi_user   0x0000ffff  /* implementation-defined range end */
                    302: 
                    303: /* Names and codes for GNU "macinfo" extension.  */
                    304: 
                    305: enum dwarf_macinfo_record_type {
                    306:     MACINFO_start      = 's',
                    307:     MACINFO_resume     = 'r',
                    308:     MACINFO_define     = 'd',
                    309:     MACINFO_undef      = 'u'
                    310: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.