123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- /* $Id$ */
- /*
- * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
- * See the copyright notice in the ACK home directory, in the file "Copyright".
- */
- /* S H A R E D F I L E
- *
- * D E B U G . C
- */
- #include <stdlib.h>
- #include <stdio.h>
- #ifdef __STDC__
- #include <stdarg.h>
- #endif
- #include <em_spec.h>
- #include "types.h"
- #include "def.h"
- #include "debug.h"
- #include "global.h"
- int linecount; /* # lines in this file */
- bool verbose_flag = FALSE; /* generate verbose output ? */
- #ifdef __STDC__
- /* VARARGS1 */
- void error(char *s, ...)
- {
- va_list ap;
- fprintf(stderr,"error on line %u",linecount);
- if (filename != (char *) 0) {
- fprintf(stderr," file %s",filename);
- }
- fprintf(stderr,": ");
- va_start(ap, s);
- vfprintf(stderr,s, ap);
- va_end(ap);
- fprintf(stderr,"\n");
- abort();
- exit(-1);
- }
- #ifdef TRACE
- /* VARARGS1 */
- void OUTTRACE(char *s, ...)
- {
- va_list ap;
- fprintf(stderr,"> ");
- va_start(ap, s);
- vfprintf(stderr,s, ap);
- va_end(ap);
- fprintf(stderr,"\n");
- }
- #endif
- #ifdef VERBOSE
- /* VARARGS1 */
- void OUTVERBOSE(char *s, ...)
- {
- if (verbose_flag) {
- va_list ap;
-
- fprintf(stderr,"optimization: ");
- va_start(ap, s);
- vfprintf(stderr,s, ap);
- va_end(ap);
- fprintf(stderr,"\n");
- }
- }
- #endif
- #else /* __STDC__ */
- /* VARARGS1 */
- void error(char *s, char *a)
- {
- fprintf(stderr,"error on line %u",linecount);
- if (filename != (char *) 0) {
- fprintf(stderr," file %s",filename);
- }
- fprintf(stderr,": ");
- fprintf(stderr,s,a);
- fprintf(stderr,"\n");
- abort();
- exit(-1);
- }
- #ifdef TRACE
- /* VARARGS1 */
- void OUTTRACE(char *s, int n)
- {
- fprintf(stderr,"> ");
- fprintf(stderr,s,n);
- fprintf(stderr,"\n");
- }
- #endif
- #ifdef VERBOSE
- /* VARARGS1 */
- void OUTVERBOSE(char *s, int n1, int n2)
- {
- if (verbose_flag) {
- fprintf(stderr,"optimization: ");
- fprintf(stderr,s,n1,n2);
- fprintf(stderr,"\n");
- }
- }
- #endif
- #endif /* __STDC__ */
- #ifdef DEBUG
- void badassertion(char *file, unsigned int line)
- {
- fprintf(stderr,"assertion failed file %s, line %u\n",file,line);
- error("assertion");
- }
- /* Valid Address */
- void VA(short *a)
- {
- if (a == (short *) 0) error("VA: 0 argument");
- if ( ((unsigned) a & 01) == 01) {
- /* MACHINE DEPENDENT TEST */
- error("VA: odd argument");
- }
- }
- /* Valid Instruction code */
- void VI(short i)
- {
- if (i > ps_last) error("VI: illegal instr: %d", i);
- }
- /* Valid Line */
- void VL(line_p l)
- {
- byte instr, optype;
- VA((short *) l);
- instr = l->l_instr;
- VI(instr);
- optype = TYPE(l);
- if (optype < OP_FIRST || optype > OP_LAST) {
- error("VL: illegal optype: %d", optype);
- }
- }
- /* Valid Data block */
- void VD(dblock_p d)
- {
- byte pseudo;
- VA((short *) d);
- pseudo = d->d_pseudo;
- if (pseudo < D_FIRST || pseudo > D_LAST) {
- error("VD: illegal pseudo: %d",pseudo);
- }
- }
- /* Valid Object */
- void VO(obj_p o)
- {
- offset off;
- VA((short *) o);
- off = o->o_off;
- if (off < 0 || off > 10000) {
- error("VO: unlikely offset: %d", off);
- }
- }
- /* Valid Proc */
- void VP(proc_p p)
- {
- proc_id pid;
- int nrlabs;
- VA((short *) p);
- pid = p->p_id;
- if (pid <0 || pid > 1000) {
- error("VP: unlikely proc_id: %d", (int) pid);
- }
- nrlabs = p->p_nrlabels;
- if (nrlabs < 0 || nrlabs > 500) {
- error("VP: unlikely p_nrlabels: %d", nrlabs);
- }
- }
- #endif
|