1*5519Slinton /* Copyright (c) 1982 Regents of the University of California */ 2*5519Slinton 3*5519Slinton static char sccsid[] = "@(#)wheredump.c 1.1 01/18/82"; 4*5519Slinton 5*5519Slinton /* 6*5519Slinton * Print a list of currently active blocks starting with most recent. 7*5519Slinton */ 8*5519Slinton 9*5519Slinton #include "defs.h" 10*5519Slinton #include "runtime.h" 11*5519Slinton #include "frame.rep" 12*5519Slinton #include "sym.h" 13*5519Slinton #include "machine.h" 14*5519Slinton #include "object.h" 15*5519Slinton #include "mappings.h" 16*5519Slinton 17*5519Slinton where() 18*5519Slinton { 19*5519Slinton FRAME *frp; 20*5519Slinton ADDRESS prevpc; 21*5519Slinton LINENO line; 22*5519Slinton SYM *f; 23*5519Slinton 24*5519Slinton if (pc == 0) { 25*5519Slinton error("program is not active"); 26*5519Slinton } 27*5519Slinton prevpc = pc; 28*5519Slinton for (frp = curframe(); frp != NIL; frp = nextframe(frp)) { 29*5519Slinton f = whatblock(entry(frp)); 30*5519Slinton line = srcline(prevpc); 31*5519Slinton printf("%s", name(f)); 32*5519Slinton printparams(f, frp); 33*5519Slinton printf(", line %d\n", line); 34*5519Slinton prevpc = frp->save_pc; 35*5519Slinton } 36*5519Slinton line = srcline(prevpc); 37*5519Slinton printf("%s, line %d\n", name(program), line); 38*5519Slinton } 39*5519Slinton 40*5519Slinton /* 41*5519Slinton * Dump the world to the given file. 42*5519Slinton * Like "where", but variables are dumped also. 43*5519Slinton */ 44*5519Slinton 45*5519Slinton dump() 46*5519Slinton { 47*5519Slinton FRAME *frp; 48*5519Slinton ADDRESS prevpc; 49*5519Slinton LINENO line; 50*5519Slinton SYM *f; 51*5519Slinton 52*5519Slinton if (pc == 0) { 53*5519Slinton error("program is not active"); 54*5519Slinton } 55*5519Slinton prevpc = pc; 56*5519Slinton for (frp = curframe(); frp != NIL; frp = nextframe(frp)) { 57*5519Slinton f = whatblock(entry(frp)); 58*5519Slinton line = srcline(prevpc); 59*5519Slinton prevpc = frp->save_pc; 60*5519Slinton printf("%s", name(f)); 61*5519Slinton printparams(f, frp); 62*5519Slinton printf(", line %d\n", line); 63*5519Slinton dumpvars(f, frp); 64*5519Slinton putchar('\n'); 65*5519Slinton } 66*5519Slinton line = srcline(prevpc); 67*5519Slinton printf("%s, line %d\n", name(program), line); 68*5519Slinton dumpvars(program, NIL); 69*5519Slinton } 70