]> git.gag.com Git - fw/sdcc/commitdiff
* src/SDCCmain.c (main): port->finaliseOptions() moved for z80 linking
authorbernhardheld <bernhardheld@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sun, 12 Jan 2003 21:30:59 +0000 (21:30 +0000)
committerbernhardheld <bernhardheld@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sun, 12 Jan 2003 21:30:59 +0000 (21:30 +0000)
* src/SDCCutil.c (join): ugly bug: missing '\0'
* as/mcs51/lkmem.c (summary): sp on address 7 is save

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

ChangeLog
as/mcs51/lkmem.c
src/SDCCmain.c
src/SDCCutil.c

index 74b2092a148e51fe04d83c458f81481016bce910..68194eaf303ccf79f7d87105e17f908d537d9431 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2003-01-12  Bernhard Held <bernhard@bernhardheld.de>
+
+       * src/SDCCmain.c (main): port->finaliseOptions() moved for z80 linking
+       * src/SDCCutil.c (join): ugly bug: missing '\0'
+       * as/mcs51/lkmem.c (summary): sp on address 7 is save
+
 2003-01-11  Bernhard Held <bernhard@bernhardheld.de>
 
        * src/SDCCmain.c (assemble, linkEdit): preparations for -o
index c5b3d94342ca4609863881524e0fe9d1f25f9400..ae09af3f225e68c5a4e1eed31cf6f96487bf2db8 100644 (file)
@@ -254,40 +254,43 @@ int summary(struct area * areap)
        fprintf(of, "\nStack starts at: 0x%02lx", Stack.Start);
 
        /*Check that the stack pointer is landing in a safe place:*/
-       if( (dram[Stack.Start] & 0x8000) == 0x8000 )
+       // if (!flat24Mode) TODO: bypass stack check for ds390
        {
-               fprintf(of, ".\n");
-               sprintf(buff, "Stack set to unavailable memory.\n");
-               REPORT_ERROR(buff, 1);
-       }
-       else if(dram[Stack.Start])
-       {
-               fprintf(of, ".\n");
-               sprintf(buff, "Stack overlaps area ");
-               REPORT_ERROR(buff, 1);
-               for(j=0; j<7; j++)
+               if( (dram[Stack.Start] & 0x8000) == 0x8000 )
                {
-                       if(dram[Stack.Start]&Ram[j].flag)
-                       {
-                               sprintf(buff, "'%s'\n", Ram[j].Name);
-                               break;
-                       }
+                       fprintf(of, ".\n");
+                       sprintf(buff, "Stack set to unavailable memory.\n");
+                       REPORT_ERROR(buff, 1);
                }
-               if(dram[Stack.Start]&IRam.flag)
+               else if(dram[Stack.Start+1])
                {
-                       sprintf(buff, "'%s'\n", IRam.Name);
+                       fprintf(of, ".\n");
+                       sprintf(buff, "Stack overlaps area ");
+                       REPORT_ERROR(buff, 1);
+                       for(j=0; j<7; j++)
+                       {
+                               if(dram[Stack.Start+1]&Ram[j].flag)
+                               {
+                                       sprintf(buff, "'%s'\n", Ram[j].Name);
+                                       break;
+                               }
+                       }
+                       if(dram[Stack.Start]&IRam.flag)
+                       {
+                               sprintf(buff, "'%s'\n", IRam.Name);
+                       }
+                       REPORT_ERROR(buff, 0);
                }
-               REPORT_ERROR(buff, 0);
-       }
-       else    
-       {
-               for(j=Stack.Start, k=0; (j<(int)iram_size)&&(dram[j]==0); j++, k++);
-               fprintf(of, " with %d bytes available\n", k);
-               if (k<MIN_STACK)
+               else
                {
-                       sprintf(buff, "Only %d byte%s available for stack.\n",
+                       for(j=Stack.Start, k=0; (j<(int)iram_size)&&(dram[j]==0); j++, k++);
+                       fprintf(of, " with %d bytes available\n", k);
+                       if (k<MIN_STACK)
+                       {
+                               sprintf(buff, "Only %d byte%s available for stack.\n",
                                        k, (k==1)?"":"s");
-                       REPORT_WARNING(buff, 1);
+                               REPORT_WARNING(buff, 1);
+                       }
                }
        }
 
index a0733f71bb6cfbe97558ae6f539cb2589150dd99..417dae3a35b88fdd9386718dab4804146ca30000 100644 (file)
@@ -1780,12 +1780,15 @@ main (int argc, char **argv, char **envp)
   initValues ();
   _discoverPaths (argv[0]);
 
+  /* initMem() is expensive, but
+     initMem() must called before port->finaliseOptions ().
+     And the z80 port needs port->finaliseOptions(),
+     even if we're only linking. */
+  initMem ();
+  port->finaliseOptions ();
+
   if (fullSrcFileName)
     {
-
-      initMem ();
-
-      port->finaliseOptions ();
       preProcess (envp);
 
       initSymt ();
index 75475d3db84dc76b4e9fec14efc7c05becf532c4..0247d8949e7e1529381bbf06fb9c4d0ec2ff42d2 100644 (file)
@@ -72,7 +72,6 @@ char *
 join(const char **pplist)
 {
   char *pinto = buffer;
-  *pinto = '\0';
 
   while (*pplist)
     {
@@ -81,6 +80,7 @@ join(const char **pplist)
       *pinto++ = ' ';
       pplist++;
     }
+  *pinto = '\0';
 
   return buffer;
 }