Browse Source

* changed the type of TOmfObjSection.PrimaryGroup from string to
TObjSectionGroup, so instead of holding the group's name, it now points to the
TObjSectionGroup object, from which you can retrieve its name or any of the
other fields and properties it contains

git-svn-id: trunk@39271 -

nickysn 7 years ago
parent
commit
9a0eca52cb
1 changed files with 11 additions and 13 deletions
  1. 11 13
      compiler/ogomf.pas

+ 11 - 13
compiler/ogomf.pas

@@ -75,7 +75,7 @@ interface
         FOverlayName: string;
         FOverlayName: string;
         FCombination: TOmfSegmentCombination;
         FCombination: TOmfSegmentCombination;
         FUse: TOmfSegmentUse;
         FUse: TOmfSegmentUse;
-        FPrimaryGroup: string;
+        FPrimaryGroup: TObjSectionGroup;
         FSortOrder: Integer;
         FSortOrder: Integer;
         FMZExeUnifiedLogicalSegment: TMZExeUnifiedLogicalSegment;
         FMZExeUnifiedLogicalSegment: TMZExeUnifiedLogicalSegment;
         FLinNumEntries: TOmfSubRecord_LINNUM_MsLink_LineNumberList;
         FLinNumEntries: TOmfSubRecord_LINNUM_MsLink_LineNumberList;
@@ -89,7 +89,7 @@ interface
         property OmfAlignment: TOmfSegmentAlignment read GetOmfAlignment;
         property OmfAlignment: TOmfSegmentAlignment read GetOmfAlignment;
         property Combination: TOmfSegmentCombination read FCombination;
         property Combination: TOmfSegmentCombination read FCombination;
         property Use: TOmfSegmentUse read FUse;
         property Use: TOmfSegmentUse read FUse;
-        property PrimaryGroup: string read FPrimaryGroup;
+        property PrimaryGroup: TObjSectionGroup read FPrimaryGroup;
         property SortOrder: Integer read FSortOrder write FSortOrder;
         property SortOrder: Integer read FSortOrder write FSortOrder;
         property MZExeUnifiedLogicalSegment: TMZExeUnifiedLogicalSegment read FMZExeUnifiedLogicalSegment write FMZExeUnifiedLogicalSegment;
         property MZExeUnifiedLogicalSegment: TMZExeUnifiedLogicalSegment read FMZExeUnifiedLogicalSegment write FMZExeUnifiedLogicalSegment;
         property LinNumEntries: TOmfSubRecord_LINNUM_MsLink_LineNumberList read FLinNumEntries;
         property LinNumEntries: TOmfSubRecord_LINNUM_MsLink_LineNumberList read FLinNumEntries;
@@ -438,10 +438,10 @@ implementation
               begin
               begin
                 FOmfFixup.TargetMethod:=ftmSegmentIndexNoDisp;
                 FOmfFixup.TargetMethod:=ftmSegmentIndexNoDisp;
                 FOmfFixup.TargetDatum:=ObjSection.Index;
                 FOmfFixup.TargetDatum:=ObjSection.Index;
-                if TOmfObjSection(ObjSection).PrimaryGroup<>'' then
+                if TOmfObjSection(ObjSection).PrimaryGroup<>nil then
                   begin
                   begin
                     FOmfFixup.FrameMethod:=ffmGroupIndex;
                     FOmfFixup.FrameMethod:=ffmGroupIndex;
-                    FOmfFixup.FrameDatum:=GetGroupIndex(TOmfObjSection(ObjSection).PrimaryGroup);
+                    FOmfFixup.FrameDatum:=GetGroupIndex(TOmfObjSection(ObjSection).PrimaryGroup.Name);
                   end
                   end
                 else
                 else
                   FOmfFixup.FrameMethod:=ffmTarget;
                   FOmfFixup.FrameMethod:=ffmTarget;
