From 173713ce57b352c304c06f2ba6cbf0659258fa4f Mon Sep 17 00:00:00 2001 From: nickysn Date: Mon, 24 Aug 2015 00:30:24 +0000 Subject: [PATCH] * preserve original order (as specified in the link script) of omf sections with the same name. This ensures that the startup code always comes first, which is important for .com files git-svn-id: trunk@31377 - --- compiler/ogomf.pas | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/compiler/ogomf.pas b/compiler/ogomf.pas index e345cfd9b2..163346b2c3 100644 --- a/compiler/ogomf.pas +++ b/compiler/ogomf.pas @@ -67,6 +67,7 @@ interface FCombination: TOmfSegmentCombination; FUse: TOmfSegmentUse; FPrimaryGroup: string; + FSortOrder: Integer; FMZExeUnifiedLogicalSegment: TMZExeUnifiedLogicalSegment; function GetOmfAlignment: TOmfSegmentAlignment; public @@ -78,6 +79,7 @@ interface property Combination: TOmfSegmentCombination read FCombination; property Use: TOmfSegmentUse read FUse; property PrimaryGroup: string read FPrimaryGroup; + property SortOrder: Integer read FSortOrder write FSortOrder; property MZExeUnifiedLogicalSegment: TMZExeUnifiedLogicalSegment read FMZExeUnifiedLogicalSegment write FMZExeUnifiedLogicalSegment; end; @@ -2106,10 +2108,16 @@ implementation Result:=CompareStr(I1.ClassName,I2.ClassName); if Result=0 then Result:=CompareStr(I1.Name,I2.Name); + if Result=0 then + Result:=I1.SortOrder-I2.SortOrder; end; procedure TMZExeOutput.Order_ObjSectionList(ObjSectionList: TFPObjectList; const aPattern: string); + var + i: Integer; begin + for i:=0 to ObjSectionList.Count-1 do + TOmfObjSection(ObjSectionList[i]).SortOrder:=i; ObjSectionList.Sort(@IOmfObjSectionClassNameCompare); end;