Annotation of researchv10no/cmd/sdb/setup.c, revision 1.1.1.1

1.1       root        1: static char sccsid[] = "@(#)setup.c 4.2 4/18/81";
                      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 0407:
                     66:                                txtmap.b1=0;
                     67:                                txtmap.e1=0;
                     68:                                txtmap.b2=datbas=0;
                     69:                                txtmap.e2=symbas;
                     70:                                break;
                     71: 
                     72:                        case 0413:
                     73:                                txtmap.f1=txtmap.f2=(CLSIZE*NBPG);
                     74:                        case 0410:
                     75:                                txtmap.b1=0;
                     76:                                txtmap.e1=txtsiz;
                     77:                                txtmap.b2=datbas=round(txtsiz,TXTRNDSIZ);
                     78:                                txtmap.e2=datbas+datsiz;
                     79:                                txtmap.f2+=txtmap.e1;
                     80:                        }
                     81:                        entrypt=txthdr[5];
                     82:                        symbas += txthdr[6]+txthdr[7];
                     83:                        symbas += magic==0412||magic==0413 ? (CLSIZE*NBPG) : TXTHDRSIZ;
                     84:                        ststart = symbas;
                     85: #ifdef FLEXNAMES
                     86:                        gstart = ststart+txthdr[4];
                     87: #endif
                     88:                        /* set up symvec */
                     89:                FI
                     90:        FI
                     91:        IF magic==0 THEN txtmap.e1=maxfile; FI
                     92: #endif
                     93: }
                     94: 
                     95: setcor()
                     96: {
                     97:        fcor=getfile(corfil,2);
                     98:        datmap.ufd=fcor;
                     99:        IF read(fcor, &u, ctob(UPAGES))==ctob(UPAGES)
                    100: #ifndef STD
                    101:           ANDF (u.u_pcb.pcb_ksp & 0xF0000000L)==0x70000000L
                    102: #else
                    103:           ANDF (u.u_pcb.pcb_ksp & 0xF0000000L)==0x80000000L
                    104: #endif
                    105:           ANDF (u.u_pcb.pcb_usp & 0xF0000000L)==0x70000000L
                    106:        THEN    
                    107:                signo = u.u_arg[0]&017;
                    108:                txtsiz = ctob(u.u_tsize);
                    109:                datsiz = ctob(u.u_dsize);
                    110:                stksiz = ctob(u.u_ssize);
                    111:                datmap.b1 = datbas = (magic==0410?round(txtsiz,TXTRNDSIZ):0);
                    112:                if (magic == 0413)
                    113:                        datmap.b1 = datbas = txtsiz;
                    114:                datmap.e1=(magic==0407?txtsiz:datmap.b1)+datsiz;
                    115: #ifdef STD
                    116:                datmap.f1 = ctob(USIZE);
                    117: #else
                    118:                datmap.f1 = ctob(UPAGES);
                    119: #endif
                    120:                datmap.b2 = maxstor-stksiz;
                    121:                datmap.e2 = maxstor;
                    122: #ifdef STD
                    123:                datmap.f2 = ctob(USIZE)+(magic==0410?datsiz:datmap.e1);
                    124: #else
                    125:                datmap.f2 = ctob(UPAGES)+((magic==0410 || magic == 0413)
                    126:                                             ? datsiz : datmap.e1);
                    127: #endif
                    128:                signo = *(ADDR *)(((ADDR)&u)+ctob(UPAGES)-4*sizeof(int));
                    129:                IF magic ANDF magic!=u.u_exdata.ux_mag
                    130:                THEN    printf("%s\n",BADMAG);
                    131:                FI
                    132:        ELSE    datmap.e1 = maxfile;
                    133:        FI
                    134: }
                    135: 
                    136: create(f)
                    137: STRING f;
                    138: {      int fd;
                    139:        IF (fd=creat(f,0644))>=0
                    140:        THEN close(fd); return(open(f,wtflag));
                    141:        ELSE return(-1);
                    142:        FI
                    143: }
                    144: 
                    145: getfile(filnam,cnt)
                    146: STRING filnam;
                    147: {
                    148:        REG INT         fsym;
                    149: 
                    150:        IF !eqstr("-",filnam)
                    151:        THEN    fsym=open(filnam,wtflag);
                    152:                IF fsym<0 ANDF argcount>cnt
                    153:                THEN    IF wtflag
                    154:                        THEN    fsym=create(filnam);
                    155:                        FI
                    156:                        IF fsym<0
                    157:                        THEN printf("cannot open `%s'\n", filnam);
                    158:                        FI
                    159:                FI
                    160:        ELSE    fsym = -1;
                    161:        FI
                    162:        return(fsym);
                    163: }

unix.superglobalmegacorp.com

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