* as/mcs51/lkmem.c: rflag is for DS390
authorbernhardheld <bernhardheld@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Tue, 14 Jan 2003 22:32:12 +0000 (22:32 +0000)
committerbernhardheld <bernhardheld@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Tue, 14 Jan 2003 22:32:12 +0000 (22:32 +0000)
* src/SDCCglobl.h: removed out_name and options stackOnData, genericPtr
* src/SDCCmain.c (optionsTable, setDefaultOptions): removed --stack-after-data and --generic
 (linkEdit): move mem- and map-files the same way as ihx-files
* src/z80/main.c (_setDefaultOptions): removed --generic
* src/SDCCmain.c (_processC1Arg, parseCmdLine, main): --c1mode works again
* src/SDCCglue.c (createInterruptVect, glue): --c1mode works again
* src/pic/glue.c (picglue): --c1mode works again
* src/pic16/glue.c (pic16glue): --c1mode works again
* src/asm.c (printCLine): fix #660034

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

ChangeLog
as/mcs51/lkmem.c
src/SDCCglobl.h
src/SDCCglue.c
src/SDCCmain.c
src/asm.c
src/pic/glue.c
src/pic16/glue.c
src/z80/main.c

index 15c7152b4a5278c401810ed511b635d61cc23886..e018817555b0978caa86e0e9bf4e9718b771a0f0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2003-01-14  Bernhard Held <bernhard@bernhardheld.de>
+
+       * as/mcs51/lkmem.c: rflag is for DS390
+       * src/SDCCglobl.h: removed out_name and options stackOnData, genericPtr
+       * src/SDCCmain.c (optionsTable, setDefaultOptions): removed --stack-after-data and --generic
+                        (linkEdit): move mem- and map-files the same way as ihx-files
+       * src/z80/main.c (_setDefaultOptions): removed --generic
+       * src/SDCCmain.c (_processC1Arg, parseCmdLine, main): --c1mode works again
+       * src/SDCCglue.c (createInterruptVect, glue): --c1mode works again
+       * src/pic/glue.c (picglue): --c1mode works again
+       * src/pic16/glue.c (pic16glue): --c1mode works again
+       * src/asm.c (printCLine): fix #660034
+
 2003-01-13  Bernhard Held <bernhard@bernhardheld.de>
 
        * src/ds390/peeph.def: fix #123; add 14 rules by Fiorenzo D. Ramaglia <fd.ramaglia@tin.it>, 1 by Frieder
index 9ff0c161f9bf91956ce938565e31598dd2e114a7..661f611167ea5a74fb994b272c606923d1f53b02 100644 (file)
@@ -251,9 +251,8 @@ int summary(struct area * areap)
        }
 
        /*Report the position of the begining of the stack*/
-       /* TODO find flag for DS390 */
        fprintf(of, "\n%stack starts at: 0x%02lx (sp set to 0x%02lx)",
-               0 ? "16 bit mode initial s" : "S", Stack.Start, Stack.Start-1);
+               rflag ? "16 bit mode initial s" : "S", Stack.Start, Stack.Start-1);
 
        /*Check that the stack pointer is landing in a safe place:*/
        if( (dram[Stack.Start] & 0x8000) == 0x8000 )
index b705b5d78b755c9a26c710119c09b87f54fdb4d4..f9dd2453970545a20c2e3faa11c95615068c7709 100644 (file)
@@ -204,7 +204,6 @@ struct options
     int stackAuto;             /* Stack Automatic  */
     int useXstack;             /* use Xternal Stack */
     int stack10bit;            /* use 10 bit stack (flat24 model only) */
-    int genericPtr;            /* use generic pointers */
     int dump_raw;              /* dump after intermediate code generation */
     int dump_gcse;             /* dump after gcse */
     int dump_loop;             /* dump after loop optimizations */
