1*22277Sdist /* 2*22277Sdist * Copyright (c) 1980 Regents of the University of California. 3*22277Sdist * All rights reserved. The Berkeley software License Agreement 4*22277Sdist * specifies the terms and conditions for redistribution. 5*22277Sdist */ 65465Slinton 7*22277Sdist #ifndef lint 8*22277Sdist static char sccsid[] = "@(#)fixbps.c 5.1 (Berkeley) 06/05/85"; 9*22277Sdist #endif not lint 105465Slinton /* 115465Slinton * fix up breakpoint information before continuing execution 125465Slinton * 135465Slinton * It's necessary to destroy breakpoints that were created temporarily 145465Slinton * and still exist because the program terminated abnormally. 155465Slinton */ 165465Slinton 175465Slinton #include "defs.h" 185465Slinton #include "breakpoint.h" 195465Slinton #include "bp.rep" 205465Slinton 215465Slinton fixbps() 225465Slinton { 235465Slinton register BPINFO *p, *last, *next; 245465Slinton 255465Slinton last = NIL; 265465Slinton p = bphead; 275465Slinton while (p != NIL) { 285465Slinton next = p->bpnext; 295465Slinton switch(p->bptype) { 305465Slinton case ALL_OFF: 315465Slinton if (p->bpline >= 0) { 325465Slinton --tracing; 335465Slinton } else { 345465Slinton --inst_tracing; 355465Slinton } 365465Slinton if (p->bpcond != NIL) { 375465Slinton delcond(TRPRINT, p->bpcond); 385465Slinton } 395465Slinton goto delete; 405465Slinton 415465Slinton case STOP_OFF: 425465Slinton var_tracing--; 435465Slinton delcond(TRSTOP, p->bpcond); 445465Slinton goto delete; 455465Slinton 465465Slinton case TERM_OFF: 475465Slinton --var_tracing; 485465Slinton delvar(TRPRINT, p->bpnode, p->bpcond); 495465Slinton goto delete; 505465Slinton 515465Slinton case CALL: 525465Slinton case RETURN: 535465Slinton case BLOCK_OFF: 545465Slinton case CALLPROC: 555465Slinton case END_BP: 565465Slinton 575465Slinton delete: 585465Slinton if (last == NIL) { 595465Slinton bphead = next; 605465Slinton } else { 615465Slinton last->bpnext = next; 625465Slinton } 635465Slinton dispose(p); 645465Slinton break; 655465Slinton 665465Slinton default: 675465Slinton last = p; 685465Slinton break; 695465Slinton } 705465Slinton p = next; 715465Slinton } 725465Slinton tracing = 0; 735465Slinton var_tracing = 0; 745465Slinton inst_tracing = 0; 755465Slinton trfree(); 765465Slinton condfree(); 775465Slinton } 78