Quellcode durchsuchen

* 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 vor 13 Jahren
Ursprung
Commit
0e8829e4e2
1 geänderte Dateien mit 5 neuen und 0 gelöschten Zeilen
  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);