@@ -449,10 +449,10 @@ implementation
             else
             else
               begin
               begin
                 FOmfFixup.FrameMethod:=ffmTarget;
                 FOmfFixup.FrameMethod:=ffmTarget;
-                if TOmfObjSection(ObjSection).PrimaryGroup<>'' then
+                if TOmfObjSection(ObjSection).PrimaryGroup<>nil then
                   begin
                   begin
                     FOmfFixup.TargetMethod:=ftmGroupIndexNoDisp;
                     FOmfFixup.TargetMethod:=ftmGroupIndexNoDisp;
-                    FOmfFixup.TargetDatum:=GetGroupIndex(TOmfObjSection(ObjSection).PrimaryGroup);
+                    FOmfFixup.TargetDatum:=GetGroupIndex(TOmfObjSection(ObjSection).PrimaryGroup.Name);
                   end
                   end
                 else
                 else
                   begin
                   begin
@@ -661,7 +661,7 @@ implementation
             { add the current section to the group }
             { add the current section to the group }
             SetLength(grp.members,Length(grp.members)+1);
             SetLength(grp.members,Length(grp.members)+1);
             grp.members[High(grp.members)]:=Result;
             grp.members[High(grp.members)]:=Result;
-            TOmfObjSection(Result).FPrimaryGroup:=primary_group;
+            TOmfObjSection(Result).FPrimaryGroup:=grp;
           end;
           end;
       end;
       end;
 
 
@@ -949,7 +949,6 @@ implementation
         PublicNameElem: TOmfPublicNameElement;
         PublicNameElem: TOmfPublicNameElement;
         RawRecord: TOmfRawRecord;
         RawRecord: TOmfRawRecord;
         PubDefRec: TOmfRecord_PUBDEF;
         PubDefRec: TOmfRecord_PUBDEF;
-        PrimaryGroupName: string;
       begin
       begin
         RawRecord:=TOmfRawRecord.Create;
         RawRecord:=TOmfRawRecord.Create;
         SetLength(PubNamesForSection,Data.ObjSectionList.Count);
         SetLength(PubNamesForSection,Data.ObjSectionList.Count);
@@ -978,9 +977,8 @@ implementation
             begin
             begin
               PubDefRec:=TOmfRecord_PUBDEF.Create;
               PubDefRec:=TOmfRecord_PUBDEF.Create;
               PubDefRec.BaseSegmentIndex:=i+1;
               PubDefRec.BaseSegmentIndex:=i+1;
-              PrimaryGroupName:=TOmfObjSection(Data.ObjSectionList[i]).PrimaryGroup;
-              if PrimaryGroupName<>'' then
-                PubDefRec.BaseGroupIndex:=Groups.FindIndexOf(PrimaryGroupName)
+              if TOmfObjSection(Data.ObjSectionList[i]).PrimaryGroup<>nil then
+                PubDefRec.BaseGroupIndex:=Groups.FindIndexOf(TOmfObjSection(Data.ObjSectionList[i]).PrimaryGroup.Name)
               else
               else
                 PubDefRec.BaseGroupIndex:=0;
                 PubDefRec.BaseGroupIndex:=0;
               PubDefRec.PublicNames:=PubNamesForSection[i];
               PubDefRec.PublicNames:=PubNamesForSection[i];
@@ -1111,8 +1109,8 @@ implementation
           with TOmfObjSection(Data.ObjSectionList[I]) do
           with TOmfObjSection(Data.ObjSectionList[I]) do
             begin
             begin
               AddSegment(Name,ClassName,OverlayName,OmfAlignment,Combination,Use,Size);
               AddSegment(Name,ClassName,OverlayName,OmfAlignment,Combination,Use,Size);
-              if PrimaryGroup<>'' then
-                AddSegmentToGroup(PrimaryGroup,index);
+              if PrimaryGroup<>nil then
+                AddSegmentToGroup(PrimaryGroup.Name,index);
             end;
             end;
 
 
         { write LNAMES record(s) }
         { write LNAMES record(s) }