Back to index

cell-binutils  2.17cvs20070401
symconst.h
Go to the documentation of this file.
00001 /* Declarations of constants for internal format of MIPS ECOFF symbols.
00002    Originally contributed by MIPS Computer Systems and Third Eye Software.
00003    Changes contributed by Cygnus Support are in the public domain.
00004 
00005    This file is just aggregated with the files that make up the GNU
00006    release; it is not considered part of GAS, GDB, or other GNU
00007    programs.  */
00008 
00009 /*
00010  * |-----------------------------------------------------------|
00011  * | Copyright (c) 1992, 1991, 1990 MIPS Computer Systems, Inc.|
00012  * | MIPS Computer Systems, Inc. grants reproduction and use   |
00013  * | rights to all parties, PROVIDED that this comment is      |
00014  * | maintained in the copy.                                   |
00015  * |-----------------------------------------------------------|
00016  */
00017 
00018 /* (C) Copyright 1984 by Third Eye Software, Inc.
00019  *
00020  * Third Eye Software, Inc. grants reproduction and use rights to
00021  * all parties, PROVIDED that this comment is maintained in the copy.
00022  *
00023  * Third Eye makes no claims about the applicability of this
00024  * symbol table to a particular use.
00025  */
00026 
00027 /* glevels for field in FDR */
00028 #define GLEVEL_0     2
00029 #define GLEVEL_1     1
00030 #define GLEVEL_2     0      /* for upward compat reasons. */
00031 #define GLEVEL_3     3
00032 
00033 /* magic number fo symheader */
00034 #define magicSym     0x7009
00035 /* The Alpha uses this value instead, for some reason.  */
00036 #define magicSym2    0x1992
00037 
00038 /* Language codes */
00039 #define langC        0      
00040 #define langPascal   1
00041 #define langFortran  2
00042 #define       langAssembler 3      /* one Assembley inst might map to many mach */
00043 #define langMachine  4
00044 #define langNil             5
00045 #define langAda             6
00046 #define langPl1             7
00047 #define langCobol    8
00048 #define langStdc     9      /* FIXME: Collides with SGI langCplusplus */
00049 #define langCplusplus       9      /* FIXME: Collides with langStdc */
00050 #define langCplusplusV2     10     /* SGI addition */
00051 #define langMax             11     /* maximum allowed 32 -- 5 bits */
00052 
00053 /* The following are value definitions for the fields in the SYMR */
00054 
00055 /*
00056  * Storage Classes
00057  */
00058 
00059 #define scNil        0
00060 #define scText              1      /* text symbol */
00061 #define scData              2      /* initialized data symbol */
00062 #define scBss        3      /* un-initialized data symbol */
00063 #define scRegister   4      /* value of symbol is register number */
00064 #define scAbs        5      /* value of symbol is absolute */
00065 #define scUndefined  6      /* who knows? */
00066 #define scCdbLocal   7      /* variable's value is IN se->va.?? */
00067 #define scBits              8      /* this is a bit field */
00068 #define scCdbSystem  9      /* variable's value is IN CDB's address space */
00069 #define scDbx        9      /* overlap dbx internal use */
00070 #define scRegImage   10     /* register value saved on stack */
00071 #define scInfo              11     /* symbol contains debugger information */
00072 #define scUserStruct 12     /* address in struct user for current process */
00073 #define scSData             13     /* load time only small data */
00074 #define scSBss              14     /* load time only small common */
00075 #define scRData             15     /* load time only read only data */
00076 #define scVar        16     /* Var parameter (fortran,pascal) */
00077 #define scCommon     17     /* common variable */
00078 #define scSCommon    18     /* small common */
00079 #define scVarRegister       19     /* Var parameter in a register */
00080 #define scVariant    20     /* Variant record */
00081 #define scSUndefined 21     /* small undefined(external) data */
00082 #define scInit              22     /* .init section symbol */
00083 #define scBasedVar   23     /* Fortran or PL/1 ptr based var */ 
00084 #define scXData         24      /* exception handling data */
00085 #define scPData         25      /* Procedure section */
00086 #define scFini          26      /* .fini section */
00087 #define scRConst     27     /* .rconst section */
00088 #define scMax        32
00089 
00090 
00091 /*
00092  *   Symbol Types
00093  */
00094 
00095 #define stNil        0      /* Nuthin' special */
00096 #define stGlobal     1      /* external symbol */
00097 #define stStatic     2      /* static */
00098 #define stParam             3      /* procedure argument */
00099 #define stLocal             4      /* local variable */
00100 #define stLabel             5      /* label */
00101 #define stProc              6      /*     "      "       Procedure */
00102 #define stBlock             7      /* beginnning of block */
00103 #define stEnd        8      /* end (of anything) */
00104 #define stMember     9      /* member (of anything      - struct/union/enum */
00105 #define stTypedef    10     /* type definition */
00106 #define stFile              11     /* file name */
00107 #define stRegReloc   12     /* register relocation */
00108 #define stForward    13     /* forwarding address */
00109 #define stStaticProc 14     /* load time only static procs */
00110 #define stConstant   15     /* const */
00111 #define stStaParam   16     /* Fortran static parameters */
00112     /* These new symbol types have been recently added to SGI machines. */
00113 #define stStruct     26     /* Beginning of block defining a struct type */
00114 #define stUnion             27     /* Beginning of block defining a union type */
00115 #define stEnum              28     /* Beginning of block defining an enum type */
00116 #define stIndirect   34     /* Indirect type specification */
00117     /* Pseudo-symbols - internal to debugger */
00118 #define stStr        60     /* string */
00119 #define stNumber     61     /* pure number (ie. 4 NOR 2+2) */
00120 #define stExpr              62     /* 2+2 vs. 4 */
00121 #define stType              63     /* post-coersion SER */
00122 #define stMax        64
00123 
00124 /* definitions for fields in TIR */
00125 
00126 /* type qualifiers for ti.tq0 -> ti.(itqMax-1) */
00127 #define tqNil 0      /* bt is what you see */
00128 #define tqPtr 1      /* pointer */
00129 #define tqProc       2      /* procedure */
00130 #define tqArray 3    /* duh */
00131 #define tqFar 4      /* longer addressing - 8086/8 land */
00132 #define tqVol 5      /* volatile */
00133 #define tqConst 6    /* const */
00134 #define tqMax 8
00135 
00136 /* basic types as seen in ti.bt */
00137 #define btNil        0      /* undefined (also, enum members) */
00138 #define btAdr        1      /* address - integer same size as pointer */
00139 #define btChar              2      /* character */
00140 #define btUChar             3      /* unsigned character */
00141 #define btShort             4      /* short */
00142 #define btUShort     5      /* unsigned short */
00143 #define btInt        6      /* int */
00144 #define btUInt              7      /* unsigned int */
00145 #define btLong              8      /* long */
00146 #define btULong             9      /* unsigned long */
00147 #define btFloat             10     /* float (real) */
00148 #define btDouble     11     /* Double (real) */
00149 #define btStruct     12     /* Structure (Record) */
00150 #define btUnion             13     /* Union (variant) */
00151 #define btEnum              14     /* Enumerated */
00152 #define btTypedef    15     /* defined via a typedef, isymRef points */
00153 #define btRange             16     /* subrange of int */
00154 #define btSet        17     /* pascal sets */
00155 #define btComplex    18     /* fortran complex */
00156 #define btDComplex   19     /* fortran double complex */
00157 #define btIndirect   20     /* forward or unnamed typedef */
00158 #define btFixedDec   21     /* Fixed Decimal */
00159 #define btFloatDec   22     /* Float Decimal */
00160 #define btString     23     /* Varying Length Character String */
00161 #define btBit        24     /* Aligned Bit String */
00162 #define btPicture    25     /* Picture */
00163 #define btVoid              26     /* void */
00164 #define btLongLong   27     /* long long */
00165 #define btULongLong  28     /* unsigned long long */
00166 #define btMax        64
00167 
00168 #if (_MFG == _MIPS)
00169 /* optimization type codes */
00170 #define otNil        0
00171 #define otReg        1      /* move var to reg */
00172 #define otBlock             2      /* begin basic block */
00173 #define       otProc        3      /* procedure */
00174 #define otInline     4      /* inline procedure */
00175 #define otEnd        5      /* whatever you started */
00176 #define otMax        6      /* KEEP UP TO DATE */
00177 #endif /* (_MFG == _MIPS) */