Browse Source

+ added omf-specific properties to TOmfObjSection and fill them in the constructor

git-svn-id: trunk@30475 -
nickysn 10 years ago
parent
commit
c7af648d69
1 changed files with 48 additions and 0 deletions
  1. 48 0
      compiler/ogomf.pas

+ 48 - 0
compiler/ogomf.pas

@@ -56,6 +56,19 @@ interface
       { TOmfObjSection }
 
       TOmfObjSection = class(TObjSection)
+      private
+        FClassName: string;
+        FOverlayName: string;
+        FOmfAlignment: TOmfSegmentAlignment;
+        FCombination: TOmfSegmentCombination;
+        FUse: TOmfSegmentUse;
+      public
+        constructor create(AList:TFPHashObjectList;const Aname:string;Aalign:shortint;Aoptions:TObjSectionOptions);override;
+        property ClassName: string read FClassName;
+        property OverlayName: string read FOverlayName;
+        property OmfAlignment: TOmfSegmentAlignment read FOmfAlignment;
+        property Combination: TOmfSegmentCombination read FCombination;
+        property Use: TOmfSegmentUse read FUse;
       end;
 
       { TOmfObjData }
@@ -133,6 +146,41 @@ implementation
         inherited Destroy;
       end;
 
+{****************************************************************************
+                                TOmfObjSection
+****************************************************************************}
+
+    constructor TOmfObjSection.create(AList: TFPHashObjectList;
+          const Aname: string; Aalign: shortint; Aoptions: TObjSectionOptions);
+      begin
+        inherited create(AList, Aname, Aalign, Aoptions);
+        FCombination:=scPublic;
+        FUse:=suUse16;
+        FOmfAlignment:=saRelocatableByteAligned;
+        if oso_executable in Aoptions then
+          FClassName:='code'
+        else if Aname='stack' then
+          begin
+            FClassName:='stack';
+            FCombination:=scStack;
+            FOmfAlignment:=saRelocatableParaAligned;
+          end
+        else if Aname='heap' then
+          begin
+            FClassName:='heap';
+            FOmfAlignment:=saRelocatableParaAligned;
+          end
+        else if Aname='bss' then
+          FClassName:='bss'
+        else if Aname='data' then
+          begin
+            FClassName:='data';
+            FOmfAlignment:=saRelocatableWordAligned;
+          end
+        else
+          FClassName:='data';
+      end;
+
 {****************************************************************************
                                 TOmfObjData
 ****************************************************************************}