mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-06 13:39:17 +02:00
FpDebug: asm-unwind, store "pushed frame" info for branch-points
This commit is contained in:
parent
51eca6e940
commit
10254a7769
@ -5559,8 +5559,10 @@ type
|
||||
TAlternativeAddressPoint = record
|
||||
Address: TDBGPtr;
|
||||
Frame, Stack: TDBGPtr;
|
||||
PushedNewFrame, PushedNewFrameAddr: TDBGPtr;
|
||||
end;
|
||||
var
|
||||
PushedNewFrame, PushedNewFrameAddr: TDBGPtr;
|
||||
AddressDoneBlocks: array [0..MAX_ADDR_DONE_BLOCKS] of record
|
||||
First, Last: TDBGPtr;
|
||||
end;
|
||||
@ -5574,6 +5576,8 @@ var
|
||||
AltAddrPoint.Address := AnAddr;
|
||||
AltAddrPoint.Stack := NewStack;
|
||||
AltAddrPoint.Frame := NewFrame;
|
||||
AltAddrPoint.PushedNewFrame := PushedNewFrame;
|
||||
AltAddrPoint.PushedNewFrameAddr := PushedNewFrameAddr;
|
||||
end;
|
||||
|
||||
procedure ContinueAt(const AltAddrPoint: TAlternativeAddressPoint); inline;
|
||||
@ -5581,6 +5585,8 @@ var
|
||||
NewAddr := AltAddrPoint.Address;
|
||||
NewStack := AltAddrPoint.Stack;
|
||||
NewFrame := AltAddrPoint.Frame;
|
||||
PushedNewFrame := AltAddrPoint.PushedNewFrame;
|
||||
PushedNewFrameAddr := AltAddrPoint.PushedNewFrameAddr;
|
||||
end;
|
||||
|
||||
function AddrWasDone(AnAddr: TDBGPtr): boolean; inline;
|
||||
@ -5660,9 +5666,7 @@ var
|
||||
|
||||
if CurConditionalForwardAddr < MAX_FORWARD_ADDR then begin
|
||||
inc(CurConditionalForwardAddr);
|
||||
ConditionalForwardAddr[CurConditionalForwardAddr].Address := AnAddr;
|
||||
ConditionalForwardAddr[CurConditionalForwardAddr].Stack := NewStack;
|
||||
ConditionalForwardAddr[CurConditionalForwardAddr].Frame := NewFrame;
|
||||
StoreAltAddr(ConditionalForwardAddr[CurConditionalForwardAddr], AnAddr);
|
||||
end
|
||||
else begin
|
||||
j := 0;
|
||||
@ -5676,9 +5680,7 @@ var
|
||||
CurConditionalForwardAddr := j - 1;
|
||||
if CurConditionalForwardAddr < MAX_FORWARD_ADDR then
|
||||
inc(CurConditionalForwardAddr);
|
||||
ConditionalForwardAddr[CurConditionalForwardAddr].Address := AnAddr;
|
||||
ConditionalForwardAddr[CurConditionalForwardAddr].Stack := NewStack;
|
||||
ConditionalForwardAddr[CurConditionalForwardAddr].Frame := NewFrame;
|
||||
StoreAltAddr(ConditionalForwardAddr[CurConditionalForwardAddr], AnAddr);
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -5691,7 +5693,6 @@ var
|
||||
Val: Int64;
|
||||
ClearRecValList, ForceDifferentBranch: Boolean;
|
||||
FullName: String;
|
||||
PushedNewFrame, PushedNewFrameAddr: TDBGPtr;
|
||||
begin
|
||||
Result := False;
|
||||
NewAddr := AnAddress;
|
||||
|
Loading…
Reference in New Issue
Block a user