Annotation of GNUtools/cc/dwarf.h, revision 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.