|
@@ -62,6 +62,7 @@ interface
|
|
FOmfAlignment: TOmfSegmentAlignment;
|
|
FOmfAlignment: TOmfSegmentAlignment;
|
|
FCombination: TOmfSegmentCombination;
|
|
FCombination: TOmfSegmentCombination;
|
|
FUse: TOmfSegmentUse;
|
|
FUse: TOmfSegmentUse;
|
|
|
|
+ FPrimaryGroup: string;
|
|
public
|
|
public
|
|
constructor create(AList:TFPHashObjectList;const Aname:string;Aalign:shortint;Aoptions:TObjSectionOptions);override;
|
|
constructor create(AList:TFPHashObjectList;const Aname:string;Aalign:shortint;Aoptions:TObjSectionOptions);override;
|
|
property ClassName: string read FClassName;
|
|
property ClassName: string read FClassName;
|
|
@@ -69,6 +70,7 @@ interface
|
|
property OmfAlignment: TOmfSegmentAlignment read FOmfAlignment;
|
|
property OmfAlignment: TOmfSegmentAlignment read FOmfAlignment;
|
|
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;
|
|
end;
|
|
end;
|
|
|
|
|
|
{ TOmfObjData }
|
|
{ TOmfObjData }
|
|
@@ -152,33 +154,51 @@ implementation
|
|
|
|
|
|
constructor TOmfObjSection.create(AList: TFPHashObjectList;
|
|
constructor TOmfObjSection.create(AList: TFPHashObjectList;
|
|
const Aname: string; Aalign: shortint; Aoptions: TObjSectionOptions);
|
|
const Aname: string; Aalign: shortint; Aoptions: TObjSectionOptions);
|
|
|
|
+ var
|
|
|
|
+ dgroup: Boolean;
|
|
begin
|
|
begin
|
|
inherited create(AList, Aname, Aalign, Aoptions);
|
|
inherited create(AList, Aname, Aalign, Aoptions);
|
|
FCombination:=scPublic;
|
|
FCombination:=scPublic;
|
|
FUse:=suUse16;
|
|
FUse:=suUse16;
|
|
FOmfAlignment:=saRelocatableByteAligned;
|
|
FOmfAlignment:=saRelocatableByteAligned;
|
|
if oso_executable in Aoptions then
|
|
if oso_executable in Aoptions then
|
|
- FClassName:='code'
|
|
|
|
|
|
+ begin
|
|
|
|
+ FClassName:='code';
|
|
|
|
+ dgroup:=(current_settings.x86memorymodel=mm_tiny);
|
|
|
|
+ end
|
|
else if Aname='stack' then
|
|
else if Aname='stack' then
|
|
begin
|
|
begin
|
|
FClassName:='stack';
|
|
FClassName:='stack';
|
|
FCombination:=scStack;
|
|
FCombination:=scStack;
|
|
FOmfAlignment:=saRelocatableParaAligned;
|
|
FOmfAlignment:=saRelocatableParaAligned;
|
|
|
|
+ dgroup:=current_settings.x86memorymodel in (x86_near_data_models-[mm_tiny]);
|
|
end
|
|
end
|
|
else if Aname='heap' then
|
|
else if Aname='heap' then
|
|
begin
|
|
begin
|
|
FClassName:='heap';
|
|
FClassName:='heap';
|
|
FOmfAlignment:=saRelocatableParaAligned;
|
|
FOmfAlignment:=saRelocatableParaAligned;
|
|
|
|
+ dgroup:=current_settings.x86memorymodel in x86_near_data_models;
|
|
end
|
|
end
|
|
else if Aname='bss' then
|
|
else if Aname='bss' then
|
|
- FClassName:='bss'
|
|
|
|
|
|
+ begin
|
|
|
|
+ FClassName:='bss';
|
|
|
|
+ dgroup:=true;
|
|
|
|
+ end
|
|
else if Aname='data' then
|
|
else if Aname='data' then
|
|
begin
|
|
begin
|
|
FClassName:='data';
|
|
FClassName:='data';
|
|
FOmfAlignment:=saRelocatableWordAligned;
|
|
FOmfAlignment:=saRelocatableWordAligned;
|
|
|
|
+ dgroup:=true;
|
|
end
|
|
end
|
|
else
|
|
else
|
|
- FClassName:='data';
|
|
|
|
|
|
+ begin
|
|
|
|
+ FClassName:='data';
|
|
|
|
+ dgroup:=true;
|
|
|
|
+ end;
|
|
|
|
+ if dgroup then
|
|
|
|
+ FPrimaryGroup:='dgroup'
|
|
|
|
+ else
|
|
|
|
+ FPrimaryGroup:='';
|
|
end;
|
|
end;
|
|
|
|
|
|
{****************************************************************************
|
|
{****************************************************************************
|