mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-10-26 23:01:37 +01:00
Debugger, GDBMI: fix range check, when comparing qword for min() Issue #033106
git-svn-id: trunk@57198 -
This commit is contained in:
parent
4b3152e0d4
commit
392a64d93b
@ -1933,6 +1933,7 @@ type
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure RegisterDebugger(const ADebuggerClass: TDebuggerClass);
|
procedure RegisterDebugger(const ADebuggerClass: TDebuggerClass);
|
||||||
|
function MinDbgPtr(a, b: TDBGPtr): TDBGPtr;inline; overload;
|
||||||
|
|
||||||
function dbgs(AState: TDBGState): String; overload;
|
function dbgs(AState: TDBGState): String; overload;
|
||||||
function dbgs(ADataState: TDebuggerDataState): String; overload;
|
function dbgs(ADataState: TDebuggerDataState): String; overload;
|
||||||
@ -1983,6 +1984,14 @@ begin
|
|||||||
MDebuggerClasses.AddObject(ADebuggerClass.ClassName, TObject(Pointer(ADebuggerClass)));
|
MDebuggerClasses.AddObject(ADebuggerClass.ClassName, TObject(Pointer(ADebuggerClass)));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function MinDbgPtr(a, b: TDBGPtr): TDBGPtr;
|
||||||
|
begin
|
||||||
|
if a < b then
|
||||||
|
Result := a
|
||||||
|
else
|
||||||
|
Result := b;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure DoFinalization;
|
procedure DoFinalization;
|
||||||
var
|
var
|
||||||
n: Integer;
|
n: Integer;
|
||||||
@ -2190,7 +2199,7 @@ begin
|
|||||||
TryStartAt.GuessedValue := TmpAddr;
|
TryStartAt.GuessedValue := TmpAddr;
|
||||||
AdjustToRangeOrKnowFunctionStart(TryStartAt, RngBefore);
|
AdjustToRangeOrKnowFunctionStart(TryStartAt, RngBefore);
|
||||||
// check max size
|
// check max size
|
||||||
if (TryStartAt.Value < AStartAddr - Min(AStartAddr, DAssMaxRangeSize))
|
if (TryStartAt.Value < AStartAddr - MinDbgPtr(AStartAddr, DAssMaxRangeSize))
|
||||||
then begin
|
then begin
|
||||||
DebugLn(DBG_DISASSEMBLER, ['INFO: Limit Range for Disass: FStartAddr=', AStartAddr, ' TryStartAt.Value=', TryStartAt.Value ]);
|
DebugLn(DBG_DISASSEMBLER, ['INFO: Limit Range for Disass: FStartAddr=', AStartAddr, ' TryStartAt.Value=', TryStartAt.Value ]);
|
||||||
TryStartAt := InitAddress(TmpAddr, avGuessed);
|
TryStartAt := InitAddress(TmpAddr, avGuessed);
|
||||||
@ -2308,7 +2317,7 @@ begin
|
|||||||
then RngBefore := nil;
|
then RngBefore := nil;
|
||||||
{$POP}
|
{$POP}
|
||||||
AdjustToRangeOrKnowFunctionStart(TryStartAt, RngBefore);
|
AdjustToRangeOrKnowFunctionStart(TryStartAt, RngBefore);
|
||||||
if (TryStartAt.Value < TryEndAt.Value - Min(TryEndAt.Value, DAssMaxRangeSize))
|
if (TryStartAt.Value < TryEndAt.Value - MinDbgPtr(TryEndAt.Value, DAssMaxRangeSize))
|
||||||
then begin
|
then begin
|
||||||
DebugLn(DBG_DISASSEMBLER, ['INFO: Limit Range for Disass: TryEndAt.Value=', TryEndAt.Value, ' TryStartAt.Value=', TryStartAt.Value ]);
|
DebugLn(DBG_DISASSEMBLER, ['INFO: Limit Range for Disass: TryEndAt.Value=', TryEndAt.Value, ' TryStartAt.Value=', TryStartAt.Value ]);
|
||||||
TryStartAt := InitAddress(TmpAddr, avGuessed);
|
TryStartAt := InitAddress(TmpAddr, avGuessed);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user