@@ -224,10 +223,8 @@ struct options
     int nopeep;                        /* no peep hole optimization */
     int asmpeep;               /* pass inline assembler thru peep hole */
     int debug;                 /* generate extra debug info */
-    int stackOnData;           /* stack after data segment  */
     int c1mode;                        /* Act like c1 - no pre-proc, asm or link */
     char *peep_file;           /* additional rules for peep hole */
-    char *out_name;            /* Asm output name for c1 mode */
     int nostdlib;              /* Don't use standard lib files */
     int nostdinc;              /* Don't use standard include files */
     int noRegParams;            /* Disable passing some parameters in registers */
index 99a4f959e75783ef63558396f92a3e873310b522..b1b6577f9359dc5ed338f8c2e0e1b0026ad907e7 100644 (file)
@@ -1229,7 +1229,7 @@ createInterruptVect (FILE * vFile)
   /* only if the main function exists */
   if (!(mainf = findSymWithLevel (SymbolTab, mainf)))
     {
-      if (!options.cc_only && !noAssemble)
+      if (!options.cc_only && !noAssemble && !options.c1mode)
        werror (E_NO_MAIN);
       return;
     }
@@ -1458,22 +1458,15 @@ glue (void)
   /* now put it all together into the assembler file */
   /* create the assembler file name */
 
-  if (!options.c1mode)
+  /* -o option overrides default name? */
+  if ((noAssemble || options.c1mode) && fullDstFileName)
     {
-      /* -o option overrides default name? */
-      if (noAssemble && fullDstFileName)
-        {
-          strcpy (scratchFileName, fullDstFileName);
-        }
-      else
-        {
-          strcpy (scratchFileName, dstFileName);
-      strcat (scratchFileName, port->assembler.file_ext);
-        }
+      strcpy (scratchFileName, fullDstFileName);
     }
   else
     {
-      strcpy (scratchFileName, options.out_name);
+      strcpy (scratchFileName, dstFileName);
+      strcat (scratchFileName, port->assembler.file_ext);
     }
 
   if (!(asmFile = fopen (scratchFileName, "w")))
