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