|
|
1.1 ! root 1: /* sccs id @(#)oaout.h 34.1 10/3/80 */ ! 2: ! 3: /* ! 4: * Format of an a.out header ! 5: */ ! 6: ! 7: struct exec { /* a.out header */ ! 8: int a_magic; /* magic number */ ! 9: unsigned a_text; /* size of text segment */ ! 10: unsigned a_data; /* size of initialized data */ ! 11: unsigned a_bss; /* size of uninitialized data */ ! 12: unsigned a_syms; /* size of symbol table */ ! 13: unsigned a_entry; /* entry point */ ! 14: unsigned a_trsize; /* size of text relocation */ ! 15: unsigned a_drsize; /* size of data relocation */ ! 16: }; ! 17: ! 18: #define A_MAGIC1 0407 /* normal */ ! 19: #define A_MAGIC2 0410 /* read-only text */ ! 20: #define A_MAGIC3 0411 /* separated I&D (not on VAX) */ ! 21: #define A_MAGIC4 0405 /* overlay */ ! 22: #define A_MAGIC5 0413 /* demand page read-only text */ ! 23: ! 24: struct relocation_info { ! 25: long r_address; /* relative to current segment */ ! 26: long r_symbolnum:24, ! 27: /* if extern then symbol table */ ! 28: /* ordinal (0, 1, 2, ...) else */ ! 29: /* segment number (same as symbol types) */ ! 30: r_pcrel:1, /* if so, segment offset has already */ ! 31: /* been subtracted */ ! 32: r_length:2, /* 0=byte, 1=word, 2=long */ ! 33: r_extern:1, /* does not include value */ ! 34: /* of symbol referenced */ ! 35: r_offset:1, /* already includes origin */ ! 36: /* of this segment (?) */ ! 37: r_pad:3; /* nothing, yet */ ! 38: }; ! 39: #ifndef NCPS ! 40: #define NCPS 8 ! 41: #endif ! 42: struct nlist { /* symbol table entry */ ! 43: char n_name[NCPS]; /* symbol name */ ! 44: char n_type; /* type flag */ ! 45: char n_other; ! 46: short n_desc; ! 47: unsigned n_value; /* value */ ! 48: }; ! 49: ! 50: /* values for type flag */ ! 51: #define N_UNDF 0 /* undefined */ ! 52: #define N_ABS 02 /* absolute */ ! 53: #define N_TEXT 04 /* text */ ! 54: #define N_DATA 06 /* data */ ! 55: #define N_BSS 08 ! 56: #define N_TYPE 037 ! 57: #define N_FN 037 /* file name symbol */ ! 58: ! 59: #define N_GSYM 0040 /* global sym: name,,type,0 */ ! 60: #define N_FNAME 0042 /* procedure name (f77 kludge): name,,,0 */ ! 61: #define N_FUN 0044 /* procedure: name,,linenumber,address */ ! 62: #define N_STSYM 0046 /* static symbol: name,,type,address */ ! 63: #define N_LCSYM 0048 /* .lcomm symbol: name,,type,address */ ! 64: #define N_RSYM 0100 /* register sym: name,,register,offset */ ! 65: #define N_SLINE 0104 /* src line: ,,linenumber,address */ ! 66: #define N_SSYM 0140 /* structure elt: name,,type,struct_offset */ ! 67: #define N_SO 0144 /* source file name: name,,,address */ ! 68: #define N_LSYM 0200 /* local sym: name,,type,offset */ ! 69: #define N_SOL 0204 /* #line source filename: name,,,address */ ! 70: #define N_PSYM 0240 /* parameter: name,,type,offset */ ! 71: #define N_ENTRY 0244 /* alternate entry: name,,linenumber,address */ ! 72: #define N_LBRAC 0300 /* left bracket: ,,nesting level,address */ ! 73: #define N_RBRAC 0340 /* right bracket: ,,nesting level,address */ ! 74: #define N_BCOMM 0342 /* begin common: name,,, */ ! 75: #define N_ECOMM 0344 /* end common: name,,, */ ! 76: #define N_ECOML 0348 /* end common (local name): ,,,address */ ! 77: #define N_LENG 0376 /* second stab entry with length information */ ! 78: ! 79: #define N_EXT 01 /* external bit, or'ed in */ ! 80: ! 81: #define FORMAT "%08x" ! 82: ! 83: #define STABTYPES 0340
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.