Bladeren bron

* ModulesLinkToLibc: Search for both bare and prefixed names of libc. When this function is invoked, import library names are not yet normalized and either one may be present. Failure to detect libc may end up in using wrong sysinit unit, this fortunately affects only i386-linux (other Linux targets aren't using Pascal sysinit units yet).

git-svn-id: trunk@22620 -
sergei 13 jaren geleden
bovenliggende
commit
0e8829e4e2
1 gewijzigde bestanden met toevoegingen van 5 en 0 verwijderingen
  1. 5 0
      compiler/systems/t_linux.pas

+ 5 - 0
compiler/systems/t_linux.pas

@@ -230,6 +230,11 @@ begin
   hp:=tmodule(loaded_units.first);
   while assigned(hp) do
     begin
+      { Syntax "external 'c' name 'foo'" adds 'libc.so' to
+        linkothersharedlibs, while "$linklib c" adds just 'c'.
+        Therefore we must search for both names, this deserves a better fix. }
+      result:=hp.linkothersharedlibs.find(target_info.sharedClibprefix+'c'+target_info.sharedClibext);
+      if result then break;
       result:=hp.linkothersharedlibs.find('c');
       if result then break;
       hp:=tmodule(hp.next);