1 /* Copyright (c) 1982 Regents of the University of California */ 2 3 static char sccsid[] = "@(#)printerror.c 1.3 02/11/82"; 4 5 /* 6 * Print out an execution time error. 7 */ 8 9 #include "defs.h" 10 #include <signal.h> 11 #include "machine.h" 12 #include "sym.h" 13 #include "process.h" 14 #include "source.h" 15 #include "object.h" 16 #include "mappings.h" 17 #include "pxerrors.h" 18 #include "process/process.rep" 19 20 printerror() 21 { 22 register PROCESS *p; 23 char *filename; 24 int c; 25 26 p = process; 27 if (p->signo != ESIGNAL && p->signo != SIGINT) { 28 error("signal %d at px pc %d, lc %d", p->signo, p->pc, pc); 29 } 30 curline = srcline(pc); 31 curfunc = whatblock(pc); 32 skimsource(srcfilename(pc)); 33 if (p->signo == ESIGNAL) { 34 printf("\nerror at "); 35 printwhere(curline, cursource); 36 if (errnum != 0) { 37 printf(": %s", pxerrmsg[errnum]); 38 } 39 } else { 40 printf("\n\ninterrupt at "); 41 printwhere(curline, cursource); 42 } 43 putchar('\n'); 44 printlines(curline, curline); 45 erecover(); 46 } 47