Annotation of coherent/b/bin/ld386/ld.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Coff Loader header
        !             3:  *
        !             4:  * By Charles Fiterman for Mark Williams 3/30/92.
        !             5:  */
        !             6: #include <misc.h>
        !             7: #ifdef GEMDOS
        !             8: #include <stat.h>
        !             9: #define DIRSIZ 14
        !            10: #else
        !            11: #include <sys/stat.h>
        !            12: #include <sys/dir.h>
        !            13: #endif
        !            14: #include <mtype.h>
        !            15: #include <coff.h>
        !            16: #include <arcoff.h>
        !            17: #include <path.h>
        !            18: 
        !            19: #define NHASH 128              /* Hash table divisor */
        !            20: 
        !            21: #define S_TEXT 0               /* These segments and only these */
        !            22: #define S_DATA 1               /* Go to all executables */
        !            23: #define S_BSSD 2
        !            24: #define S_COMM 3
        !            25: 
        !            26: #define NLSEG  4               /* The output segment count */
        !            27: #define MAXSEG 20              /* The maxamum segment count */
        !            28: 
        !            29: #define SEGROUND 16
        !            30: #define KERBASE         0xFFC00000UL   /* Kernels start here */
        !            31: #define DATABASE 0x000400000L  /* .data starts here + some */
        !            32: 
        !            33: #define undefined(s) ((C_EXT==(s)->n_sclass)&&!(s)->n_value&&!(s)->n_scnum)
        !            34: #define common(s)    ((C_EXT==(s)->n_sclass)&& (s)->n_value&&!(s)->n_scnum)
        !            35: 
        !            36: #define w_message if (watch) watch_message
        !            37: 
        !            38: typedef struct mod_t mod_t;
        !            39: typedef struct sym_t sym_t;
        !            40: typedef struct ren_t ren_t;
        !            41: typedef char flag_t;           /* command line flag option */
        !            42: 
        !            43: /*
        !            44:  * Input modules are inhaled whole, this points to the module,
        !            45:  * the next module and any pieces not easily reached.
        !            46:  */
        !            47: struct mod_t {
        !            48:        mod_t           *next;  /* the next module in the chain. */
        !            49:        FILEHDR         *f;     /* the file header */
        !            50:        SCNHDR          *s;     /* the first section header */
        !            51:        char            *l;     /* trailing long symbols */
        !            52:        char            *fname; /* file name */
        !            53:        char            *mname; /* module name */
        !            54: };
        !            55: 
        !            56: /*
        !            57:  * Symbol table entry.
        !            58:  */
        !            59: struct sym_t {
        !            60:        sym_t           *next;  /* hash chain */
        !            61:        mod_t           *mod;   /* defining module */
        !            62:        int             symno;  /* output symbol number */
        !            63:        SYMENT          sym;    /* constructed symbol */
        !            64: };
        !            65: 
        !            66: /*
        !            67:  * Rename table entry.
        !            68:  */
        !            69: struct ren_t {
        !            70:        ren_t           *next;  /* next rename entry */
        !            71:        char            *to;    /* change to string */
        !            72:        char            *from;  /* change from string */
        !            73: };
        !            74: 
        !            75: extern flag_t  reloc,  /* Combine input into a new .o not an executable */
        !            76:                nosym,  /* No symbol table out. */
        !            77:                watch,  /* Produce a trace */
        !            78:                nolcl,  /* Discard C local symbols */
        !            79:                noilcl, /* Discard all local symbols */
        !            80:                qflag,  /* No warn on commons of different length */
        !            81:                Qflag,  /* Absolute silence */
        !            82:                debflg; /* Pass through aux symbols */
        !            83: 
        !            84: extern int     errCount;
        !            85: extern int     nundef;
        !            86: extern int     symno;                  /* Output symbol count */
        !            87: extern mod_t   *head,                  /* head of list of modules to load */
        !            88:                *tail,                  /* tail or list of modules */
        !            89:                *xhead,                 /* head of noload modules */
        !            90:                *xtail;                 /* tail of noload modules */
        !            91: extern ren_t   *rhead;                 /* rename chain */
        !            92: 
        !            93: extern char *ofname;                   /* output file name */
        !            94: extern long comnb, comns, comnl;       /* common lengths */
        !            95: 
        !            96: extern sym_t   *symtable[NHASH];       /* hashed symbol table */
        !            97: 
        !            98: extern unsigned short osegs;           /* the number of output segments */
        !            99: extern unsigned short segMap[MAXSEG];  /* Segment maping */
        !           100: 
        !           101: extern FILEHDR fileh;
        !           102: extern AOUTHDR aouth;
        !           103: extern SCNHDR  *secth;         /* output segments */
        !           104: extern char *argv0;            /* main(  , argv[0]) */
        !           105: extern char *mktemp(), *optarg;
        !           106: extern int optix;
        !           107: extern char *strchr(), *realloc(), *strrchr(), *strcpy(), *alloca();
        !           108: extern void driver_fail(), spwarn(), showUndef();
        !           109: extern int driver_alloc();
        !           110: extern void fatal();
        !           111: extern char *symName();

unix.superglobalmegacorp.com

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