* support/regression/tests/bug1198642.c: new test
[fw/sdcc] / src / SDCCmain.c
index e1da3c49e031660f5919bfa2b843af118d8e4f35..55338496184b6eee7e4be80eee4abfedbbe1cd8b 100644 (file)
@@ -1425,6 +1425,7 @@ linkEdit (char **envp)
   char *segName, *c;
   int system_ret;
   const char *s;
+  char linkerScriptFileName[PATH_MAX];
 
 
   if(port->linker.needLinkerScript)
@@ -1447,11 +1448,11 @@ linkEdit (char **envp)
         }
 
       /* first we need to create the <filename>.lnk file */
-      SNPRINTF (scratchFileName, sizeof(scratchFileName),
+      SNPRINTF (linkerScriptFileName, sizeof(scratchFileName),
         "%s.lnk", dstFileName);
-      if (!(lnkfile = fopen (scratchFileName, "w")))
+      if (!(lnkfile = fopen (linkerScriptFileName, "w")))
         {
-          werror (E_FILE_OPEN_ERR, scratchFileName);
+          werror (E_FILE_OPEN_ERR, linkerScriptFileName);
           exit (1);
         }
 
@@ -1677,7 +1678,7 @@ linkEdit (char **envp)
 
           tempSet = appendStrSet(libDirsSet, NULL, DIR_SEPARATOR_STRING);
           tempSet = appendStrSet(tempSet, NULL, c);
-          mergeSets(&tempSet, libDirsSet);
+          mergeSets(&tempSet, libPathsSet);
 
           for (s = setFirstItem(tempSet); s != NULL; s = setNextItem(tempSet))
             {
@@ -1753,7 +1754,7 @@ linkEdit (char **envp)
       char buffer3[PATH_MAX];
       set *tempSet=NULL, *libSet=NULL;
 
-      strcpy(buffer3, dstFileName);
+      strcpy(buffer3, linkerScriptFileName);
       if(TARGET_IS_PIC16) {
 
          /* use $l to set the linker include directories */
@@ -2062,6 +2063,7 @@ static void
 setIncludePath(void)
 {
   char *p;
+  char *p2=NULL;
   set *tempSet=NULL;
 
   /*
@@ -2086,7 +2088,17 @@ setIncludePath(void)
   mergeSets(&includeDirsSet, tempSet);
 
   if ((p = getenv(SDCC_INCLUDE_NAME)) != NULL)
+  {
     addSetHead(&includeDirsSet, p);
+    p2=Safe_alloc(strlen(p)+strlen(DIR_SEPARATOR_STRING)+strlen(port->target)+1);
+    if(p2!=NULL)
+    {
+        strcpy(p2, p);
+        strcat(p2, DIR_SEPARATOR_STRING);
+        strcat(p2, port->target);
+        addSetHead(&includeDirsSet, p2);
+    }
+  }
 
 #if 0
   if (options.printSearchDirs) {