1*5480Slinton /* Copyright (c) 1982 Regents of the University of California */ 2*5480Slinton 3*5480Slinton static char sccsid[] = "@(#)printerror.c 1.1 01/18/82"; 4*5480Slinton 5*5480Slinton /* 6*5480Slinton * print out an execution time error 7*5480Slinton * 8*5480Slinton * Have to check if the -r option was specified; if so then 9*5480Slinton * the object file information hasn't been read in yet. 10*5480Slinton */ 11*5480Slinton 12*5480Slinton #include "defs.h" 13*5480Slinton #include <signal.h> 14*5480Slinton #include "machine.h" 15*5480Slinton #include "main.h" 16*5480Slinton #include "sym.h" 17*5480Slinton #include "process.h" 18*5480Slinton #include "source.h" 19*5480Slinton #include "object.h" 20*5480Slinton #include "mappings.h" 21*5480Slinton #include "pxerrors.h" 22*5480Slinton #include "process/process.rep" 23*5480Slinton 24*5480Slinton printerror() 25*5480Slinton { 26*5480Slinton register PROCESS *p; 27*5480Slinton char *filename; 28*5480Slinton int c; 29*5480Slinton 30*5480Slinton p = process; 31*5480Slinton if (p->signo != ESIGNAL && p->signo != SIGINT) { 32*5480Slinton error("signal %d at px pc %d, lc %d", p->signo, p->pc, pc); 33*5480Slinton } 34*5480Slinton if (option('r')) { 35*5480Slinton init(); 36*5480Slinton } 37*5480Slinton curline = srcline(pc); 38*5480Slinton curfunc = whatblock(pc); 39*5480Slinton if ((filename = srcfilename(pc)) != cursource) { 40*5480Slinton skimsource(filename); 41*5480Slinton } 42*5480Slinton if (p->signo == ESIGNAL) { 43*5480Slinton printf("\nerror at line %d", curline); 44*5480Slinton if (nlhdr.nfiles > 1) { 45*5480Slinton printf("in file %s", cursource); 46*5480Slinton } 47*5480Slinton if (errnum != 0) { 48*5480Slinton printf(": %s", pxerrmsg[errnum]); 49*5480Slinton } 50*5480Slinton } else { 51*5480Slinton printf("\n\ninterrupt at line %d", curline); 52*5480Slinton if (nlhdr.nfiles > 1) { 53*5480Slinton printf(" in file %s", cursource); 54*5480Slinton } 55*5480Slinton } 56*5480Slinton putchar('\n'); 57*5480Slinton printlines(curline, curline); 58*5480Slinton erecover(); 59*5480Slinton } 60