X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2FcdbFile.c;h=149fac225d7592f8c302b35ea6e6343ef95be93e;hb=eae1bd2f705a2c61e143c539f8c4d1e9c2b4efe6;hp=1e8e277bde8380d4182156cf46acf5bd9a427cc6;hpb=48ba82a9755eae5da6e24d1381ea3bcf72ebb9ef;p=fw%2Fsdcc diff --git a/src/cdbFile.c b/src/cdbFile.c index 1e8e277b..149fac22 100644 --- a/src/cdbFile.c +++ b/src/cdbFile.c @@ -45,6 +45,33 @@ DEBUGFILE cdbDebugFile = FILE *cdbFilePtr = NULL; char *cdbModuleName = NULL; +/****************************************************************** + * spacesToUnderscores - replace all non alpha-numerics with + * underscores + * + * + *****************************************************************/ + +static char * +spacesToUnderscores (char *dest, const char *src, size_t len) +{ + unsigned int i; + char *p; + + assert(dest != NULL); + assert(src != NULL); + assert(len > 0); + + --len; + for (p = dest, i = 0; *src != '\0' && i < len; ++src, ++i) { + *p++ = (isspace((unsigned char)*src) || (*src == '-')) ? '_' : *src; + } + *p = '\0'; + + return dest; +} + + /****************************************************************** * * @@ -127,6 +154,7 @@ int cdbWriteEndFunction(symbol *pSym, iCode *ic, int offset) sprintf (debugSym, "C$%s$%d$%d$%d", FileBaseName (ic->filename), pSym->lastLine, ic->level, ic->block); + spacesToUnderscores (debugSym, debugSym, sizeof (debugSym)); emitDebuggerSymbol (debugSym); } @@ -263,6 +291,7 @@ int cdbWriteCLine(iCode *ic) sprintf (debugSym, "C$%s$%d$%d$%d", FileBaseName (ic->filename), ic->lineno, ic->level, ic->block); + spacesToUnderscores (debugSym, debugSym, sizeof (debugSym)); emitDebuggerSymbol (debugSym); return 1; @@ -351,7 +380,7 @@ int cdbWriteBasicSymbol(symbol *sym, int isStructSym, int isFunc) fprintf (cdbFilePtr, "),"); /* CHECK FOR REGISTER SYMBOL... */ - if(sym->reqv) + if (!sym->allocreq && sym->reqv) { int a; symbol *TempSym = OP_SYMBOL (sym->reqv); @@ -439,6 +468,7 @@ void cdbTypeInfo (sym_link * type) case V_CHAR: fprintf (cdbFilePtr, "SC"); break; case V_VOID: fprintf (cdbFilePtr, "SV"); break; case V_FLOAT: fprintf (cdbFilePtr, "SF"); break; + case V_FIXED16X16: fprintf(cdbFilePtr, "SQ"); break; case V_STRUCT: fprintf (cdbFilePtr, "ST%s", SPEC_STRUCT (type)->tag); break;