mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-17 13:59:29 +02:00
* fix/pretty print the segment and group list with too long segment/group/class
names in the linker map file, produced by the i8086 internal linker git-svn-id: trunk@39228 -
This commit is contained in:
parent
8af56ad6c8
commit
480eedac9f
@ -2408,30 +2408,49 @@ implementation
|
||||
|
||||
procedure TMZExeOutput.WriteMap_SegmentsAndGroups;
|
||||
var
|
||||
i: Integer;
|
||||
i, LongestGroupName, LongestSegmentName, LongestClassName: Integer;
|
||||
UniSeg: TMZExeUnifiedLogicalSegment;
|
||||
UniGrp: TMZExeUnifiedLogicalGroup;
|
||||
GroupColumnSize, SegmentColumnSize, ClassColumnSize: LongInt;
|
||||
begin
|
||||
LongestGroupName:=0;
|
||||
for i:=0 to ExeUnifiedLogicalGroups.Count-1 do
|
||||
begin
|
||||
UniGrp:=TMZExeUnifiedLogicalGroup(ExeUnifiedLogicalGroups[i]);
|
||||
LongestGroupName:=max(LongestGroupName,Length(UniGrp.Name));
|
||||
end;
|
||||
LongestSegmentName:=0;
|
||||
LongestClassName:=0;
|
||||
for i:=0 to ExeUnifiedLogicalSegments.Count-1 do
|
||||
begin
|
||||
UniSeg:=TMZExeUnifiedLogicalSegment(ExeUnifiedLogicalSegments[i]);
|
||||
LongestSegmentName:=max(LongestSegmentName,Length(UniSeg.SegName));
|
||||
LongestClassName:=max(LongestClassName,Length(UniSeg.SegClass));
|
||||
end;
|
||||
GroupColumnSize:=max(32,LongestGroupName+1);
|
||||
SegmentColumnSize:=max(23,LongestSegmentName+1);
|
||||
ClassColumnSize:=max(15,LongestClassName+1);
|
||||
exemap.AddHeader('Groups list');
|
||||
exemap.Add('');
|
||||
exemap.Add(PadSpace('Group',32)+PadSpace('Address',21)+'Size');
|
||||
exemap.Add(PadSpace('=====',32)+PadSpace('=======',21)+'====');
|
||||
exemap.Add(PadSpace('Group',GroupColumnSize)+PadSpace('Address',21)+'Size');
|
||||
exemap.Add(PadSpace('=====',GroupColumnSize)+PadSpace('=======',21)+'====');
|
||||
exemap.Add('');
|
||||
for i:=0 to ExeUnifiedLogicalGroups.Count-1 do
|
||||
begin
|
||||
UniGrp:=TMZExeUnifiedLogicalGroup(ExeUnifiedLogicalGroups[i]);
|
||||
exemap.Add(PadSpace(UniGrp.Name,32)+PadSpace(UniGrp.MemPosStr,21)+HexStr(UniGrp.Size,8));
|
||||
exemap.Add(PadSpace(UniGrp.Name,GroupColumnSize)+PadSpace(UniGrp.MemPosStr,21)+HexStr(UniGrp.Size,8));
|
||||
end;
|
||||
exemap.Add('');
|
||||
GroupColumnSize:=max(15,LongestGroupName+1);
|
||||
exemap.AddHeader('Segments list');
|
||||
exemap.Add('');
|
||||
exemap.Add(PadSpace('Segment',23)+PadSpace('Class',15)+PadSpace('Group',15)+PadSpace('Address',16)+'Size');
|
||||
exemap.Add(PadSpace('=======',23)+PadSpace('=====',15)+PadSpace('=====',15)+PadSpace('=======',16)+'====');
|
||||
exemap.Add(PadSpace('Segment',SegmentColumnSize)+PadSpace('Class',ClassColumnSize)+PadSpace('Group',GroupColumnSize)+PadSpace('Address',16)+'Size');
|
||||
exemap.Add(PadSpace('=======',SegmentColumnSize)+PadSpace('=====',ClassColumnSize)+PadSpace('=====',GroupColumnSize)+PadSpace('=======',16)+'====');
|
||||
exemap.Add('');
|
||||
for i:=0 to ExeUnifiedLogicalSegments.Count-1 do
|
||||
begin
|
||||
UniSeg:=TMZExeUnifiedLogicalSegment(ExeUnifiedLogicalSegments[i]);
|
||||
exemap.Add(PadSpace(UniSeg.SegName,23)+PadSpace(UniSeg.SegClass,15)+PadSpace(UniSeg.PrimaryGroup,15)+PadSpace(UniSeg.MemPosStr,16)+HexStr(UniSeg.Size,8));
|
||||
exemap.Add(PadSpace(UniSeg.SegName,SegmentColumnSize)+PadSpace(UniSeg.SegClass,ClassColumnSize)+PadSpace(UniSeg.PrimaryGroup,GroupColumnSize)+PadSpace(UniSeg.MemPosStr,16)+HexStr(UniSeg.Size,8));
|
||||
end;
|
||||
exemap.Add('');
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user