From: epetrich Date: Wed, 10 Dec 2003 06:16:55 +0000 (+0000) Subject: * src/SDCCdebug.c (outputDebugSymbols, outputDebugStackSymbols, dumpSymInfo): X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=3edb89ad609028843dfe58f72953cd207582a8ca;p=fw%2Fsdcc * src/SDCCdebug.c (outputDebugSymbols, outputDebugStackSymbols, dumpSymInfo): gracefully handle NULL memmap pointers git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3044 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- diff --git a/ChangeLog b/ChangeLog index 19e4fa56..3299781f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-12-10 Erik Petrich + + * src/SDCCdebug.c (outputDebugSymbols, outputDebugStackSymbols, dumpSymInfo): + gracefully handle NULL memmap pointers + 2003-12-08 Erik Petrich * src/SDCCopt.c (killDeadCode): change iCode type to DUMMY_READ_VOLATILE diff --git a/src/SDCCdebug.c b/src/SDCCdebug.c index ee9c2115..b07aaf2e 100644 --- a/src/SDCCdebug.c +++ b/src/SDCCdebug.c @@ -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);