Annotation of coherent/f/usr/include.78/n.out.h, revision 1.1

1.1     ! root        1: /* (-lgl
        !             2:  *     COHERENT Version 4.0
        !             3:  *     Copyright (c) 1983, 1992 by Mark Williams Company.
        !             4:  *     All rights reserved. May not be copied without permission.
        !             5:  -lgl) */
        !             6: /*
        !             7:  * n.out.h
        !             8:  * This defines the format of the 'l.out' file with 32-bit addressing
        !             9:  * (for assembler, linkage editor, and compiler).
        !            10:  * It also has the namelist structure for the nlist routine.
        !            11:  */
        !            12: #ifndef         __L_OUT_H__
        !            13: #define         __L_OUT_H__
        !            14: 
        !            15: #include <sys/types.h>
        !            16: 
        !            17: #define        NCPLN   16              /* Chars in loader name         */
        !            18: #define NLSEG  9               /* No. of segments              */
        !            19: #define        NXSEG   6               /* No. of segments used by exec */
        !            20: #define        L_MAGIC 0407            /* Magic number                 */
        !            21: 
        !            22: /*
        !            23:  * Header.
        !            24:  * This lives at the front of the file and gives control information
        !            25:  * and the sizes of the other segments of the file.
        !            26:  * The l_u union can be used for different things,
        !            27:  * but keep the size of members to longs.  
        !            28:  */
        !            29: struct ldheader {
        !            30:        short   l_magic;                /* Magic number         */
        !            31:        short   l_flag;                 /* Flags                */
        !            32:        short   l_machine;              /* Type of target machine */
        !            33:        short   l_tbase;                /* Text starts here     */
        !            34:        fsize_t l_ssize[NLSEG];         /* Segment sizes        */
        !            35:        union {
        !            36:                long lu_entry;  /* Entry point                  */
        !            37:                long lu_nhwrel; /* No. HIWORD/LONG rels, for M_LRG8086 */
        !            38:        } l_u;
        !            39: };
        !            40: 
        !            41: #define        l_entry         l_u.lu_entry
        !            42: #define        l_nhwrel        l_u.lu_nhwrel
        !            43: 
        !            44: /* Flags. */
        !            45: #define LF_SHR 01              /* Bound shared                 */
        !            46: #define LF_SEP 02              /* Bound separated              */
        !            47: #define LF_NRB 04              /* No reloc. bits               */
        !            48: #define        LF_KER  010             /* Loadable driver              */
        !            49: #define        LF_32   020             /* 32-bit format l.out          */
        !            50: #define        LF_SLREF 040            /* References shared library    */
        !            51: #define        LF_SLIB 0100            /* Is the shared library        */
        !            52: #define LF_DEBUG 0200          /* Include debug segment flag to linker */
        !            53: #define LF_FAKE        0400            /* Header is displaced to end of exe or prg */
        !            54: 
        !            55: #define        LF_286  0               /* dummy mode [386/exec.c]      */
        !            56: #define        LF_386  0x80000000      /* dummy mode [386/exec.c]      */
        !            57: 
        !            58: /* Formats. */
        !            59: #define        AFMT    "%08lx"         /* Address                      */
        !            60: 
        !            61: /* Machines. */
        !            62: #ifndef        __MTYPE_H__
        !            63: #include <mtype.h>
        !            64: #endif
        !            65: 
        !            66: /* Segments */
        !            67: #define        L_SHRI  0               /* Shared Instruction space     */
        !            68: #define        L_PRVI  1               /* Private Instruction space    */
        !            69: #define        L_BSSI  2               /* Uninitialised Instruction    */
        !            70: #define        L_SHRD  3               /* Shared Data space            */
        !            71: #define        L_PRVD  4               /* Private Data space           */
        !            72: #define        L_BSSD  5               /* Uninitalised Data            */
        !            73: #define L_DEBUG 6              /* Debug tables                 */
        !            74: #define L_SYM  7               /* Symbols                      */
        !            75: #define L_REL  8               /* Relocation                   */
        !            76: #define L_ABS  9               /* Absolute (symbol table)      */
        !            77: #define L_REF  10              /* Reference (symbol table)     */
        !            78: 
        !            79: /*
        !            80:  * Symbol.
        !            81:  * These live in the 'L_SYM' section of the file;
        !            82:  * the size of this section determines the number of symbols.
        !            83:  */
        !            84: struct ldsym {
        !            85:        char    ls_id[NCPLN];           /* Symbol name          */
        !            86:        short   ls_type;                /* Global + Seg.        */
        !            87: #pragma        align 2
        !            88:        long    ls_addr;                /* Value of symbol      */
        !            89: };
        !            90: #pragma        align
        !            91: 
        !            92: /*
        !            93:  * The nlist structure for the nlist routine.
        !            94:  */
        !            95: struct nlist   {
        !            96:        char    n_name[NCPLN];          /* Symbol name          */
        !            97:        short   n_type;                 /* Type flag            */
        !            98:        long    n_value;                /* Value                */
        !            99: };
        !           100: 
        !           101: #define        L_GLOBAL        020
        !           102: 
        !           103: /*
        !           104:  * Relocation.
        !           105:  * Relocation is a byte stream.
        !           106:  * The first is an opcode.
        !           107:  * The next four bytes are the address of relocation.
        !           108:  * If L_SYM-based relocation,
        !           109:  * the next two bytes are symbol number.
        !           110:  */
        !           111: #define LR_SEG 017             /* Seg., L_SYM => Sym. based    */
        !           112: #define LR_PCR 020             /* PC Rel. flag                 */
        !           113: 
        !           114: #define LR_OP          0340            /* Opcode               */
        !           115: #define LR_BYTE                (0<<5)          /* Rel. a byte          */
        !           116: #define LR_WORD                (1<<5)          /* Rel. a word          */
        !           117: #define        LR_LONG         (2<<5)          /* Rel. a long          */
        !           118: #define LR_HIWORD      (3<<5)          /* Rel. via hiword of long */
        !           119: #endif
        !           120: 
        !           121: /* end of n.out.h */

unix.superglobalmegacorp.com

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