4 extern DEBUGFILE cdbDebugFile;
6 DEBUGFILE *debugFile = &cdbDebugFile;
8 void outputDebugStackSymbols(void)
10 if(getenv("SDCC_DEBUG_VAR_STORAGE"))
12 dumpSymInfo("XStack", xstack);
13 dumpSymInfo("IStack", istack);
16 if(options.debug && debugFile)
21 for (sym = setFirstItem (xstack->syms); sym; sym = setNextItem (xstack->syms))
22 debugFile->writeSymbol(sym);
26 for (sym = setFirstItem (istack->syms); sym; sym = setNextItem (istack->syms))
27 debugFile->writeSymbol(sym);
34 void outputDebugSymbols(void)
36 if(getenv("SDCC_DEBUG_VAR_STORAGE"))
38 dumpSymInfo("Code", code);
39 dumpSymInfo("Data", data);
40 dumpSymInfo("PData", pdata);
41 dumpSymInfo("XData", xdata);
42 dumpSymInfo("XIData", xidata);
43 dumpSymInfo("XInit", xinit);
44 dumpSymInfo("IData", idata);
45 dumpSymInfo("Bit", bit);
46 dumpSymInfo("Statics", statsg);
47 dumpSymInfo("SFR", sfr);
48 dumpSymInfo("SFRBits", sfrbit);
49 dumpSymInfo("Reg", reg);
50 dumpSymInfo("Generic", generic);
51 dumpSymInfo("Overlay", overlay);
52 dumpSymInfo("EEProm", eeprom);
53 dumpSymInfo("Home", home);
56 if(options.debug && debugFile)
61 for (sym = setFirstItem (data->syms); sym; sym = setNextItem (data->syms))
62 debugFile->writeSymbol(sym);
66 for (sym = setFirstItem (idata->syms); sym; sym = setNextItem (idata->syms))
67 debugFile->writeSymbol(sym);
71 for (sym = setFirstItem (bit->syms); sym; sym = setNextItem (bit->syms))
72 debugFile->writeSymbol(sym);
76 for (sym = setFirstItem (pdata->syms); sym; sym = setNextItem (pdata->syms))
77 debugFile->writeSymbol(sym);
81 for (sym = setFirstItem (xdata->syms); sym; sym = setNextItem (xdata->syms))
82 debugFile->writeSymbol(sym);
85 if(port->genXINIT && xidata) {
86 for (sym = setFirstItem (xidata->syms); sym; sym = setNextItem (xidata->syms))
87 debugFile->writeSymbol(sym);
91 for (sym = setFirstItem (sfr->syms); sym; sym = setNextItem (sfr->syms))
92 debugFile->writeSymbol(sym);
96 for (sym = setFirstItem (sfrbit->syms); sym; sym = setNextItem (sfrbit->syms))
97 debugFile->writeSymbol(sym);
101 for (sym = setFirstItem (home->syms); sym; sym = setNextItem (home->syms))
102 debugFile->writeSymbol(sym);
106 for (sym = setFirstItem (code->syms); sym; sym = setNextItem (code->syms))
107 debugFile->writeSymbol(sym);
111 for (sym = setFirstItem (statsg->syms); sym; sym = setNextItem (statsg->syms))
112 debugFile->writeSymbol(sym);
115 if(port->genXINIT && xinit) {
116 for (sym = setFirstItem (xinit->syms); sym; sym = setNextItem (xinit->syms))
117 debugFile->writeSymbol(sym);
125 void dumpSymInfo(char *pcName, memmap *memItem)
132 printf("--------------------------------------------\n");
133 printf(" %s\n", pcName);
135 for(sym = setFirstItem(memItem->syms);
136 sym; sym = setNextItem(memItem->syms))
138 printf(" %s, isReqv:%d, reqv:0x%p, onStack:%d, Stack:%d, nRegs:%d, [",
139 sym->rname, sym->isreqv, sym->reqv, sym->onStack, sym->stack, sym->nRegs);
144 symbol *TempSym = OP_SYMBOL (sym->reqv);
146 for (i = 0; i < 4; i++)
148 printf("%s,", port->getRegName(TempSym->regs[i]));
158 /*------------------------------------------------------------------*/
159 /* emitDebuggerSymbol - call the port specific routine to associate */
160 /* the current code location with a debugger symbol */
161 /*------------------------------------------------------------------*/
163 emitDebuggerSymbol (char * debugSym)
165 if (port->debugger.emitDebuggerSymbol)
166 port->debugger.emitDebuggerSymbol (debugSym);