]> git.gag.com Git - fw/sdcc/blobdiff - src/SDCCmain.c
DS800C400 fun, improved ROM interface and tinibios
[fw/sdcc] / src / SDCCmain.c
index 4dc4da94ec69828c9221ec0fa97ef2d9f9b03f97..bda73ad70187bff57ee89ea517fdc64ac9792a1a 100644 (file)
    what you give them.   Help stamp out software-hoarding!
 -------------------------------------------------------------------------*/
 
+#ifdef _WIN32
+#include <io.h>
+#else
+#include <unistd.h>
+#endif
+
 #include <signal.h>
 #include "common.h"
 #include <ctype.h>
@@ -1271,7 +1277,8 @@ parseCmdLine (int argc, char **argv)
        werror (E_FILE_OPEN_ERR, scratchFileName);
     }
   MSVC_style(options.vc_err_style);
-  if(options.use_stdout) SetErrorOut(stdout);
+  if(options.use_stdout) dup2(STDOUT_FILENO, STDERR_FILENO);
+
   return 0;
 }
 
@@ -1342,6 +1349,12 @@ linkEdit (char **envp)
   if ( (options.stack_loc) && (options.stack_loc<0x100) ) {
        WRITE_SEG_LOC ("SSEG", options.stack_loc);
   }
+  
+  /* If the port has any special linker area declarations, get 'em */
+  if (port->extraAreas.genExtraAreaLinkOptions)
+  {
+       port->extraAreas.genExtraAreaLinkOptions(lnkfile);
+  }
 
   /* add the extra linker options */
   fputStrSet(lnkfile, linkOptionsSet);
@@ -1478,11 +1491,11 @@ linkEdit (char **envp)
        /* VR 030517 - gplink needs linker options to set the linker script,*/
        buildCmdLine (buffer2, port->linker.cmd, dstFileName, scratchFileName, NULL, linkOptionsSet);
 
-       buildCmdLine2 (buffer, buffer2, sizeof(buffer));
+       buildCmdLine2 (buffer, sizeof(buffer), buffer2);
     }
   else
     {
-      buildCmdLine2 (buffer, port->linker.mcmd, sizeof(buffer));
+      buildCmdLine2 (buffer, sizeof(buffer), port->linker.mcmd);
     }
 
 /*  if (options.verbose)fprintf(stderr, "linker command line: %s\n", buffer); */
@@ -1569,7 +1582,7 @@ assemble (char **envp)
                      options.debug ? port->assembler.debug_opts : port->assembler.plain_opts,
                      asmOptionsSet);
     } else {
-       buildCmdLine2 (buffer, port->assembler.mcmd, sizeof(buffer));
+       buildCmdLine2 (buffer, sizeof(buffer), port->assembler.mcmd);
     }
 
     if (my_system (buffer)) {
@@ -1675,7 +1688,7 @@ preProcess (char **envp)
       if (options.verbose)
        printf ("sdcc: Calling preprocessor...\n");
 
-      buildCmdLine2 (buffer, _preCmd, sizeof(buffer));
+      buildCmdLine2 (buffer, sizeof(buffer), _preCmd);
 
       if (preProcOnly) {
         if (my_system (buffer)) {