15480Slinton /* Copyright (c) 1982 Regents of the University of California */ 25480Slinton 3*5764Slinton static char sccsid[] = "@(#)printerror.c 1.3 02/11/82"; 45480Slinton 55480Slinton /* 65606Slinton * Print out an execution time error. 75480Slinton */ 85480Slinton 95480Slinton #include "defs.h" 105480Slinton #include <signal.h> 115480Slinton #include "machine.h" 125480Slinton #include "sym.h" 135480Slinton #include "process.h" 145480Slinton #include "source.h" 155480Slinton #include "object.h" 165480Slinton #include "mappings.h" 175480Slinton #include "pxerrors.h" 185480Slinton #include "process/process.rep" 195480Slinton 205480Slinton printerror() 215480Slinton { 22*5764Slinton register PROCESS *p; 23*5764Slinton char *filename; 24*5764Slinton int c; 255480Slinton 26*5764Slinton p = process; 27*5764Slinton if (p->signo != ESIGNAL && p->signo != SIGINT) { 28*5764Slinton error("signal %d at px pc %d, lc %d", p->signo, p->pc, pc); 29*5764Slinton } 30*5764Slinton curline = srcline(pc); 31*5764Slinton curfunc = whatblock(pc); 32*5764Slinton skimsource(srcfilename(pc)); 33*5764Slinton if (p->signo == ESIGNAL) { 34*5764Slinton printf("\nerror at "); 35*5764Slinton printwhere(curline, cursource); 36*5764Slinton if (errnum != 0) { 37*5764Slinton printf(": %s", pxerrmsg[errnum]); 385480Slinton } 39*5764Slinton } else { 40*5764Slinton printf("\n\ninterrupt at "); 41*5764Slinton printwhere(curline, cursource); 42*5764Slinton } 43*5764Slinton putchar('\n'); 44*5764Slinton printlines(curline, curline); 45*5764Slinton erecover(); 465480Slinton } 47