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