mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 10:29:24 +02:00
+ 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:
parent
262cecf528
commit
4b54cbea1e
@ -114,6 +114,7 @@ interface
|
|||||||
function reffardatasection:TObjSection;
|
function reffardatasection:TObjSection;
|
||||||
procedure writeReloc(Data:TRelocDataInt;len:aword;p:TObjSymbol;Reloctype:TObjRelocationType);override;
|
procedure writeReloc(Data:TRelocDataInt;len:aword;p:TObjSymbol;Reloctype:TObjRelocationType);override;
|
||||||
procedure AddImportSymbol(const libname,symname,symmangledname:TCmdStr;OrdNr: longint;isvar:boolean);
|
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 MainSource: TPathStr read FMainSource;
|
||||||
property ImportLibraryList:TFPHashObjectList read FImportLibraryList;
|
property ImportLibraryList:TFPHashObjectList read FImportLibraryList;
|
||||||
end;
|
end;
|
||||||
@ -172,7 +173,7 @@ interface
|
|||||||
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; 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;
|
function ImportOmfFixup(objdata: TObjData; objsec: TOmfObjSection; Fixup: TOmfSubRecord_FIXUP): Boolean;
|
||||||
|
|
||||||
property LNames: TOmfOrderedNameCollection read FLNames;
|
property LNames: TOmfOrderedNameCollection read FLNames;
|
||||||
@ -1107,6 +1108,14 @@ implementation
|
|||||||
ImportSymbol:=TImportSymbol.Create(ImportLibrary.ImportSymbolList,symname,symmangledname,OrdNr,isvar);
|
ImportSymbol:=TImportSymbol.Create(ImportLibrary.ImportSymbolList,symname,symmangledname,OrdNr,isvar);
|
||||||
end;
|
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
|
TOmfObjOutput
|
||||||
****************************************************************************}
|
****************************************************************************}
|
||||||
@ -2068,10 +2077,26 @@ implementation
|
|||||||
ImpDefRec.Free;
|
ImpDefRec.Free;
|
||||||
end;
|
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
|
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;
|
Result:=True;
|
||||||
|
ExpDefRec.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TOmfObjInput.ImportOmfFixup(objdata: TObjData; objsec: TOmfObjSection; Fixup: TOmfSubRecord_FIXUP): Boolean;
|
function TOmfObjInput.ImportOmfFixup(objdata: TObjData; objsec: TOmfObjSection; Fixup: TOmfSubRecord_FIXUP): Boolean;
|
||||||
@ -2462,7 +2487,7 @@ implementation
|
|||||||
if not ReadImpDef(FCOMENTRecord,objdata) then
|
if not ReadImpDef(FCOMENTRecord,objdata) then
|
||||||
exit;
|
exit;
|
||||||
CC_OmfExtension_EXPDEF:
|
CC_OmfExtension_EXPDEF:
|
||||||
if not ReadExpDef(FCOMENTRecord) then
|
if not ReadExpDef(FCOMENTRecord,objdata) then
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user