mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 02:59:33 +02:00
+ fill the initial stack address in the MZ exe header
git-svn-id: trunk@31396 -
This commit is contained in:
parent
ea27b97f3a
commit
d2a47a7c69
@ -276,6 +276,7 @@ interface
|
|||||||
procedure WriteMap_HeaderData;
|
procedure WriteMap_HeaderData;
|
||||||
procedure FillLoadableImageSize;
|
procedure FillLoadableImageSize;
|
||||||
procedure FillStartAddress;
|
procedure FillStartAddress;
|
||||||
|
procedure FillStackAddress;
|
||||||
procedure FillHeaderData;
|
procedure FillHeaderData;
|
||||||
function writeExe:boolean;
|
function writeExe:boolean;
|
||||||
function writeCom:boolean;
|
function writeCom:boolean;
|
||||||
@ -2152,6 +2153,7 @@ implementation
|
|||||||
begin
|
begin
|
||||||
exemap.AddHeader('Header data');
|
exemap.AddHeader('Header data');
|
||||||
exemap.Add('Loadable image size: '+HexStr(Header.LoadableImageSize,8));
|
exemap.Add('Loadable image size: '+HexStr(Header.LoadableImageSize,8));
|
||||||
|
exemap.Add('Initial stack pointer: '+HexStr(Header.InitialSS,4)+':'+HexStr(Header.InitialSP,4));
|
||||||
exemap.Add('Entry point address: '+HexStr(Header.InitialCS,4)+':'+HexStr(Header.InitialIP,4));
|
exemap.Add('Entry point address: '+HexStr(Header.InitialCS,4)+':'+HexStr(Header.InitialIP,4));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -2189,11 +2191,29 @@ implementation
|
|||||||
Header.InitialCS:=EntryMemBasePos shr 4;
|
Header.InitialCS:=EntryMemBasePos shr 4;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TMZExeOutput.FillStackAddress;
|
||||||
|
var
|
||||||
|
stackseg: TMZExeUnifiedLogicalSegment;
|
||||||
|
begin
|
||||||
|
stackseg:=TMZExeUnifiedLogicalSegment(ExeUnifiedLogicalSegments.Find('STACK||STACK'));
|
||||||
|
if assigned(stackseg) then
|
||||||
|
begin
|
||||||
|
Header.InitialSS:=stackseg.MemBasePos shr 4;
|
||||||
|
Header.InitialSP:=stackseg.MemPos+stackseg.Size-stackseg.MemBasePos-2;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
Header.InitialSS:=0;
|
||||||
|
Header.InitialSP:=0;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TMZExeOutput.FillHeaderData;
|
procedure TMZExeOutput.FillHeaderData;
|
||||||
begin
|
begin
|
||||||
Header.MaxExtraParagraphs:=$FFFF;
|
Header.MaxExtraParagraphs:=$FFFF;
|
||||||
FillLoadableImageSize;
|
FillLoadableImageSize;
|
||||||
FillStartAddress;
|
FillStartAddress;
|
||||||
|
FillStackAddress;
|
||||||
if assigned(exemap) then
|
if assigned(exemap) then
|
||||||
WriteMap_HeaderData;
|
WriteMap_HeaderData;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user