|
|
1.1 ! root 1: /* @(#)ty.h 2.7 */ ! 2: #define ityNil -1 ! 3: #define cTyMax 2 /* most TY's for any one var */ ! 4: ! 5: #ifdef TAHOE ! 6: typedef struct TDS { /* type descriptor */ ! 7: uchar st; /* symbol type */ ! 8: bits fConstant : 1; /* used in expr.c to indicate a constant */ ! 9: bits width : 7; /* for bit fields */ ! 10: bits tq6 : 2; /* type qualifiers */ ! 11: bits tq5 : 2; ! 12: bits tq4 : 2; ! 13: bits tq3 : 2; ! 14: bits tq2 : 2; ! 15: bits tq1 : 2; ! 16: bits bt : 4; /* basic type */ ! 17: } TDR, *pTDR; ! 18: #else ! 19: #ifdef M68000 ! 20: typedef struct TDS { /* type descriptor */ ! 21: uchar st; /* symbol type */ ! 22: bits fConstant : 1; /* used in expr.c to indicate a constant */ ! 23: bits width : 7; /* for bit fields */ ! 24: bits bt : 4; /* basic type */ ! 25: bits tq6 : 2; /* type qualifiers */ ! 26: bits tq5 : 2; ! 27: bits tq4 : 2; ! 28: bits tq3 : 2; ! 29: bits tq2 : 2; ! 30: bits tq1 : 2; ! 31: } TDR, *pTDR; ! 32: #else ! 33: typedef struct TDS { /* type descriptor */ ! 34: uchar st; /* symbol type */ ! 35: bits fConstant : 1; /* used in expr.c to indicate a constant */ ! 36: bits width : 7; /* for bit fields */ ! 37: bits bt : 4; /* basic type */ ! 38: bits tq1 : 2; ! 39: bits tq2 : 2; ! 40: bits tq3 : 2; ! 41: bits tq4 : 2; ! 42: bits tq5 : 2; ! 43: bits tq6 : 2; /* type qualifiers */ ! 44: } TDR, *pTDR; ! 45: #endif ! 46: #endif ! 47: #define cbTDR sizeof(TDR) ! 48: #define tdNil ((pTDR)0) ! 49: ! 50: /* type qualifiers for TDR.tq1 -> TDR.tq6 */ ! 51: #define tqNil 0 ! 52: #define tqPtr 1 ! 53: #define tqFunc 2 ! 54: #define tqArray 3 ! 55: ! 56: /* basic types as seen in TDR.bt */ ! 57: #define btNil 0 ! 58: #define btFArg 1 ! 59: #define btChar 2 ! 60: #define btShort 3 ! 61: #define btInt 4 ! 62: #define btLong 5 ! 63: #define btFloat 6 ! 64: #define btDouble 7 ! 65: #define btStruct 8 ! 66: #define btUnion 9 ! 67: #define btEType 10 ! 68: #define btEMember 11 ! 69: #define btUChar 12 ! 70: #define btUShort 13 ! 71: #define btUInt 14 ! 72: #define btULong 15 ! 73: ! 74: typedef struct { /* `nlist' structure */ ! 75: #ifdef SYSIII ! 76: char sbVar[cbVarMax]; ! 77: #endif ! 78: #ifdef BSD41 ! 79: long sbVar; /* it is actually an index into string space */ ! 80: #endif ! 81: TDR td; /* type descriptor */ ! 82: ulong valTy; ! 83: } TYR, *pTYR; ! 84: #define cbTYR sizeof(TYR) ! 85: #define tyNil ((pTYR)0) ! 86: ! 87: /* this is the extension record that remembers structure affiliation and ! 88: * array dimensions. This must be carefully matched to the TYR so that ! 89: * the 'st' field lands on the same byte. ! 90: */ ! 91: typedef struct { ! 92: long issRef; /* iss of parent type */ ! 93: uchar st; /* if st != stExtend, don't use this record */ ! 94: char unused; ! 95: short cb; ! 96: short rgDim[2]; ! 97: } XTYR, *pXTYR; ! 98: #define cbXTYR sizeof(XTYR) ! 99: #define xtyNil ((pXTYR)0) ! 100: ! 101: #ifdef BSD42 ! 102: typedef struct { /* alternate form of BSD symbol for getting at dbx info */ ! 103: long sbVar; /* same as TYR */ ! 104: uchar st; /* same meaning as TYR */ ! 105: char other; ! 106: short size; /* for dbx, this is the size in bytes */ ! 107: ulong valTy; /* for variables - same as TYR */ ! 108: } DBTYR, *pDBTYR; ! 109: #define cdDBTYR sizeof(DBTYR) ! 110: #define dbtyNil ((pDBTYR)0) ! 111: #endif ! 112: ! 113: /* these are defined for each system in sym.h ! 114: * these are the Berkeley definitions ! 115: * #define N_UNDF 0x0 ! 116: * #define N_ABS 0x2 ! 117: * #define N_TEXT 0x4 ! 118: * #define N_DATA 0x6 ! 119: * #define N_BSS 0x8 ! 120: */ ! 121: ! 122: /* values for st. ! 123: * be very careful about using 4, 6, or 8 as last number in ST !!! ! 124: * they are known to the Berkeley loader as specifying text, data and bss space ! 125: */ ! 126: #define stPascal 0x30 /* global pascal symbol: name,,0,subtype,line */ ! 127: #define stGlobal 0x20 /* global symbol: name,,0,type,0 */ ! 128: #define stFName 0x22 /* procedure name (f77 kludge): name,,0 */ ! 129: #define stProc 0x24 /* procedure: name,,0,linenumber,address */ ! 130: #define stStatic 0x26 /* static symbol: name,,0,type,address */ ! 131: #define stLComm 0x28 /* .lcomm symbol: name,,0,type,address */ ! 132: #define stReg 0x40 /* register symbol: name,,0,type,register */ ! 133: #define stLine 0x44 /* source line: 0,,0,linenumber,address */ ! 134: #define stStruct 0x60 /* struct element: name,,w,type,struct_offset (bytes) */ ! 135: /* In the preceding, `w' is the width, specified only for bit fields */ ! 136: /* If w != 0, then offset is in BITS */ ! 137: #define stSource 0x64 /* source file name: name,,0,0,address */ ! 138: #define stLocal 0x80 /* local symbol: name,,0,type,offset */ ! 139: #define stInclude 0x84 /* #include file name: name,,0,0,address */ ! 140: #define stParam 0xa0 /* parameter: name,,0,type,offset */ ! 141: #define stEntry 0xa4 /* alternate entry: name,,0,linenumber,address */ ! 142: #define stLBrac 0xc0 /* left bracket: 0,,0,nesting level, address*/ ! 143: #define stRBrac 0xe0 /* right bracket: 0,,0,nesting level, address*/ ! 144: #define stBComm 0xe2 /* begin common: name,, */ ! 145: #define stEComm 0xe4 /* end common: name,, */ ! 146: #define stELocal 0xe8 /* end common (local name): ,,address */ ! 147: #define stExtend 0xf7 /* cdb: this is a second stab. shape is XTYR, not TYR */ ! 148: #define stSpc 0xfa /* cdb: special variable - lives in cdb, not child */ ! 149: #define stPure 0xfb /* cdb: this is PURE type info (struct, union, enum) */ ! 150: /* dbx uses .lcomm instead */ ! 151: #define stValue 0xfc /* cdb: value field is VALUE, used in expr evaluation */ ! 152: #define stLeng 0xfe /* second stab entry with length information */ ! 153: ! 154: #ifdef BSD41 ! 155: /* the following are used by the BSD pascal compiler for global symbols. ! 156: * they live in the td.bt field of a TYR ! 157: */ ! 158: #define ptSource 1 /* source file name */ ! 159: #define ptInclude 2 /* included file name */ ! 160: #define ptLabel 3 /* global label */ ! 161: #define ptConstant 4 /* global constant */ ! 162: #define ptType 5 /* global type */ ! 163: #define ptVar 6 /* global variable */ ! 164: #define ptFunc 7 /* global function */ ! 165: #define ptProc 8 /* global procedure */ ! 166: #define ptExtFunc 9 /* external function */ ! 167: #define ptExtProc 10 /* external procedure */ ! 168: #define ptLibVar 11 /* library variable */ ! 169: #define ptLibProc 12 /* library routine */ ! 170: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.