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("XData", xdata);
41 dumpSymInfo("XIData", xidata);
42 dumpSymInfo("XInit", xinit);
43 dumpSymInfo("IData", idata);
44 dumpSymInfo("Bit", bit);
45 dumpSymInfo("Statics", statsg);
46 dumpSymInfo("SFR", sfr);
47 dumpSymInfo("SFRBits", sfrbit);
48 dumpSymInfo("Reg", reg);
49 dumpSymInfo("Generic", generic);
50 dumpSymInfo("Overlay", overlay);
51 dumpSymInfo("EEProm", eeprom);
52 dumpSymInfo("Home", home);
55 if(options.debug && debugFile)
60 for (sym = setFirstItem (data->syms); sym; sym = setNextItem (data->syms))
61 debugFile->writeSymbol(sym);
65 for (sym = setFirstItem (idata->syms); sym; sym = setNextItem (idata->syms))
66 debugFile->writeSymbol(sym);
70 for (sym = setFirstItem (bit->syms); sym; sym = setNextItem (bit->syms))
71 debugFile->writeSymbol(sym);
75 for (sym = setFirstItem (xdata->syms); sym; sym = setNextItem (xdata->syms))
76 debugFile->writeSymbol(sym);
79 if(port->genXINIT && xidata) {
80 for (sym = setFirstItem (xidata->syms); sym; sym = setNextItem (xidata->syms))
81 debugFile->writeSymbol(sym);
85 for (sym = setFirstItem (sfr->syms); sym; sym = setNextItem (sfr->syms))
86 debugFile->writeSymbol(sym);
90 for (sym = setFirstItem (sfrbit->syms); sym; sym = setNextItem (sfrbit->syms))
91 debugFile->writeSymbol(sym);
95 for (sym = setFirstItem (home->syms); sym; sym = setNextItem (home->syms))
96 debugFile->writeSymbol(sym);
100 for (sym = setFirstItem (code->syms); sym; sym = setNextItem (code->syms))
101 debugFile->writeSymbol(sym);
105 for (sym = setFirstItem (statsg->syms); sym; sym = setNextItem (statsg->syms))
106 debugFile->writeSymbol(sym);
109 if(port->genXINIT && xinit) {
110 for (sym = setFirstItem (xinit->syms); sym; sym = setNextItem (xinit->syms))
111 debugFile->writeSymbol(sym);
119 void dumpSymInfo(char *pcName, memmap *memItem)
126 printf("--------------------------------------------\n");
127 printf(" %s\n", pcName);
129 for(sym = setFirstItem(memItem->syms);
130 sym; sym = setNextItem(memItem->syms))
132 printf(" %s, isReqv:%d, reqv:0x%p, onStack:%d, Stack:%d, nRegs:%d, [",
133 sym->rname, sym->isreqv, sym->reqv, sym->onStack, sym->stack, sym->nRegs);
138 symbol *TempSym = OP_SYMBOL (sym->reqv);
140 for (i = 0; i < 4; i++)
142 printf("%s,", port->getRegName(TempSym->regs[i]));
152 /*------------------------------------------------------------------*/
153 /* emitDebuggerSymbol - call the port specific routine to associate */
154 /* the current code location with a debugger symbol */
155 /*------------------------------------------------------------------*/
157 emitDebuggerSymbol (char * debugSym)
159 if (port->debugger.emitDebuggerSymbol)
160 port->debugger.emitDebuggerSymbol (debugSym);