Annotation of coherent/b/bin/c/h/nout.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * This is the format of the 'l.out'
                      3: 
                      4:  * file with 32-bit addressing (for
                      5:  * assembler, linkage editor, and compiler).
                      6:  * It also has the namelist structure for
                      7:  * the nlist routine.
                      8:  */
                      9: #ifndef         L_OUT_H
                     10: #define         L_OUT_H
                     11: #include "types.h"
                     12: 
                     13: #define        NCPLN   16              /* Chars in loader name */
                     14: #define NLSEG  9               /* No. of segments */
                     15: #define        NXSEG   6               /* No. of segments used by exec */
                     16: #define        L_MAGIC 0407            /* Magic number */
                     17: 
                     18: /*
                     19:  * This is the header.
                     20:  * It sits at the front of the file,
                     21:  * holding control information and
                     22:  * the sizes of the other segments
                     23:  * of the file.
                     24:  */
                     25: struct ldheader {
                     26:        short   l_magic;        /* Magic number */
                     27:        short   l_flag;         /* Flags */
                     28:        short   l_machine;      /* Type of target machine */
                     29:        short   l_tbase;        /* Text starts here */
                     30:        long    l_ssize[NLSEG]; /* Segment sizes */
                     31:        long    l_entry;        /* Entry point */
                     32: };
                     33: 
                     34: /* Flags */
                     35: #define LF_SHR 01              /* Bound shared */
                     36: #define LF_SEP 02              /* Bound separated */
                     37: #define LF_NRB 04              /* No reloc. bits */
                     38: #define        LF_KER  010             /* Loadable driver */
                     39: #define        LF_32   020             /* 32-bit format l.out */
                     40: #define        LF_SLREF 040            /* References shared library */
                     41: #define        LF_SLIB 0100            /* Is the shared library */
                     42: #define LF_DEBUG 0200          /* Debug on entry */
                     43: 
                     44: /* Formats */
                     45: #define        AFMT    "%08lx"         /* Address */
                     46: 
                     47: /* Machines */
                     48: #ifndef        MTYPE_H
                     49: #include "mtype.h"
                     50: #endif
                     51: 
                     52: /* Segments */
                     53: #define        L_SHRI  0               /* Shared Instruction space */
                     54: #define        L_PRVI  1               /* Private Instruction space */
                     55: #define        L_BSSI  2               /* Uninitialised Instruction */
                     56: #define        L_SHRD  3               /* Shared Data space */
                     57: #define        L_PRVD  4               /* Private Data space */
                     58: #define        L_BSSD  5               /* Uninitalised Data */
                     59: #define L_DEBUG 6              /* Debug tables */
                     60: #define L_SYM  7               /* Symbols */
                     61: #define L_REL  8               /* Relocation */
                     62: 
                     63: #define L_ABS  9               /* Absolute (symbol table) */
                     64: #define L_REF  10              /* Reference (symbol table) */
                     65: 
                     66: /*
                     67:  * Symbol.
                     68:  * These live in the 'L_SYM' section
                     69:  * of the file; the size of this section
                     70:  * determines the number of symbols.
                     71:  */
                     72: struct ldsym {
                     73:        char    ls_id[NCPLN];   /* Symbol name */
                     74:        short   ls_type;        /* Global + Seg. */
                     75:        long    ls_addr;        /* Value of symbol */
                     76: };
                     77: 
                     78: /*
                     79:  * The nlist structure for the nlist routine.
                     80:  */
                     81: struct nlist   {
                     82:        char    n_name[NCPLN];  /* Symbol name */
                     83:        short   n_type;         /* Type flag */
                     84:        long    n_value;        /* Value */
                     85: };
                     86: 
                     87: #define        L_GLOBAL        020
                     88: 
                     89: /*
                     90:  * Relocation.
                     91:  * Relocation is a byte stream.
                     92:  * The first is an opcode.
                     93:  * If L_SYM-based relocation, the next two
                     94:  * bytes are symbol number.
                     95:  * The next 4 bytes are the address
                     96:  * of relocation.
                     97:  */
                     98: #define LR_SEG 017             /* Seg., L_SYM => Sym. based */
                     99: #define LR_PCR 020             /* PC Rel. flag */
                    100: #define LR_OP  0340            /* Opcode */
                    101: 
                    102: #define LR_BYTE        (0<<5)          /* Rel. a byte */
                    103: #define LR_WORD        (1<<5)          /* Rel. a word */
                    104: #define        LR_LONG (2<<5)          /* Rel. a long */
                    105: 
                    106: #endif

unix.superglobalmegacorp.com

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