remove output of empty line
[fw/sdcc] / src / SDCCmain.c
index a0fff7cee509a26149f5eada32ea5c08273d3c9a..be35a87756efcca74defcbc7ef6003617840badc 100644 (file)
@@ -79,8 +79,8 @@ int ds390_jammed = 0;
 #endif
 
 // Globally accessible scratch buffer for file names.
-char scratchFileName[FILENAME_MAX];
-char buffer[FILENAME_MAX];
+char scratchFileName[PATH_MAX];
+char buffer[PATH_MAX];
 
 // In MSC VC6 default search path for exe's to path for this
 
@@ -203,7 +203,8 @@ optionsTable[] = {
     { 0,    "--verbose",            &options.verbose, "Trace calls to the preprocessor, assembler, and linker" },
     { 0,    OPTION_LESS_PEDANTIC,   NULL, "Disable some of the more pedantic warnings" },
     { 0,    OPTION_SHORT_IS_8BITS,   NULL, "Make short 8bits (for old times sake)" },
-    { 0,    "--profile",            &options.profile, "On supported ports, generate extra profiling information" }
+    { 0,    "--profile",            &options.profile, "On supported ports, generate extra profiling information" },
+    { 0,    "--fommit-frame-pointer", &options.ommitFramePtr, "Leave out the frame pointer." }
 };
 
 /** Table of all unsupported options and help text to display when one
@@ -509,7 +510,7 @@ processFile (char *s)
 
       /* get rid of the "." */
       strtok (buffer, ".");
-      srcFileName = Safe_calloc (1, strlen (buffer) + 1);
+      srcFileName = Safe_alloc ( strlen (buffer) + 1);
       strcpy (srcFileName, buffer);
 
       /* get rid of any path information
@@ -522,7 +523,7 @@ processFile (char *s)
             *(fext - 1) != '/' &&
             *(fext - 1) != ':')
        fext--;
-      moduleName = Safe_calloc (1, strlen (fext) + 1);
+      moduleName = Safe_alloc ( strlen (fext) + 1);
       strcpy (moduleName, fext);
 
       return;
@@ -559,7 +560,7 @@ _processC1Arg (char *s)
          werror (W_TOO_MANY_SRC, s);
          return;
        }
-      options.out_name = strdup (s);
+      options.out_name = Safe_strdup (s);
     }
   else
     {
@@ -1073,10 +1074,10 @@ linkEdit (char **envp)
     fprintf (lnkfile, "-z\n");
 
 #define WRITE_SEG_LOC(N, L) \
-    segName = strdup(N); \
+    segName = Safe_strdup(N); \
     c = strtok(segName, " \t"); \
     fprintf (lnkfile,"-b %s = 0x%04x\n", c, L); \
-    if (segName) { free(segName); }
+    if (segName) { Safe_free(segName); }
 
   /* code segment start */
   WRITE_SEG_LOC (CODE_NAME, options.code_loc);
@@ -1163,7 +1164,9 @@ linkEdit (char **envp)
 
   if (port->linker.cmd)
     {
-      buildCmdLine (buffer, port->linker.cmd, srcFileName, NULL, NULL, NULL);
+      char buffer2[PATH_MAX];
+      buildCmdLine (buffer2, port->linker.cmd, srcFileName, NULL, NULL, NULL);
+      buildCmdLine2 (buffer, buffer2);
     }
   else
     {
@@ -1178,7 +1181,7 @@ linkEdit (char **envp)
   if (strcmp (srcFileName, "temp") == 0)
     {
       /* rename "temp.cdb" to "firstRelFile.cdb" */
-      char *f = strtok (strdup (relFiles[0]), ".");
+      char *f = strtok (Safe_strdup (relFiles[0]), ".");
       f = strcat (f, ".cdb");
       rename ("temp.cdb", f);
       srcFileName = NULL;
@@ -1233,6 +1236,10 @@ preProcess (char **envp)
       if (options.stack10bit)
        addToList (preArgv, "-DSDCC_STACK_TENBIT");
 
+      /* set the macro for no overlay  */
+      if (options.noOverlay)
+        addToList (preArgv, "-DSDCC_NOOVERLAY");
+
       /* set the macro for large model  */
       switch (options.model)
        {
@@ -1268,7 +1275,7 @@ preProcess (char **envp)
       setMainValue ("cppextraopts", join(preArgv));
       
       if (!preProcOnly)
-          preOutName = strdup (tempfilename ());
+          preOutName = Safe_strdup (tempfilename ());
 
       /* Have to set cppoutfilename to something, even if just pre-processing. */
       setMainValue ("cppoutfilename", preOutName ? preOutName : "");
@@ -1284,7 +1291,7 @@ preProcess (char **envp)
           if (preOutName)
             {
               unlink (preOutName);
-              free (preOutName);
+              Safe_free (preOutName);
             }
           // EndFix
          exit (1);
@@ -1380,7 +1387,7 @@ _discoverPaths (const char *argv0)
       strcpy (scratchFileName, argv0);
       *strrchr (scratchFileName, DIR_SEPARATOR_CHAR) = '\0';
       setMainValue ("bindir", scratchFileName);
-      ExePathList[0] = gc_strdup (scratchFileName);
+      ExePathList[0] = Safe_strdup (scratchFileName);
     }
   else if (getenv (SDCCDIR_NAME) != NULL)
     {
@@ -1388,7 +1395,7 @@ _discoverPaths (const char *argv0)
       strcpy (scratchFileName, getenv (SDCCDIR_NAME));
       strcat (scratchFileName, buffer);
       setMainValue ("bindir", scratchFileName);
-      ExePathList[0] = gc_strdup (scratchFileName);
+      ExePathList[0] = Safe_strdup (scratchFileName);
     }
   else
     {
@@ -1444,10 +1451,11 @@ initValues (void)
 {
   populateMainValues (_baseValues);
   setMainValue ("port", port->target);
-  setMainValue ("fullsrcfilename", fullSrcFileName);
-  setMainValue ("srcfilename", srcFileName);
   setMainValue ("objext", port->linker.rel_ext);
   setMainValue ("asmext", port->assembler.file_ext);
+
+  setMainValue ("fullsrcfilename", fullSrcFileName ? fullSrcFileName : "fullsrcfilename");
+  setMainValue ("srcfilename", srcFileName ? srcFileName : "srcfilename");
 }
 
 /*
@@ -1500,11 +1508,11 @@ main (int argc, char **argv, char **envp)
       exit (0);
     }
 
+  initValues ();
+  _discoverPaths (argv[0]);
+
   if (srcFileName)
     {
-      initValues ();
-      _discoverPaths (argv[0]);
-
       preProcess (envp);
 
       initMem ();
@@ -1544,7 +1552,7 @@ main (int argc, char **argv, char **envp)
                   if (yyin && yyin != stdin)
                     fclose (yyin);
                   unlink (preOutName);
-                  free (preOutName);
+                  Safe_free (preOutName);
                 }
               // EndFix
              return 1;
@@ -1564,7 +1572,7 @@ main (int argc, char **argv, char **envp)
               if (yyin && yyin != stdin)
                 fclose (yyin);
               unlink (preOutName);
-              free (preOutName);
+              Safe_free (preOutName);
             }
           // EndFix
           #if defined (__MINGW32__) || defined (__CYGWIN__) || defined (_MSC_VER)
@@ -1583,7 +1591,7 @@ main (int argc, char **argv, char **envp)
   if (preOutName && !options.c1mode)
     {
       unlink (preOutName);
-      free (preOutName);
+      Safe_free (preOutName);
     }
 
   if (!options.cc_only &&