|
|
1.1 ! root 1: static char ID[] = "@(#) globs.c: 1.11 8/18/83"; ! 2: #include "system.h" ! 3: ! 4: #include <stdio.h> ! 5: #include "structs.h" ! 6: ! 7: #if !ONEPROC || TRVEC ! 8: #include "tv.h" ! 9: #include "ldtv.h" ! 10: #endif ! 11: ! 12: #include "paths.h" ! 13: #include "params.h" ! 14: ! 15: /* ! 16: * This include file is the complement of "extrns.h" and ! 17: * should be changed whenever extrns.h is changed. ! 18: */ ! 19: ! 20: ! 21: ! 22: int lineno; /* current line number in ifile being parsed */ ! 23: char *curfilnm; /* ptr to current input file name */ ! 24: ! 25: char aflag = 0, /* file is to be "absolute" */ ! 26: cflag = 0, /* perform only a partial execution */ ! 27: dflag = 0, /* turn on debug output */ ! 28: iflag = 0, /* ** b16ld/x86ld *** separate I and D */ ! 29: mflag = 0, /* generate a memory map */ ! 30: rflag = 0, /* mark the object file as relocatable */ ! 31: sflag = 0, /* strip relocation/line/symbol info */ ! 32: tvflag = 0, /* * b16ld/x86ld/n3bld * tv linkage */ ! 33: #if UNIX || XL ! 34: xflag = 0, /* do not preserve local symbols */ ! 35: #endif ! 36: #if COMMON ! 37: tflag = 0, /* do type checking, if on */ ! 38: Mflag = 0, /* msg for multiply defnd external defs */ ! 39: #endif ! 40: #if PAGING ! 41: Fflag = 0, /* do blocking, memory configuration, etc ! 42: as needed for paging, if on */ ! 43: #endif ! 44: #if PAGING ! 45: zflag = 0, /* do not use memory around zero, if on */ ! 46: #endif ! 47: #if ILDOPT ! 48: ildflag = 0, /* do not output .i_l_dxx sections */ ! 49: #endif ! 50: Hflag = 0, /* "Hide" global symbols by converting them ! 51: into variables of type "static" */ ! 52: Nflag = 0, /* squash text and data together, turn off -n */ ! 53: Sflag = 0, /* "silent" running mode: issue messages ! 54: only for fatal errors */ ! 55: Vflag = 0; /* echo version information about ld */ ! 56: int hflag = 0, /* size reserved for optional header */ ! 57: pflag = 0, /* size reserved for patch list */ ! 58: Bflag = 0; /* generate "padding" output sections */ ! 59: unsigned short VSflag = 0; /* put version stamp in optional hdr */ ! 60: ! 61: short usrdeftv = 0; /* .tv input or SECTION */ ! 62: short globfill = 0; /* default fill value */ ! 63: short errlev = 0; /* error level generated during the ld run */ ! 64: ! 65: #if PAGING ! 66: short bond_t_d = 0; /* set by dfltsec to indicate to pboslist that text ! 67: and data must be properly bonded for paging */ ! 68: #endif ! 69: ! 70: #if FLEXNAMES /* this implies PORTAR */ ! 71: long stroffset = 4L; /* offset of string in string table (4 is for length) */ ! 72: long tnumsyms; /* total number of symbols in output file */ ! 73: #endif ! 74: #if PORTAR ! 75: long ar_size; /* size of archive .o */ ! 76: #endif ! 77: ! 78: ! 79: /* ! 80: * Lists built during PASS 1, from user input ! 81: */ ! 82: ! 83: struct listown symlist; /* head of the symbol list */ ! 84: struct listown memlist; /* head of the MEMLIST */ ! 85: struct listown reglist; /* head of the REGLIST */ ! 86: struct listown ldfilist; /* head of the LDFILE List */ ! 87: struct listown bldoutsc; /* head of the BLDOUTSEC List */ ! 88: struct listown explist; /* head of the expression List */ ! 89: ! 90: #if !ONEPROC ! 91: int symcnt, memcnt, regcnt, /* list counts, used in */ ! 92: ldfcnt, bldcnt, expcnt, tvslotcnt; /* transfering the lists */ ! 93: #endif ! 94: ! 95: #if !ONEPROC || TRVEC ! 96: TVASSIGN *tvslot1; /* ptr to head of tv slot list */ ! 97: #endif ! 98: ! 99: ! 100: /* ! 101: * Lists built during PASS 2, from information obtained in PASS 1 ! 102: */ ! 103: ! 104: struct listown bondlist; /* head of the BONDLIST */ ! 105: struct listown ownlist; /* head of the OWNLIST */ ! 106: struct listown atownlst; /* head of the ATTOWN List */ ! 107: struct listown infilist; /* head of the INFILE List */ ! 108: struct listown outsclst; /* head of the OUTSEC List */ ! 109: struct listown avlist; /* head of available space list */ ! 110: struct listown dsectlst; /* head of DSECT list */ ! 111: ! 112: char outfilnm[128] = A_OUT; /* name of output object file */ ! 113: ! 114: #if !ONEPROC ! 115: char trnname[sizeof(TMPDIR)+20]; /* name of PASS1 -> PASS2 */ ! 116: FILE *trnfdes; /* "transfer" file */ ! 117: #if AR16WR ! 118: char *trnfbuf = NULL; ! 119: #endif ! 120: #endif ! 121: ! 122: char *strbase, /* global save area for input ifile */ ! 123: *strnext, /* names, input *.o and archive file */ ! 124: *strlimit; /* names */ ! 125: int strleng; ! 126: ! 127: char epsymbol[8] = ""; /* a.out header entry point symbol */ ! 128: ! 129: int numoutsc; /* number of output sections */ ! 130: long cur_dot = -1L; /* current value of "dot" symbol ! 131: * -1L indicates no value. ! 132: */ ! 133: ! 134: ACTITEM *curexp; /* current expression being evaluated */ ! 135: ! 136: long maxlcsms; /* max no. of local symbols for an input file */ ! 137: ! 138: long symtborg; /* file address of symbol table in output file*/ ! 139: ! 140: long allocspc = 0L; /* amount of space allocated by myalloc */ ! 141: long maxalloc = 0L; /* maximum allocated at any time */ ! 142: #if DMERT || XL ! 143: int dmertplib = 0; /* DMERT public library */ ! 144: #endif ! 145: ! 146: ADDRESS memorg = MEMORG; /* beginning of configured memory */ ! 147: char stat_name[9] = { '\0','\0','\0','\0','\0','\0','\0','\0','\0'};
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.