From d8f04418be82f002eb67b078ffec7b6c21cc80b7 Mon Sep 17 00:00:00 2001 From: nickysn Date: Thu, 9 Apr 2015 23:27:45 +0000 Subject: [PATCH] + write EXTDEF records in the omf output file git-svn-id: trunk@30527 - --- compiler/ogomf.pas | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/compiler/ogomf.pas b/compiler/ogomf.pas index 4cf29ddf9c..6151c796a0 100644 --- a/compiler/ogomf.pas +++ b/compiler/ogomf.pas @@ -103,6 +103,7 @@ interface procedure section_count_sections(p:TObject;arg:pointer); procedure WritePUBDEFs(Data: TObjData); + procedure WriteEXTDEFs(Data: TObjData); property LNames: TOmfOrderedNameCollection read FLNames; property Segments: TFPHashObjectList read FSegments; @@ -549,6 +550,46 @@ implementation RawRecord.Free; end; + procedure TOmfObjOutput.WriteEXTDEFs(Data: TObjData); + var + ExtNames: TFPHashObjectList; + RawRecord: TOmfRawRecord; + i,idx: Integer; + objsym: TObjSymbol; + ExternalNameElem: TOmfExternalNameElement; + ExtDefRec: TOmfRecord_EXTDEF; + begin + ExtNames:=TFPHashObjectList.Create; + RawRecord:=TOmfRawRecord.Create; + + idx:=1; + for i:=0 to Data.ObjSymbolList.Count-1 do + begin + objsym:=TObjSymbol(Data.ObjSymbolList[i]); + if objsym.bind=AB_EXTERNAL then + begin + ExternalNameElem:=TOmfExternalNameElement.Create(ExtNames,objsym.Name); + objsym.symidx:=idx; + Inc(idx); + end; + end; + + if ExtNames.Count>0 then + begin + ExtDefRec:=TOmfRecord_EXTDEF.Create; + ExtDefRec.ExternalNames:=ExtNames; + while ExtDefRec.NextIndex