1*22366Sdist /* 2*22366Sdist * Copyright (c) 1980 Regents of the University of California. 3*22366Sdist * All rights reserved. The Berkeley software License Agreement 4*22366Sdist * specifies the terms and conditions for redistribution. 5*22366Sdist */ 65480Slinton 7*22366Sdist #ifndef lint 8*22366Sdist static char sccsid[] = "@(#)printerror.c 5.1 (Berkeley) 06/06/85"; 9*22366Sdist #endif not lint 105480Slinton 115480Slinton /* 125606Slinton * Print out an execution time error. 135480Slinton */ 145480Slinton 155480Slinton #include "defs.h" 165480Slinton #include <signal.h> 175480Slinton #include "machine.h" 185480Slinton #include "sym.h" 195480Slinton #include "process.h" 205480Slinton #include "source.h" 215480Slinton #include "object.h" 225480Slinton #include "mappings.h" 235480Slinton #include "pxerrors.h" 245480Slinton #include "process/process.rep" 255480Slinton 265480Slinton printerror() 275480Slinton { 285764Slinton register PROCESS *p; 295764Slinton char *filename; 305764Slinton int c; 315480Slinton 325764Slinton p = process; 335764Slinton if (p->signo != ESIGNAL && p->signo != SIGINT) { 345764Slinton error("signal %d at px pc %d, lc %d", p->signo, p->pc, pc); 355764Slinton } 365764Slinton curline = srcline(pc); 375764Slinton curfunc = whatblock(pc); 385764Slinton skimsource(srcfilename(pc)); 395764Slinton if (p->signo == ESIGNAL) { 405764Slinton printf("\nerror at "); 415764Slinton printwhere(curline, cursource); 425764Slinton if (errnum != 0) { 435764Slinton printf(": %s", pxerrmsg[errnum]); 445480Slinton } 455764Slinton } else { 465764Slinton printf("\n\ninterrupt at "); 475764Slinton printwhere(curline, cursource); 485764Slinton } 495764Slinton putchar('\n'); 505764Slinton printlines(curline, curline); 515764Slinton erecover(); 525480Slinton } 53