瀏覽代碼

+ implemented TNewExeOutput.GenerateLibraryImports, based on the ogcoff implementation

git-svn-id: trunk@42535 -
nickysn 6 年之前
父節點
當前提交
2b6ee838f9
共有 1 個文件被更改,包括 26 次插入0 次删除
  1. 26 0
      compiler/ogomf.pas

+ 26 - 0
compiler/ogomf.pas

@@ -473,6 +473,7 @@ interface
         constructor create;override;
         destructor destroy;override;
 
+        procedure GenerateLibraryImports(ImportLibraryList:TFPHashObjectList);override;
         function writeData:boolean;override;
       end;
 
@@ -3518,6 +3519,31 @@ cleanup:
         inherited destroy;
       end;
 
+    procedure TNewExeOutput.GenerateLibraryImports(ImportLibraryList: TFPHashObjectList);
+      var
+        i,j: longint;
+        ImportLibrary: TImportLibrary;
+        ImportSymbol: TImportSymbol;
+        exesym: TExeSymbol;
+      begin
+        for i:=0 to ImportLibraryList.Count-1 do
+          begin
+            ImportLibrary:=TImportLibrary(ImportLibraryList[i]);
+            for j:=0 to ImportLibrary.ImportSymbolList.Count-1 do
+              begin
+                ImportSymbol:=TImportSymbol(ImportLibrary.ImportSymbolList[j]);
+                exesym:=TExeSymbol(ExeSymbolList.Find(ImportSymbol.MangledName));
+                if assigned(exesym) and
+                   (exesym.State<>symstate_defined) then
+                  begin
+                    ImportSymbol.CachedExeSymbol:=exesym;
+                    exesym.State:=symstate_defined;
+                  end;
+              end;
+          end;
+        PackUnresolvedExeSymbols('after DLL imports');
+      end;
+
     function TNewExeOutput.writeData: boolean;
       begin
         {todo}