Преглед на файлове

* 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 преди 12 години
родител
ревизия
0e8829e4e2
променени са 1 файла, в които са добавени 5 реда и са изтрити 0 реда
  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);