]> git.gag.com Git - fw/sdcc/commitdiff
* src/SDCCdebug.c (outputDebugSymbols, outputDebugStackSymbols, dumpSymInfo):
authorepetrich <epetrich@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 10 Dec 2003 06:16:55 +0000 (06:16 +0000)
committerepetrich <epetrich@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 10 Dec 2003 06:16:55 +0000 (06:16 +0000)
gracefully handle NULL memmap pointers

git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3044 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
src/SDCCdebug.c

index 19e4fa568f7ed8ea13bb6c312119b2a44fec7f30..3299781f3be98eff6bc14162ca4e8fec92ab4b98 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2003-12-10 Erik Petrich <epetrich@ivorytower.norman.ok.us>
+
+       * src/SDCCdebug.c (outputDebugSymbols, outputDebugStackSymbols, dumpSymInfo):
+       gracefully handle NULL memmap pointers
+
 2003-12-08 Erik Petrich <epetrich@ivorytower.norman.ok.us>
 
        * src/SDCCopt.c (killDeadCode): change iCode type to DUMMY_READ_VOLATILE
index ee9c2115d97c05225a2be26aaecaef3bdd9c32b7..b07aaf2ecd1f3a6399e8de83ada1d8c6bb9549c3 100644 (file)
@@ -17,11 +17,15 @@ void outputDebugStackSymbols(void)
   {
     symbol *sym;
 
-    for (sym = setFirstItem (xstack->syms); sym; sym = setNextItem (xstack->syms))
-      debugFile->writeSymbol(sym);
+    if (xstack) {
+      for (sym = setFirstItem (xstack->syms); sym; sym = setNextItem (xstack->syms))
+        debugFile->writeSymbol(sym);
+    }
 
-    for (sym = setFirstItem (istack->syms); sym; sym = setNextItem (istack->syms))
-      debugFile->writeSymbol(sym);
+    if (istack) {
+      for (sym = setFirstItem (istack->syms); sym; sym = setNextItem (istack->syms))
+        debugFile->writeSymbol(sym);
+    }
   }
 
 }
@@ -52,39 +56,57 @@ void outputDebugSymbols(void)
   {
     symbol *sym;
            
-    for (sym = setFirstItem (data->syms); sym; sym = setNextItem (data->syms))
-      debugFile->writeSymbol(sym);        
+    if (data) {
+      for (sym = setFirstItem (data->syms); sym; sym = setNextItem (data->syms))
+        debugFile->writeSymbol(sym);
+    }
 
-    for (sym = setFirstItem (idata->syms); sym; sym = setNextItem (idata->syms))
-      debugFile->writeSymbol(sym);        
+    if (idata) {
+      for (sym = setFirstItem (idata->syms); sym; sym = setNextItem (idata->syms))
+        debugFile->writeSymbol(sym);
+    }
 
-    for (sym = setFirstItem (bit->syms); sym; sym = setNextItem (bit->syms))
-      debugFile->writeSymbol(sym);        
+    if (bit) {
+      for (sym = setFirstItem (bit->syms); sym; sym = setNextItem (bit->syms))
+        debugFile->writeSymbol(sym);
+    }
 
-    for (sym = setFirstItem (xdata->syms); sym; sym = setNextItem (xdata->syms))
-      debugFile->writeSymbol(sym);        
+    if (xdata) {
+      for (sym = setFirstItem (xdata->syms); sym; sym = setNextItem (xdata->syms))
+        debugFile->writeSymbol(sym);
+    }
 
-    if(port->genXINIT) {
+    if(port->genXINIT && xidata) {
       for (sym = setFirstItem (xidata->syms); sym; sym = setNextItem (xidata->syms))
        debugFile->writeSymbol(sym);        
     }
 
-    for (sym = setFirstItem (sfr->syms); sym; sym = setNextItem (sfr->syms))
-      debugFile->writeSymbol(sym);        
+    if (sfr) {
+      for (sym = setFirstItem (sfr->syms); sym; sym = setNextItem (sfr->syms))
+        debugFile->writeSymbol(sym);
+    }
 
-    for (sym = setFirstItem (sfrbit->syms); sym; sym = setNextItem (sfrbit->syms))
-      debugFile->writeSymbol(sym);        
+    if (sfrbit) {
+      for (sym = setFirstItem (sfrbit->syms); sym; sym = setNextItem (sfrbit->syms))
+        debugFile->writeSymbol(sym);
+    }
 
-    for (sym = setFirstItem (home->syms); sym; sym = setNextItem (home->syms))
-      debugFile->writeSymbol(sym);        
+    if (home) {
+      for (sym = setFirstItem (home->syms); sym; sym = setNextItem (home->syms))
+        debugFile->writeSymbol(sym);
+    }
 
-    for (sym = setFirstItem (code->syms); sym; sym = setNextItem (code->syms))
-      debugFile->writeSymbol(sym);        
+    if (code) {
+      for (sym = setFirstItem (code->syms); sym; sym = setNextItem (code->syms))
+        debugFile->writeSymbol(sym);
+    }
 
-    for (sym = setFirstItem (statsg->syms); sym; sym = setNextItem (statsg->syms))
-      debugFile->writeSymbol(sym);        
+    if (statsg) {
+      for (sym = setFirstItem (statsg->syms); sym; sym = setNextItem (statsg->syms))
+        debugFile->writeSymbol(sym);
+    }
 
-    if(port->genXINIT) {
+    if(port->genXINIT && xinit) {
       for (sym = setFirstItem (xinit->syms); sym; sym = setNextItem (xinit->syms))
        debugFile->writeSymbol(sym);        
     }
@@ -98,6 +120,9 @@ void dumpSymInfo(char *pcName, memmap *memItem)
 {
   symbol *sym;
 
+  if (!memItem)
+    return;
+
   printf("--------------------------------------------\n");
   printf(" %s\n", pcName);