* doc/cdbfile.html: removed, replaced by cdbfileformat.lyx
[fw/sdcc] / src / SDCCdebug.c
1
2 #include "common.h"
3
4 extern DEBUGFILE cdbDebugFile;
5
6 DEBUGFILE *debugFile = &cdbDebugFile;
7
8 void outputDebugStackSymbols(void)
9 {
10   if(getenv("SDCC_DEBUG_VAR_STORAGE"))
11     {
12       dumpSymInfo("XStack", xstack);
13       dumpSymInfo("IStack", istack);
14     }
15
16   if(options.debug && debugFile)
17   {
18     symbol *sym;
19
20     for (sym = setFirstItem (xstack->syms); sym; sym = setNextItem (xstack->syms))
21       debugFile->writeSymbol(sym);
22
23     for (sym = setFirstItem (istack->syms); sym; sym = setNextItem (istack->syms))
24       debugFile->writeSymbol(sym);
25   }
26
27 }
28
29
30 void outputDebugSymbols(void)
31 {
32   if(getenv("SDCC_DEBUG_VAR_STORAGE"))
33     {
34       dumpSymInfo("Code", code);
35       dumpSymInfo("Data", data);
36       dumpSymInfo("XData", xdata);
37       dumpSymInfo("XIData", xidata);
38       dumpSymInfo("XInit", xinit);
39       dumpSymInfo("IData", idata);
40       dumpSymInfo("Bit", bit);
41       dumpSymInfo("Statics", statsg);
42       dumpSymInfo("SFR", sfr);
43       dumpSymInfo("SFRBits", sfrbit);
44       dumpSymInfo("Reg", reg);
45       dumpSymInfo("Generic", generic);
46       dumpSymInfo("Overlay", overlay);
47       dumpSymInfo("EEProm", eeprom);
48       dumpSymInfo("Home", home);
49     }
50
51   if(options.debug && debugFile)
52   {
53     symbol *sym;
54            
55     for (sym = setFirstItem (data->syms); sym; sym = setNextItem (data->syms))
56       debugFile->writeSymbol(sym);        
57
58     for (sym = setFirstItem (idata->syms); sym; sym = setNextItem (idata->syms))
59       debugFile->writeSymbol(sym);        
60
61     for (sym = setFirstItem (bit->syms); sym; sym = setNextItem (bit->syms))
62       debugFile->writeSymbol(sym);        
63
64     for (sym = setFirstItem (xdata->syms); sym; sym = setNextItem (xdata->syms))
65       debugFile->writeSymbol(sym);        
66
67     if(port->genXINIT) {
68       for (sym = setFirstItem (xidata->syms); sym; sym = setNextItem (xidata->syms))
69         debugFile->writeSymbol(sym);        
70     }
71
72     for (sym = setFirstItem (sfr->syms); sym; sym = setNextItem (sfr->syms))
73       debugFile->writeSymbol(sym);        
74
75     for (sym = setFirstItem (sfrbit->syms); sym; sym = setNextItem (sfrbit->syms))
76       debugFile->writeSymbol(sym);        
77
78     for (sym = setFirstItem (home->syms); sym; sym = setNextItem (home->syms))
79       debugFile->writeSymbol(sym);        
80
81     for (sym = setFirstItem (code->syms); sym; sym = setNextItem (code->syms))
82       debugFile->writeSymbol(sym);        
83
84     for (sym = setFirstItem (statsg->syms); sym; sym = setNextItem (statsg->syms))
85       debugFile->writeSymbol(sym);        
86
87     if(port->genXINIT) {
88       for (sym = setFirstItem (xinit->syms); sym; sym = setNextItem (xinit->syms))
89         debugFile->writeSymbol(sym);        
90     }
91   }
92
93   return;
94 }
95
96
97 void dumpSymInfo(char *pcName, memmap *memItem)
98 {
99   symbol *sym;
100
101   printf("--------------------------------------------\n");
102   printf(" %s\n", pcName);
103
104   for(sym = setFirstItem(memItem->syms); 
105       sym;       sym = setNextItem(memItem->syms))
106     {          
107       printf("   %s, isReqv:%d, reqv:0x%p, onStack:%d, Stack:%d, nRegs:%d, [", 
108              sym->rname, sym->isreqv, sym->reqv, sym->onStack, sym->stack, sym->nRegs);
109
110       if(sym->reqv)
111       { 
112           int i;
113           symbol *TempSym = OP_SYMBOL (sym->reqv);
114          
115           for (i = 0; i < 4; i++)           
116             if(TempSym->regs[i])
117               printf("%s,", port->getRegName(TempSym->regs[i]));               
118       }
119           
120       printf("]\n");
121     }
122
123   printf("\n");
124 }
125
126
127
128