|
|
1.1 ! root 1: static char sccsid[] = "@(#)setup.c 4.1 10/9/80"; ! 2: # ! 3: /* ! 4: * ! 5: * UNIX debugger ! 6: * ! 7: */ ! 8: ! 9: #include "head.h" ! 10: ! 11: MSG BADMAG; ! 12: ! 13: INT wtflag; ! 14: INT fcor; ! 15: INT fsym; ! 16: L_INT maxfile; ! 17: L_INT maxstor; ! 18: L_INT txtsiz; ! 19: L_INT datsiz; ! 20: L_INT datbas; ! 21: L_INT stksiz; ! 22: STRING errflg; ! 23: INT magic; ! 24: L_INT symbas; ! 25: L_INT symnum; ! 26: L_INT entrypt; ! 27: ! 28: INT argcount; ! 29: INT signo; ! 30: struct user u; ! 31: ! 32: #define TXTHDRSIZ (sizeof(txthdr)) ! 33: ! 34: #ifndef EDDT ! 35: readl(f,p,n) int f,n; long * p;{ ! 36: #ifndef vax ! 37: int t=0; ! 38: do {t += read(f,&(p->loword),2); t += read(f,&(p->hiword),2); p++;} while (--n); ! 39: return(t); ! 40: #else ! 41: return(read(f,p,n*sizeof(long))); ! 42: #endif ! 43: } ! 44: #endif ! 45: ! 46: setsym() ! 47: { ! 48: #ifndef EDDT ! 49: TXTHDR txthdr; ! 50: ! 51: fsym=getfile(symfil,1); ! 52: txtmap.ufd=fsym; ! 53: IF readl(fsym, txthdr, TXTHDRSIZ/sizeof(txthdr[0]))==TXTHDRSIZ ! 54: THEN magic=txthdr[0]; ! 55: IF magic!=0410 ANDF magic!=0407 ANDF magic!=0412 ANDF magic!=0413 ! 56: THEN magic=0; ! 57: ELSE ! 58: symnum=txthdr[4]/SYMTABSIZ; ! 59: txtsiz=txthdr[1]; ! 60: datsiz=txthdr[2]; ! 61: symbas=txtsiz+datsiz; ! 62: txtmap.f1=txtmap.f2=TXTHDRSIZ; ! 63: switch (magic) { ! 64: ! 65: case 0412: ! 66: txtmap.f1=txtmap.f2=(CLSIZE*NBPG); ! 67: case 0407: ! 68: txtmap.b1=0; ! 69: txtmap.e1=symbas; ! 70: txtmap.b2=datbas=0; ! 71: txtmap.e2=symbas; ! 72: break; ! 73: ! 74: case 0413: ! 75: txtmap.f1=txtmap.f2=(CLSIZE*NBPG); ! 76: case 0410: ! 77: txtmap.b1=0; ! 78: txtmap.e1=txtsiz; ! 79: txtmap.b2=datbas=round(txtsiz,TXTRNDSIZ); ! 80: txtmap.e2=datbas+datsiz; ! 81: txtmap.f2+=txtmap.e1; ! 82: } ! 83: entrypt=txthdr[5]; ! 84: symbas += txthdr[6]+txthdr[7]; ! 85: symbas += magic==0412||magic==0413 ? (CLSIZE*NBPG) : TXTHDRSIZ; ! 86: ststart = symbas; ! 87: #ifdef FLEXNAMES ! 88: gstart = ststart+txthdr[4]; ! 89: #endif ! 90: /* set up symvec */ ! 91: FI ! 92: FI ! 93: IF magic==0 THEN txtmap.e1=maxfile; FI ! 94: #endif ! 95: } ! 96: ! 97: setcor() ! 98: { ! 99: fcor=getfile(corfil,2); ! 100: datmap.ufd=fcor; ! 101: IF read(fcor, &u, ctob(UPAGES))==ctob(UPAGES) ! 102: #ifndef STD ! 103: ANDF (u.u_pcb.pcb_ksp & 0xF0000000L)==0x70000000L ! 104: #else ! 105: ANDF (u.u_pcb.pcb_ksp & 0xF0000000L)==0x80000000L ! 106: #endif ! 107: ANDF (u.u_pcb.pcb_usp & 0xF0000000L)==0x70000000L ! 108: THEN ! 109: signo = u.u_arg[0]&017; ! 110: txtsiz = ctob(u.u_tsize); ! 111: datsiz = ctob(u.u_dsize); ! 112: stksiz = ctob(u.u_ssize); ! 113: datmap.b1 = datbas = (magic==0410?round(txtsiz,TXTRNDSIZ):0); ! 114: if (magic == 0413) ! 115: datmap.b1 = datbas = txtsiz; ! 116: datmap.e1=(magic==0407?txtsiz:datmap.b1)+datsiz; ! 117: #ifdef STD ! 118: datmap.f1 = ctob(USIZE); ! 119: #else ! 120: datmap.f1 = ctob(UPAGES); ! 121: #endif ! 122: datmap.b2 = maxstor-stksiz; ! 123: datmap.e2 = maxstor; ! 124: #ifdef STD ! 125: datmap.f2 = ctob(USIZE)+(magic==0410?datsiz:datmap.e1); ! 126: #else ! 127: datmap.f2 = ctob(UPAGES)+((magic==0410 || magic == 0413) ! 128: ? datsiz : datmap.e1); ! 129: #endif ! 130: signo = *(ADDR *)(((ADDR)&u)+ctob(UPAGES)-4*sizeof(int)); ! 131: IF magic ANDF magic!=u.u_exdata.ux_mag ! 132: THEN printf("%s\n",BADMAG); ! 133: FI ! 134: ELSE datmap.e1 = maxfile; ! 135: FI ! 136: } ! 137: ! 138: create(f) ! 139: STRING f; ! 140: { int fd; ! 141: IF (fd=creat(f,0644))>=0 ! 142: THEN close(fd); return(open(f,wtflag)); ! 143: ELSE return(-1); ! 144: FI ! 145: } ! 146: ! 147: getfile(filnam,cnt) ! 148: STRING filnam; ! 149: { ! 150: REG INT fsym; ! 151: ! 152: IF !eqstr("-",filnam) ! 153: THEN fsym=open(filnam,wtflag); ! 154: IF fsym<0 ANDF argcount>cnt ! 155: THEN IF wtflag ! 156: THEN fsym=create(filnam); ! 157: FI ! 158: IF fsym<0 ! 159: THEN printf("cannot open `%s'\n", filnam); ! 160: FI ! 161: FI ! 162: ELSE fsym = -1; ! 163: FI ! 164: return(fsym); ! 165: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.