index 417dae3a35b88fdd9386718dab4804146ca30000..8cd269b1a24ef0190cd0b9daf0827bd1a0e257b7 100644 (file)
@@ -149,7 +149,6 @@ optionsTable[] = {
     { 0,    OPTION_STACK_8BIT,      NULL, "use the 8bit stack for the ds390 (not supported yet)" },
     { 0,    "--stack-10bit",        &options.stack10bit, "use the 10bit stack for ds390 (default)" },
     { 0,    "--xstack",             &options.useXstack, "Use external stack" },
-    { 0,    "--generic",            &options.genericPtr, "All unqualified ptrs converted to '_generic'" },
     { 0,    OPTION_NO_GCSE,         NULL, "Disable the GCSE optimisation" },
     { 0,    OPTION_NO_LOOP_INV,     NULL, "Disable optimisation of invariants" },
     { 0,    OPTION_NO_LOOP_IND,     NULL, NULL },
@@ -188,7 +187,6 @@ optionsTable[] = {
     { 0,    "--peep-asm",           &options.asmpeep, NULL },
     { 0,    "--debug",              &options.debug, "Enable debugging symbol output" },
     { 'v',  OPTION_VERSION,         NULL, "Display sdcc's version" },
-    { 0,    "--stack-after-data",   &options.stackOnData, "initialize the stackpointer with the last byte use in DSEG" },
     { 'E',  "--preprocessonly",     &preProcOnly, "Preprocess only, do not compile" },
     { 0,    "--c1mode",             &options.c1mode, "Act in c1 mode.  The input is preprocessed code, the output is assembly code." },
     { 0,    "--help",               NULL, "Display this help" },
@@ -226,8 +224,6 @@ typedef struct {
 
 static const UNSUPPORTEDOPT 
 unsupportedOptTable[] = {
-    { 'a',  NULL,      "use --stack-auto instead." },
-    { 'g',  NULL,      "use --generic instead" },
     { 'X',  NULL,      "use --xstack-loc instead" },
     { 'x',  NULL,      "use --xstack instead" },
     { 'i',  NULL,      "use --idata-loc instead" },
@@ -492,7 +488,6 @@ setDefaultOptions ()
   options.data_loc = 0;                /* JCF: By default let the linker locate data */
   options.xdata_loc = 0;
   options.idata_loc = 0x80;
-  options.genericPtr = 1;      /* default on */
   options.nopeep = 0;
   options.model = port->general.default_model;
   options.nostdlib = 0;
@@ -549,7 +544,8 @@ processFile (char *s)
        }
 
       /* the only source file */
-      if (!(srcFile = fopen ((fullSrcFileName = s), "r")))
+      fullSrcFileName = s;
+      if (!(srcFile = fopen (fullSrcFileName, "r")))
        {
          werror (E_FILE_OPEN_ERR, s);
          exit (1);
@@ -614,24 +610,6 @@ processFile (char *s)
 
 }
 
-static void
-_processC1Arg (char *s)
-{
-  if (fullSrcFileName)
-    {
-      if (options.out_name)
-       {
-         werror (W_TOO_MANY_SRC, s);
-         return;
-       }
-      options.out_name = Safe_strdup (s);
-    }
-  else
-    {
-      processFile (s);
-    }
-}
-
 static void
 _setModel (int model, const char *sz)
 {
@@ -1118,13 +1096,13 @@ parseCmdLine (int argc, char **argv)
                if (argv[i][2] == ' ' || argv[i][2] == '\0')
                  {
                    i++;
-                    if (i >= argc) 
+                    if (i >= argc)
                       {
                           /* No argument. */
                           werror(E_ARGUMENT_MISSING, argv[i-1]);
                           break;
                       }
-                    else 
+                    else
                       {
                           rest = argv[i];
                       }
@@ -1150,10 +1128,7 @@ parseCmdLine (int argc, char **argv)
       if (!port->parseOption (&argc, argv, &i))
        {
          /* no option must be a filename */
-         if (options.c1mode)
-           _processC1Arg (argv[i]);
-         else
-           processFile (argv[i]);
+          processFile (argv[i]);
        }
     }
 
@@ -1383,18 +1358,38 @@ linkEdit (char **envp)
   /* -o option overrides default name? */
   if (fullDstFileName)
     {
+      char *p, *q;
       /* the linked file gets the name of the first modul */
       if (fullSrcFileName)
-    {
+        {
           strcpy (scratchFileName, dstFileName);
+          p = strlen (scratchFileName) + scratchFileName;
         }
       else
         {
           strcpy (scratchFileName, relFiles[0]);
-          /* strip ".rel" extension */
-          *strrchr (scratchFileName, '.') = '\0';
+          /* strip "rel" extension */
+          p = strrchr (scratchFileName, '.') + 1;
         }
-      strcat (scratchFileName, options.out_fmt ? ".S19" : ".ihx");
+      strcpy (p, options.out_fmt ? "S19" : "ihx");
+      rename (scratchFileName, fullDstFileName);
+
+      q = strrchr (fullDstFileName, '.');
+      if (q)
+        {
+          /* point after the '.' of the extension */
+          q++;
+        }
+      else
+        {
+          /* no extension: append new extensions */
+          q = strlen (fullDstFileName) + fullDstFileName;
+        }
+      strcpy (p, "map");
+      strcpy (q, "map");
+      rename (scratchFileName, fullDstFileName);
+      strcpy (p, "mem");
+      strcpy (q, "mem");
       rename (scratchFileName, fullDstFileName);
     }
 }
@@ -1504,7 +1499,7 @@ preProcess (char **envp)
       }
 
       setMainValue ("cppextraopts", join(preArgv));
-      
+
       if (preProcOnly)
         {
           if (fullDstFileName)
@@ -1771,7 +1766,7 @@ main (int argc, char **argv, char **envp)
 
   /* if no input then printUsage & exit */
   if ((!options.c1mode && !fullSrcFileName && !nrelFiles) ||
-      (options.c1mode && !fullSrcFileName && !options.out_name))
+      (options.c1mode && !fullSrcFileName))
     {
       printUsage ();
       exit (0);
index 8b9f7798075154c11763ce867c7c3986efee523a..9722ced0cb076d67565ad2c5fb1c8522718a75c9 100644 (file)
--- a/src/asm.c
+++ b/src/asm.c
@@ -209,16 +209,25 @@ asm_addTree (const ASM_MAPPINGS * pMappings)
 static FILE *inFile=NULL;
 static char inLineString[1024];
 static int inLineNo=0;
+static char lastSrcFile[PATH_MAX];
 int rewinds=0;
 
 char *printCLine (char *srcFile, int lineno) {
   char *ilsP=inLineString;
+
+  if (inFile) {
+    if (strcmp (lastSrcFile, srcFile) != 0) {
+      fclose (inFile);
+      inFile = NULL;
+    }
+  }
   if (!inFile) {
     inFile=fopen(srcFile, "r");
     if (!inFile) {
       perror ("printCLine");
       exit (1);
     }
+    strcpy (lastSrcFile, srcFile);
   }
   if (lineno<inLineNo) {
     fseek (inFile, 0, SEEK_SET);
index 160f8bde0f5e7f3632949c1e141ac564f649abc6..e50b255c202ec591b8ddf0ef1df9c1561bb67329 100644 (file)
@@ -807,20 +807,15 @@ picglue ()
   /* now put it all together into the assembler file */
   /* create the assembler file name */
     
-  if (!options.c1mode) {
-    if (noAssemble && fullDstFileName)
-      {
-        sprintf (buffer, fullDstFileName);
-      }
-    else
-      {
-        sprintf (buffer, dstFileName);
-        strcat (buffer, ".asm");
-      }
-  }
-  else {
-    strcpy(buffer, options.out_name);
-  }
+  if ((noAssemble || options.c1mode) && fullDstFileName)
+    {
+      sprintf (buffer, fullDstFileName);
+    }
+  else
+    {
+      sprintf (buffer, dstFileName);
+      strcat (buffer, ".asm");
+    }
 
   if (!(asmFile = fopen (buffer, "w"))) {
     werror (E_FILE_OPEN_ERR, buffer);
index 6b601ce4f7227d13ab96e4713128b9fb287b8b39..c49b51734777a53719153db2813d98df44d75308 100644 (file)
@@ -807,20 +807,15 @@ pic16glue ()
   /* now put it all together into the assembler file */
   /* create the assembler file name */
     
-  if (!options.c1mode) {
-    if (noAssemble && fullDstFileName)
-      {
-        sprintf (buffer, fullDstFileName);
-      }
-    else
-      {
-        sprintf (buffer, dstFileName);
-    strcat (buffer, ".asm");
-  }
-  }
-  else {
-    strcpy(buffer, options.out_name);
-  }
+  if ((noAssemble || options.c1mode)  && fullDstFileName)
+    {
+      sprintf (buffer, fullDstFileName);
+    }
+  else
+    {
+      sprintf (buffer, dstFileName);
+      strcat (buffer, ".asm");
+    }
 
   if (!(asmFile = fopen (buffer, "w"))) {
     werror (E_FILE_OPEN_ERR, buffer);
index c1b96e5e730a8b1b8570710b955cf3e69b5eb2a5..8c6cadf142eab93c7784472d9896112fc9c67706 100644 (file)
@@ -333,7 +333,6 @@ _finaliseOptions (void)
 static void
 _setDefaultOptions (void)
 {
-  options.genericPtr = 1;      /* default on */
   options.nopeep = 0;
   options.stackAuto = 1;
   options.mainreturn = 1;