1*5465Slinton /* Copyright (c) 1982 Regents of the University of California */ 2*5465Slinton 3*5465Slinton static char sccsid[] = "@(#)fixbps.c 1.1 01/18/82"; 4*5465Slinton 5*5465Slinton /* 6*5465Slinton * fix up breakpoint information before continuing execution 7*5465Slinton * 8*5465Slinton * It's necessary to destroy breakpoints that were created temporarily 9*5465Slinton * and still exist because the program terminated abnormally. 10*5465Slinton */ 11*5465Slinton 12*5465Slinton #include "defs.h" 13*5465Slinton #include "breakpoint.h" 14*5465Slinton #include "bp.rep" 15*5465Slinton 16*5465Slinton fixbps() 17*5465Slinton { 18*5465Slinton register BPINFO *p, *last, *next; 19*5465Slinton 20*5465Slinton last = NIL; 21*5465Slinton p = bphead; 22*5465Slinton while (p != NIL) { 23*5465Slinton next = p->bpnext; 24*5465Slinton switch(p->bptype) { 25*5465Slinton case ALL_OFF: 26*5465Slinton if (p->bpline >= 0) { 27*5465Slinton --tracing; 28*5465Slinton } else { 29*5465Slinton --inst_tracing; 30*5465Slinton } 31*5465Slinton if (p->bpcond != NIL) { 32*5465Slinton delcond(TRPRINT, p->bpcond); 33*5465Slinton } 34*5465Slinton goto delete; 35*5465Slinton 36*5465Slinton case STOP_OFF: 37*5465Slinton var_tracing--; 38*5465Slinton delcond(TRSTOP, p->bpcond); 39*5465Slinton goto delete; 40*5465Slinton 41*5465Slinton case TERM_OFF: 42*5465Slinton --var_tracing; 43*5465Slinton delvar(TRPRINT, p->bpnode, p->bpcond); 44*5465Slinton goto delete; 45*5465Slinton 46*5465Slinton case CALL: 47*5465Slinton case RETURN: 48*5465Slinton case BLOCK_OFF: 49*5465Slinton case CALLPROC: 50*5465Slinton case END_BP: 51*5465Slinton 52*5465Slinton delete: 53*5465Slinton if (last == NIL) { 54*5465Slinton bphead = next; 55*5465Slinton } else { 56*5465Slinton last->bpnext = next; 57*5465Slinton } 58*5465Slinton dispose(p); 59*5465Slinton break; 60*5465Slinton 61*5465Slinton default: 62*5465Slinton last = p; 63*5465Slinton break; 64*5465Slinton } 65*5465Slinton p = next; 66*5465Slinton } 67*5465Slinton tracing = 0; 68*5465Slinton var_tracing = 0; 69*5465Slinton inst_tracing = 0; 70*5465Slinton trfree(); 71*5465Slinton condfree(); 72*5465Slinton } 73