DS800C400 fun, improved ROM interface and tinibios
[fw/sdcc] / src / SDCCmain.c
index 9f86359a3dd89a8420a35758c1e0150d21aa9bb0..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);