Переглянути джерело

* TInternalLinker.Load_ReadStaticLibrary: exit if error has occurred while opening a static library or dynamic object, continuing can cause other errors/crashes in this case.
* t_linux.pas: use sysrootpath when specifying dynamic interpreter (for cross-linking).

git-svn-id: trunk@25277 -

sergei 12 роки тому
батько
коміт
eec8129738
2 змінених файлів з 6 додано та 4 видалено
  1. 2 0
      compiler/link.pas
  2. 4 4
      compiler/systems/t_linux.pas

+ 2 - 0
compiler/link.pas

@@ -1033,6 +1033,8 @@ Implementation
           exit;
         Comment(V_Tried,'Opening library '+para);
         objreader:=TArObjectreader.create(para,true);
+        if ErrorCount>0 then
+          exit;
         if objreader.isarchive then
           TFPObjectList(FGroupStack.Last).Add(TStaticLibrary.Create(para,objreader,CObjInput))
         else

+ 4 - 4
compiler/systems/t_linux.pas

@@ -502,8 +502,8 @@ begin
                  end
                 else
                  begin
-                   linklibc:=true;
-                 end;
+                  linklibc:=true;
+              end;
               end;
              Add(')');
            end
@@ -662,7 +662,7 @@ begin
        _end.  Align after .bss to ensure correct alignment even if the
        .bss section disappears because there are no input sections.}
       add('   . = ALIGN(32 / 8);');
-      add('  }');
+      add('}');
       add('  . = ALIGN(32 / 8);');
       add('  PROVIDE (_end = .);');
       add('  PROVIDE (end = .);');
@@ -1276,7 +1276,7 @@ begin
   { See tw9089*.pp: if more than one pure-Pascal shared libs are loaded,
     and none have rtld in their DT_NEEDED, then rtld cannot finalize correctly.  }
   if IsSharedLibrary then
-    LinkScript.Concat('READSTATICLIBRARY '+maybequoted(dynlinker));
+    LinkScript.Concat('READSTATICLIBRARY '+maybequoted(sysrootpath+dynlinker));
 
   linkToSharedLibs:=(not SharedLibFiles.Empty);