Annotation of 40BSD/cmd/lisp/h/oaout.h, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.