Annotation of coherent/b/bin/ld386/ld.h, revision 1.1.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.