|
|
1.1 ! root 1: /* @(#)sym.h 2.3 */ ! 2: #define isymNil -1L ! 3: #define isym0 0L ! 4: ! 5: #define bitHigh (0x80000000) ! 6: ! 7: /* magic number definitions */ ! 8: #define magicImpure 0407 /* impure format */ ! 9: #define magicReadOnly 0410 /* read-only text */ ! 10: #define magicDemand 0413 /* demand load format */ ! 11: #define magicLpd 0401 /* lpd (UNIX/RT) */ ! 12: #define magicSplit 0411 /* separated I&D */ ! 13: #define magicOverlay 0405 /* overlay */ ! 14: ! 15: #ifdef SYSIII ! 16: #ifndef REGULUS ! 17: ! 18: /* stuff directly related to the symbol table */ ! 19: struct exec { /* a.out header */ ! 20: short a_magic; /* magic number */ ! 21: uint a_text; /* size of text segment */ ! 22: uint a_data; /* size of initialized data */ ! 23: uint a_bss; /* size of uninitialized data */ ! 24: uint a_syms; /* size of symbol table */ ! 25: uint a_entry; /* entry point */ ! 26: uint a_stamp; /* system environment stamp */ ! 27: uint a_flag; /* relocation info stripped */ ! 28: }; ! 29: ! 30: /* ***** in invocation of BADMAG macro, argument should not be a function.***/ ! 31: #define FBadMagic(X) (X.a_magic!=magicReadOnly && X.a_magic!=magicImpure \ ! 32: && X.a_magic!=magicLpd && X.a_magic!=magicSplit \ ! 33: && X.a_magic!=magicOverlay) ! 34: ! 35: #define CbTextOffset(x) (cbEXECR) ! 36: #define CbSymOffset(x) ((x).a_text + (x).a_data + CbTextOffset(x)) ! 37: ! 38: /* values for type flag */ ! 39: #define N_UNDF 0 /* undefined */ ! 40: #define N_ABS 01 /* absolute */ ! 41: #define N_TEXT 02 /* text symbol */ ! 42: #define N_DATA 03 /* data symbol */ ! 43: #define N_BSS 04 /* bss symbol */ ! 44: #define N_TYPE 037 /* gets JUST the type bits (removes N_EXT) */ ! 45: #define N_REG 024 /* register name */ ! 46: #define N_FN 037 /* file name symbol */ ! 47: #define N_EXT 040 /* external bit, or'ed in */ ! 48: ! 49: typedef struct SYMS { /* same record as `nlist, but with my names */ ! 50: char sbSym[8]; /* symbol name */ ! 51: short type; /* type flag */ ! 52: uint value; /* something appropriate to the type */ ! 53: } SYMR, *pSYMR; ! 54: #define cbSYMR sizeof(SYMR) ! 55: ! 56: /* then following is replaced by a procedure for BSD41 - see sym.c */ ! 57: #define SbInCore(sb) (sb) ! 58: /* end of normal SYSIII */ ! 59: ! 60: #else ! 61: ! 62: /* stuff directly related to the symbol table */ ! 63: struct exec { /* a.out header */ ! 64: short a_magic; /* magic number */ ! 65: long a_text; /* size of text segment */ ! 66: long a_data; /* size of initialized data */ ! 67: long a_bss; /* size of uninitialized data */ ! 68: long a_syms; /* size of symbol table */ ! 69: long a_stksize; /* stack size */ ! 70: long a_entry; /* entry point */ ! 71: short a_flag; /* relocation info stripped */ ! 72: }; ! 73: ! 74: #define A_MAGIC1 0x601a /* normal */ ! 75: #define A_MAGIC0 0x601c /* shared text - 2k boundaries */ ! 76: #define A_MAGIC2 0x601d /* separated I&D */ ! 77: #define A_MAGIC3 0x601e /* shared text - 4k boundaries */ ! 78: /* ***** in invocation of BADMAG macro, argument should not be a function.***/ ! 79: #define FBadMagic(X) (X.a_magic!=A_MAGIC1 && X.a_magic!=A_MAGIC2 \ ! 80: && X.a_magic!=A_MAGIC3 && X.a_magic!=A_MAGIC0) ! 81: ! 82: #define CbTextOffset(x) (cbEXECR) ! 83: #define CbSymOffset(x) (CbTextOffset(x) + (x).a_text + (x).a_data) ! 84: ! 85: /* values for type flag */ ! 86: #define N_UNDF 0 /* undefined */ ! 87: #define N_ABS 040000 /* absolute */ ! 88: #define N_TEXT 01000 /* text symbol */ ! 89: #define N_DATA 02000 /* data symbol */ ! 90: #define N_BSS 0400 /* bss symbol */ ! 91: #define N_TYPE 053600 /* gets JUST the type bits (removes N_EXT) */ ! 92: #define N_REG 010000 /* register name */ ! 93: #define N_FN 0200 /* file name symbol */ ! 94: #define N_EXT 020000 /* external bit, or'ed in */ ! 95: ! 96: typedef struct SYMS { /* same record as `nlist, but with my names */ ! 97: char sbSym[8]; /* symbol name */ ! 98: short type; /* type flag */ ! 99: ulong value; /* something appropriate to the type */ ! 100: } SYMR, *pSYMR; ! 101: #define cbSYMR sizeof(SYMR) ! 102: ! 103: /* then following is replaced by a procedure for BSD41 - see sym.c */ ! 104: #define SbInCore(sb) (sb) ! 105: /* end of REGULUS */ ! 106: #endif ! 107: /* end of SYSIII stuff */ ! 108: #endif ! 109: ! 110: #ifdef BSD41 ! 111: extern char * SbInCore(); ! 112: ! 113: struct exec { ! 114: long a_magic; /* magic number */ ! 115: ulong a_text; /* size of text segment */ ! 116: ulong a_data; /* size of initialized data */ ! 117: ulong a_bss; /* size of uninitialized data */ ! 118: ulong a_syms; /* size of symbol table */ ! 119: ulong a_entry; /* entry point */ ! 120: ulong a_trsize; /* size of text relocation */ ! 121: ulong a_drsize; /* size of data relocation */ ! 122: }; ! 123: ! 124: #define FBadMagic(x) \ ! 125: (((x).a_magic)!=magicImpure \ ! 126: && ((x).a_magic)!=magicReadOnly \ ! 127: && ((x).a_magic)!=magicDemand) ! 128: ! 129: #ifdef SUN ! 130: #define CbTextOffset(x) ((x).a_magic==magicDemand ? 2048 : cbEXECR) ! 131: #else ! 132: #define CbTextOffset(x) ((x).a_magic==magicDemand ? 1024 : cbEXECR) ! 133: #endif ! 134: ! 135: #define CbSymOffset(x) \ ! 136: (CbTextOffset(x) + (x).a_text+(x).a_data + (x).a_trsize+(x).a_drsize) ! 137: #define CbStrOffset(x) (CbSymOffset(x) + (x).a_syms) ! 138: ! 139: typedef struct SYMS { /* berkeley `nlist', almost */ ! 140: long sbSym; /* not an `sb', an index into string space */ ! 141: uchar type; /* type flag, i.e. N_TEXT etc; see below */ ! 142: char other; /* unused */ ! 143: short desc; /* see <stab.h> */ ! 144: ulong value; /* value of this symbol (or sdb offset) */ ! 145: } SYMR, *pSYMR; ! 146: #define cbSYMR sizeof(SYMR) ! 147: ! 148: /* ! 149: * Simple values for n_type. ! 150: */ ! 151: #define N_UNDF 0x0 /* undefined */ ! 152: #define N_ABS 0x2 /* absolute */ ! 153: #define N_TEXT 0x4 /* text */ ! 154: #define N_DATA 0x6 /* data */ ! 155: #define N_BSS 0x8 /* bss */ ! 156: #define N_FN 0x1f /* file name symbol */ ! 157: ! 158: #define N_EXT 01 /* external bit, or'ed in */ ! 159: #define N_TYPE 0x1e /* mask for all the type bits */ ! 160: ! 161: #define N_STAB 0xe0 /* if any of these bits set, a SDB entry */ ! 162: /* end of BSD41 */ ! 163: #endif ! 164: ! 165: #define symNil ((pSYMR)0)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.