|
|
1.1 ! root 1: static char sccsid[] = "@(#)main.c 4.2 8/17/82"; ! 2: # ! 3: /* ! 4: * ! 5: * UNIX debugger ! 6: * ! 7: */ ! 8: ! 9: #include "head.h" ! 10: #include <signal.h> ! 11: #include <stdio.h> ! 12: #include <sys/stat.h> ! 13: ! 14: INT mkfault; ! 15: INT executing; ! 16: CHAR *lp; ! 17: L_INT maxoff; ! 18: L_INT maxpos; ! 19: ADDR sigint; ! 20: ADDR sigqit; ! 21: INT wtflag; ! 22: L_INT maxfile; ! 23: L_INT maxstor; ! 24: L_INT txtsiz; ! 25: L_INT datsiz; ! 26: L_INT datbas; ! 27: L_INT stksiz; ! 28: STRING errflg; ! 29: INT magic; ! 30: L_INT entrypt; ! 31: ! 32: CHAR lastc; ! 33: ! 34: STRING symfil; ! 35: STRING corfil; ! 36: INT argcount; ! 37: ADDR userpc; ! 38: int fpe(); ! 39: ! 40: main(argc, argv) ! 41: REG STRING *argv; ! 42: REG INT argc; ! 43: { ! 44: register char *p; ! 45: struct stat stbuf; ! 46: ! 47: userpc = 1; ! 48: symfil = "a.out"; ! 49: corfil = "core"; ! 50: maxfile=1L<<24; maxstor=1L<<31; ! 51: #ifndef STD ! 52: #ifndef VAX135 ! 53: maxstor -= ctob(UPAGES); ! 54: #endif ! 55: #endif ! 56: ! 57: setbuf(stdout, NULL); ! 58: setbuf(stderr, NULL); ! 59: ! 60: WHILE argc>1 ! 61: DO IF eqstr("-w",argv[1]) ! 62: THEN wtflag=2; argc--; argv++; ! 63: ELSE break; ! 64: FI ! 65: OD ! 66: ! 67: IF argc>1 THEN symfil = argv[1]; FI ! 68: IF argc>2 THEN corfil = argv[2]; FI ! 69: fp = filework; ! 70: if (argc > 3) { ! 71: for (p = argv[3]; *p; *fp++ = *p++) ; ! 72: *fp++ = '/'; ! 73: } ! 74: argcount=argc; ! 75: ! 76: if (stat(symfil, &stbuf) == -1) { ! 77: printf("`%s' does not exist\n", symfil); ! 78: exit(4); ! 79: } ! 80: symtime = stbuf.st_mtime; ! 81: if (stat(corfil, &stbuf) != -1) { ! 82: if (symtime > stbuf.st_mtime) ! 83: printf("Warning: `%s' newer than `%s'\n", ! 84: symfil, corfil); ! 85: } ! 86: ! 87: setsym(); setcor(); ! 88: initfp(); ! 89: mkioptab(); ! 90: ! 91: /* set up variables for user */ ! 92: maxoff=MAXOFF; maxpos=MAXPOS; ! 93: gtty(2, &sdbttym); ! 94: IF (sigint= (ADDR) signal(SIGINT,01))!=01 ! 95: THEN sigint= (ADDR) fault; signal(SIGINT,fault); ! 96: FI ! 97: sigqit= (ADDR) signal(SIGQUIT,1); ! 98: signal(SIGILL, fpe); ! 99: ! 100: setjmp(env); ! 101: if (debug) printf("Sdb restarted\n"); ! 102: gtty(2, &userttym); ! 103: if (sdbttym.sg_flags != userttym.sg_flags) ! 104: stty(2, &sdbttym); ! 105: IF executing THEN delbp(); FI ! 106: executing=FALSE; ! 107: ! 108: for (;;) { ! 109: mkfault = 0; ! 110: printf("*"); ! 111: if (decode(readline(stdin)) == 1) { ! 112: printf("Error; try again\n"); ! 113: continue; ! 114: } ! 115: ! 116: if (debug) { ! 117: printf("cmd %c:\n", cmd); ! 118: printf("%s:%s\n", proc, var); ! 119: printf("args-%s;re-%s;integ-%d\n", args, re, integ); ! 120: printf("scallf-%d;reflg-%d\n", scallf, reflag); ! 121: printf("colonflag-%d;ncolonflag-%d\n\n", ! 122: colonflag, ncolonflag); ! 123: } ! 124: docommand(); ! 125: } ! 126: } ! 127: ! 128: ! 129: fault(a) ! 130: { ! 131: signal(a,fault); ! 132: mkfault++; ! 133: printf("\n"); ! 134: longjmp(env, 0); ! 135: } ! 136: ! 137: fpe() { ! 138: signal(SIGILL, fpe); ! 139: error("Illegal floating constant"); ! 140: longjmp(env, 0); ! 141: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.