Annotation of 41BSD/cmd/lisp/h/oaout.h, revision 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.