mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-16 20:09:10 +02:00
FpDebug: fix callstack eval, after CFI ended.
This commit is contained in:
parent
f4e3f0e7e7
commit
ae209a52a4
@ -3002,7 +3002,7 @@ var
|
|||||||
Address, FrameBase, LastFrameBase, Dummy: QWord;
|
Address, FrameBase, LastFrameBase, Dummy: QWord;
|
||||||
Size, CountNeeded, IP, BP, CodeReadErrCnt, SP, i: integer;
|
Size, CountNeeded, IP, BP, CodeReadErrCnt, SP, i: integer;
|
||||||
AnEntry, NewEntry: TDbgCallstackEntry;
|
AnEntry, NewEntry: TDbgCallstackEntry;
|
||||||
R: TDbgRegisterValue;
|
R, StackReg, FrameReg: TDbgRegisterValue;
|
||||||
nIP, nBP, nSP: String;
|
nIP, nBP, nSP: String;
|
||||||
NextIdx: LongInt;
|
NextIdx: LongInt;
|
||||||
OutSideFrame: Boolean;
|
OutSideFrame: Boolean;
|
||||||
@ -3090,6 +3090,13 @@ begin
|
|||||||
Break;
|
Break;
|
||||||
FCallStackEntryList.Add(NewEntry);
|
FCallStackEntryList.Add(NewEntry);
|
||||||
Address := NewEntry.AnAddress;
|
Address := NewEntry.AnAddress;
|
||||||
|
StackReg := NewEntry.RegisterValueList.FindRegisterByDwarfIndex(SP);
|
||||||
|
FrameReg := NewEntry.RegisterValueList.FindRegisterByDwarfIndex(BP);
|
||||||
|
StackPtr := 0;
|
||||||
|
if (StackReg <> nil) and (FrameReg <> nil) then begin
|
||||||
|
StackPtr := StackReg.FNumValue;
|
||||||
|
FrameBase := FrameReg.FNumValue;
|
||||||
|
end;
|
||||||
AnEntry := NewEntry;
|
AnEntry := NewEntry;
|
||||||
Dec(CountNeeded);
|
Dec(CountNeeded);
|
||||||
inc(NextIdx);
|
inc(NextIdx);
|
||||||
@ -3098,6 +3105,8 @@ begin
|
|||||||
end
|
end
|
||||||
else if (FrameBase <> 0) and (FrameBase > LastFrameBase) then
|
else if (FrameBase <> 0) and (FrameBase > LastFrameBase) then
|
||||||
begin
|
begin
|
||||||
|
if StackPtr = 0 then
|
||||||
|
break;
|
||||||
// CFI not available or contains unsupported structures. Fallback to
|
// CFI not available or contains unsupported structures. Fallback to
|
||||||
// old fashioned stack-tracing.
|
// old fashioned stack-tracing.
|
||||||
OutSideFrame := False;
|
OutSideFrame := False;
|
||||||
|
Loading…
Reference in New Issue
Block a user