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