Undid the hackup of const and volatile, the problem is much bigger.
[fw/sdcc] / debugger / mcs51 / symtab.c
index 0e5b8c6a0741770b6de0a90e05915a04da3da856..1305cc3ee8f610f8b2bbc8a5fdc982db4e98997d 100644 (file)
@@ -544,27 +544,33 @@ symbol *symLookup (char *name, context *ctxt)
 {
     symbol *sym = NULL ;
 
-    /* first try & find a local variable for the
-       given name */
-    if ( applyToSet(symbols,symLocal,
+    if ((ctxt) && (ctxt->func) &&
+        (ctxt->func->sym) && (ctxt->func->sym->name)) {
+      /* first try & find a local variable for the given name */
+      if ( applyToSet(symbols,symLocal,
         name,
         ctxt->func->sym->name,
         ctxt->block,
         ctxt->level,
         &sym))
-  return sym;
+         return sym;
+      sym = NULL;
+    }
+
+    if ((ctxt) && (ctxt->func) &&
+        (ctxt->func->mod) && (ctxt->func->mod->name)) {
+      /* then try local to this module */
+      if (applyToSet(symbols,symLocal,
+          name,
+          ctxt->func->mod->name,
+          0,0,&sym))
+             return sym;
+      sym = NULL;
+    }
 
-    sym = NULL;
-    /* then try local to this module */
-    if (applyToSet(symbols,symLocal,
-       name,
-       ctxt->func->mod->name,
-       0,0,&sym))
-  return sym;
-    sym = NULL;
     /* no:: try global */
     if ( applyToSet(symbols,symGlobal,name,&sym))
-  return sym;
+      return sym;
 
     /* cannot find return null */
     return NULL;
@@ -590,9 +596,8 @@ static void lnkFuncEnd (char *s)
 
     s++;
     sscanf(s,"%x",&func->sym->eaddr);
-#ifdef SDCDB_DEBUG
-    printf("%s(eaddr%x)\n",func->sym->name,func->sym->eaddr);
-#endif
+
+    Dprintf(D_symtab, ("%s(eaddr%x)\n",func->sym->name,func->sym->eaddr));
 }
 
 /*-----------------------------------------------------------------*/
@@ -616,9 +621,8 @@ static void lnkSymRec (char *s)
 
     s++;
     sscanf(s,"%x",&sym->addr);
-#ifdef SDCDB_DEBUG
-    printf("%s(%x)\n",sym->name,sym->addr);
-#endif
+
+    Dprintf(D_symtab, ("%s(%x)\n",sym->name,sym->addr));
 }
 
 /*-----------------------------------------------------------------*/
@@ -648,9 +652,7 @@ static void lnkAsmSrc (char *s)
     line--;
     if (line < mod->nasmLines) {
   mod->asmLines[line]->addr = addr;
-#ifdef SDCDB_DEBUG
-  printf("%s(%d:%x) %s",mod->asm_name,line,addr,mod->asmLines[line]->src);
-#endif
+  Dprintf(D_symtab, ("%s(%d:%x) %s",mod->asm_name,line,addr,mod->asmLines[line]->src));
     }
 }
 
@@ -690,10 +692,8 @@ static void lnkCSrc (char *s)
   mod->cLines[line]->addr = addr;
   mod->cLines[line]->block = block;
   mod->cLines[line]->level = level;
-#ifdef SDCDB_DEBUG
-  printf("%s(%d:%x) %s",mod->c_name,
-         line+1,addr,mod->cLines[line]->src);
-#endif
+  Dprintf(D_symtab, ("%s(%d:%x) %s",mod->c_name,
+         line+1,addr,mod->cLines[line]->src));
     }
     return;