15480Slinton /* Copyright (c) 1982 Regents of the University of California */ 25480Slinton 3*5606Slinton static char sccsid[] = "@(#)printerror.c 1.2 01/23/82"; 45480Slinton 55480Slinton /* 6*5606Slinton * 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 { 225480Slinton register PROCESS *p; 235480Slinton char *filename; 245480Slinton int c; 255480Slinton 265480Slinton p = process; 275480Slinton if (p->signo != ESIGNAL && p->signo != SIGINT) { 285480Slinton error("signal %d at px pc %d, lc %d", p->signo, p->pc, pc); 295480Slinton } 305480Slinton curline = srcline(pc); 315480Slinton curfunc = whatblock(pc); 325480Slinton if ((filename = srcfilename(pc)) != cursource) { 335480Slinton skimsource(filename); 345480Slinton } 355480Slinton if (p->signo == ESIGNAL) { 365480Slinton printf("\nerror at line %d", curline); 375480Slinton if (nlhdr.nfiles > 1) { 385480Slinton printf("in file %s", cursource); 395480Slinton } 405480Slinton if (errnum != 0) { 415480Slinton printf(": %s", pxerrmsg[errnum]); 425480Slinton } 435480Slinton } else { 445480Slinton printf("\n\ninterrupt at line %d", curline); 455480Slinton if (nlhdr.nfiles > 1) { 465480Slinton printf(" in file %s", cursource); 475480Slinton } 485480Slinton } 495480Slinton putchar('\n'); 505480Slinton printlines(curline, curline); 515480Slinton erecover(); 525480Slinton } 53