Fixed a parameter allocation bug
[fw/sdcc] / src / SDCCmain.c
index 66b52605bab2f1ecd7149fbf0473fbd223ede8ba..be3101f9266bc5132a4ac2c28b480a2d0db2129b 100644 (file)
@@ -118,6 +118,7 @@ char    *preOutName;
 #define OPTION_NOPEEP      "-no-peep"
 #define OPTION_ASMPEEP     "-peep-asm"
 #define OPTION_DEBUG       "-debug"
+#define OPTION_NODEBUG    "-nodebug"
 #define OPTION_VERSION     "-version"
 #define OPTION_STKAFTRDATA "-stack-after-data"
 #define OPTION_PREPROC_ONLY "-preprocessonly"
@@ -654,6 +655,11 @@ int   parseCmdLine ( int argc, char **argv )
                 continue;
            }
 
+           if (strcmp(&argv[i][1],OPTION_NODEBUG) == 0) {
+               options.nodebug = 1;            
+                continue;
+           }
+
            if (strcmp(&argv[i][1],OPTION_NOREGPARMS) == 0) {
                options.noregparms = 1;         
                 continue;
@@ -1028,7 +1034,7 @@ int   parseCmdLine ( int argc, char **argv )
        options.xstack_loc = options.xdata_loc ;
 
     /* if debug option is set the open the cdbFile */
-    if (/* options.debug && */ srcFileName) {
+    if (!options.nodebug && srcFileName) {
        sprintf(cdbfnbuf,"%s.cdb",srcFileName);
        if ((cdbFile = fopen(cdbfnbuf,"w")) == NULL)
            werror(E_FILE_OPEN_ERR,cdbfnbuf);
@@ -1159,21 +1165,25 @@ static void linkEdit (char **envp)
        fprintf(lnkfile,"%s\n",linkOptions[i]);
 
     /* standard library path */
-    switch(options.model)
-    {
+    if (strcmp(port->target,"ds390")==0) {
+      c="ds390";
+    } else {
+      switch(options.model)
+       {
         case MODEL_SMALL:
-                   c = "small";
-                   break;
+         c = "small";
+         break;
                case MODEL_LARGE:
-                   c = "large";
-                   break;
+         c = "large";
+         break;
                case MODEL_FLAT24:
-                   c = "flat24";
-                   break;
+         c = "flat24";
+         break;
         default:
-            werror(W_UNKNOWN_MODEL, __FILE__, __LINE__);
-            c = "unknown";
-            break;
+         werror(W_UNKNOWN_MODEL, __FILE__, __LINE__);
+         c = "unknown";
+         break;
+       }
     }
     fprintf (lnkfile,"-k %s/%s\n",SDCC_LIB_DIR/*STD_LIB_PATH*/,c);
            
@@ -1182,6 +1192,9 @@ static void linkEdit (char **envp)
        fprintf (lnkfile,"-k %s\n",libPaths[i]);
         
     /* standard library files */
+    if (strcmp(port->target, "ds390")==0) {
+      fprintf (lnkfile,"-l %s\n",STD_DS390_LIB);
+    }
     fprintf (lnkfile,"-l %s\n",STD_LIB);
     fprintf (lnkfile,"-l %s\n",STD_INT_LIB);
     fprintf (lnkfile,"-l %s\n",STD_LONG_LIB);
@@ -1338,7 +1351,7 @@ int main ( int argc, char **argv , char **envp)
 {
     /* turn all optimizations off by default */
     memset(&optimize,0,sizeof(struct optimize));
-    
+
     /*printVersionInfo ();*/
 
     _findPort(argc, argv);