mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2026-01-04 16:40:43 +01:00
+ obtain and return the internal module name in brackets in the internal omf
library reader (just like the internal .ar reader does) git-svn-id: trunk@31355 -
This commit is contained in:
parent
808b5dfb78
commit
157345c9c2
@ -78,10 +78,12 @@ type
|
||||
LibSymbols : TFPHashObjectList;
|
||||
islib: boolean;
|
||||
CurrMemberPos : longint;
|
||||
CurrMemberName : string;
|
||||
FPageSize: Integer;
|
||||
procedure ReadLibrary;
|
||||
procedure ReadDictionary(DictionaryOffset: DWord; DictionarySizeInBlocks: Word);
|
||||
protected
|
||||
function getfilename:string;override;
|
||||
function GetPos: longint;override;
|
||||
function GetIsArchive: boolean;override;
|
||||
public
|
||||
@ -404,6 +406,13 @@ implementation
|
||||
end;
|
||||
end;
|
||||
|
||||
function TOmfLibObjectReader.getfilename: string;
|
||||
begin
|
||||
Result:=inherited getfilename;
|
||||
if CurrMemberName<>'' then
|
||||
result:=result+'('+CurrMemberName+')';
|
||||
end;
|
||||
|
||||
function TOmfLibObjectReader.GetPos: longint;
|
||||
begin
|
||||
result:=inherited GetPos-CurrMemberPos;
|
||||
@ -421,6 +430,7 @@ implementation
|
||||
inherited Create;
|
||||
LibSymbols:=TFPHashObjectList.Create(true);
|
||||
CurrMemberPos:=0;
|
||||
CurrMemberName:='';
|
||||
if inherited openfile(Aarfn) then
|
||||
begin
|
||||
Read(RecType,1);
|
||||
@ -443,6 +453,8 @@ implementation
|
||||
function TOmfLibObjectReader.openfile(const fn: string): boolean;
|
||||
var
|
||||
libsym: TOmfLibDictionaryEntry;
|
||||
RawRec: TOmfRawRecord;
|
||||
Header: TOmfRecord_THEADR;
|
||||
begin
|
||||
result:=false;
|
||||
libsym:=TOmfLibDictionaryEntry(LibSymbols.Find(ModName2DictEntry(fn)));
|
||||
@ -450,12 +462,25 @@ implementation
|
||||
exit;
|
||||
CurrMemberPos:=libsym.PageNum*FPageSize;
|
||||
inherited Seek(CurrMemberPos);
|
||||
|
||||
{ read the header, to obtain the module name }
|
||||
RawRec:=TOmfRawRecord.Create;
|
||||
RawRec.ReadFrom(self);
|
||||
Header:=TOmfRecord_THEADR.Create;
|
||||
Header.DecodeFrom(RawRec);
|
||||
CurrMemberName:=Header.ModuleName;
|
||||
Header.Free;
|
||||
RawRec.Free;
|
||||
|
||||
{ go back to the beginning of the file }
|
||||
inherited Seek(CurrMemberPos);
|
||||
result:=true;
|
||||
end;
|
||||
|
||||
procedure TOmfLibObjectReader.closefile;
|
||||
begin
|
||||
CurrMemberPos:=0;
|
||||
CurrMemberName:='';
|
||||
end;
|
||||
|
||||
procedure TOmfLibObjectReader.seek(len: longint);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user