+ parse ExpDef OMF records and delegate them to a new method

TOmfObjData.AddExportSymbol (not implemented yet)

git-svn-id: trunk@42621 -
This commit is contained in:
nickysn 2019-08-09 17:08:11 +00:00
parent 262cecf528
commit 4b54cbea1e

View File

@ -114,6 +114,7 @@ interface
function reffardatasection:TObjSection;
procedure writeReloc(Data:TRelocDataInt;len:aword;p:TObjSymbol;Reloctype:TObjRelocationType);override;
procedure AddImportSymbol(const libname,symname,symmangledname:TCmdStr;OrdNr: longint;isvar:boolean);
procedure AddExportSymbol(aExportByOrdinal,aResidentName,aNoData:Boolean;aParmCount:Integer;aExportedName,aInternalName:string;ExportOrdinal:Word);
property MainSource: TPathStr read FMainSource;
property ImportLibraryList:TFPHashObjectList read FImportLibraryList;
end;
@ -172,7 +173,7 @@ interface
function ReadModEnd(RawRec: TOmfRawRecord; objdata:TObjData): Boolean;
function ReadLeOrLiDataAndFixups(RawRec: TOmfRawRecord; objdata:TObjData): Boolean;
function ReadImpDef(Rec: TOmfRecord_COMENT; objdata:TObjData): Boolean;
function ReadExpDef(Rec: TOmfRecord_COMENT): Boolean;
function ReadExpDef(Rec: TOmfRecord_COMENT; objdata:TObjData): Boolean;
function ImportOmfFixup(objdata: TObjData; objsec: TOmfObjSection; Fixup: TOmfSubRecord_FIXUP): Boolean;
property LNames: TOmfOrderedNameCollection read FLNames;
@ -1107,6 +1108,14 @@ implementation
ImportSymbol:=TImportSymbol.Create(ImportLibrary.ImportSymbolList,symname,symmangledname,OrdNr,isvar);
end;
procedure TOmfObjData.AddExportSymbol(aExportByOrdinal, aResidentName,
aNoData: Boolean; aParmCount: Integer; aExportedName,
aInternalName: string; ExportOrdinal: Word);
begin
{ todo: implement }
//Writeln('AddExportSymbol(',aExportByOrdinal,',',aResidentName,',',aNoData,',',aParmCount,',',aExportedName,',',aInternalName,',',ExportOrdinal,')');
end;
{****************************************************************************
TOmfObjOutput
****************************************************************************}
@ -2068,10 +2077,26 @@ implementation
ImpDefRec.Free;
end;
function TOmfObjInput.ReadExpDef(Rec: TOmfRecord_COMENT): Boolean;
function TOmfObjInput.ReadExpDef(Rec: TOmfRecord_COMENT; objdata: TObjData): Boolean;
var
ExpDefRec: TOmfRecord_COMENT_EXPDEF;
SymName: string;
begin
{todo: implement}
ExpDefRec:=TOmfRecord_COMENT_EXPDEF.Create;
ExpDefRec.DecodeFrom(Rec);
SymName:=ExpDefRec.InternalName;
if not CaseSensitiveSymbols then
SymName:=UpCase(SymName);
TOmfObjData(objdata).AddExportSymbol(
ExpDefRec.ExportByOrdinal,
ExpDefRec.ResidentName,
ExpDefRec.NoData,
ExpDefRec.ParmCount,
ExpDefRec.ExportedName,
SymName,
ExpDefRec.ExportOrdinal);
Result:=True;
ExpDefRec.Free;
end;
function TOmfObjInput.ImportOmfFixup(objdata: TObjData; objsec: TOmfObjSection; Fixup: TOmfSubRecord_FIXUP): Boolean;
@ -2462,7 +2487,7 @@ implementation
if not ReadImpDef(FCOMENTRecord,objdata) then
exit;
CC_OmfExtension_EXPDEF:
if not ReadExpDef(FCOMENTRecord) then
if not ReadExpDef(FCOMENTRecord,objdata) then
exit;
end;
end;