Browse Source

+ call TOmfObjData.AddImportSymbol for every ImpDef record read from an object file

git-svn-id: trunk@42543 -
nickysn 6 years ago
parent
commit
d77a8fb5f4
1 changed files with 7 additions and 4 deletions
  1. 7 4
      compiler/ogomf.pas

+ 7 - 4
compiler/ogomf.pas

@@ -171,7 +171,7 @@ interface
         function ReadPubDef(RawRec: TOmfRawRecord; objdata:TObjData): Boolean;
         function ReadPubDef(RawRec: TOmfRawRecord; objdata:TObjData): Boolean;
         function ReadModEnd(RawRec: TOmfRawRecord; objdata:TObjData): Boolean;
         function ReadModEnd(RawRec: TOmfRawRecord; objdata:TObjData): Boolean;
         function ReadLeOrLiDataAndFixups(RawRec: TOmfRawRecord; objdata:TObjData): Boolean;
         function ReadLeOrLiDataAndFixups(RawRec: TOmfRawRecord; objdata:TObjData): Boolean;
-        function ReadImpDef(Rec: TOmfRecord_COMENT): Boolean;
+        function ReadImpDef(Rec: TOmfRecord_COMENT; objdata:TObjData): Boolean;
         function ReadExpDef(Rec: TOmfRecord_COMENT): Boolean;
         function ReadExpDef(Rec: TOmfRecord_COMENT): Boolean;
         function ImportOmfFixup(objdata: TObjData; objsec: TOmfObjSection; Fixup: TOmfSubRecord_FIXUP): Boolean;
         function ImportOmfFixup(objdata: TObjData; objsec: TOmfObjSection; Fixup: TOmfSubRecord_FIXUP): Boolean;
 
 
@@ -1876,13 +1876,16 @@ implementation
         Result:=True;
         Result:=True;
       end;
       end;
 
 
-    function TOmfObjInput.ReadImpDef(Rec: TOmfRecord_COMENT): Boolean;
+    function TOmfObjInput.ReadImpDef(Rec: TOmfRecord_COMENT; objdata: TObjData): Boolean;
       var
       var
         ImpDefRec: TOmfRecord_COMENT_IMPDEF;
         ImpDefRec: TOmfRecord_COMENT_IMPDEF;
       begin
       begin
         ImpDefRec:=TOmfRecord_COMENT_IMPDEF.Create;
         ImpDefRec:=TOmfRecord_COMENT_IMPDEF.Create;
         ImpDefRec.DecodeFrom(Rec);
         ImpDefRec.DecodeFrom(Rec);
-        {todo: implement}
+        if ImpDefRec.ImportByOrdinal then
+          TOmfObjData(objdata).AddImportSymbol(ImpDefRec.ModuleName,'',ImpDefRec.InternalName,ImpDefRec.Ordinal,false)
+        else
+          TOmfObjData(objdata).AddImportSymbol(ImpDefRec.ModuleName,ImpDefRec.Name,ImpDefRec.InternalName,0,false);
         Result:=True;
         Result:=True;
         ImpDefRec.Free;
         ImpDefRec.Free;
       end;
       end;
@@ -2278,7 +2281,7 @@ implementation
                         begin
                         begin
                           case Ord(FCOMENTRecord.CommentString[1]) of
                           case Ord(FCOMENTRecord.CommentString[1]) of
                             CC_OmfExtension_IMPDEF:
                             CC_OmfExtension_IMPDEF:
-                              if not ReadImpDef(FCOMENTRecord) then
+                              if not ReadImpDef(FCOMENTRecord,objdata) then
                                 exit;
                                 exit;
                             CC_OmfExtension_EXPDEF:
                             CC_OmfExtension_EXPDEF:
                               if not ReadExpDef(FCOMENTRecord) then
                               if not ReadExpDef(FCOMENTRecord) then