Sfoglia il codice sorgente

* 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 anni fa
parent
commit
0e8829e4e2
1 ha cambiato i file con 5 aggiunte e 0 eliminazioni
  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);