mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-07 05:56:29 +02:00
FPDebug: fix Value handling / typecasts
git-svn-id: trunk@43904 -
This commit is contained in:
parent
b7d1f04c66
commit
c20494536f
@ -1947,7 +1947,7 @@ function TDbgDwarfNumericSymbolValue.GetAsCardinal: QWord;
|
||||
var
|
||||
addr: TDbgPtr;
|
||||
begin
|
||||
// TODO: memory representation of values is not dwar, but platform - move
|
||||
// TODO: memory representation of values is not dwarf, but platform - move
|
||||
if doneUInt in FEvaluated then begin
|
||||
Result := FValue;
|
||||
exit;
|
||||
|
@ -795,19 +795,19 @@ end;
|
||||
|
||||
function TFpPascalExpressionPartBracketArgumentList.DoGetResultValue: TDbgSymbolValue;
|
||||
var
|
||||
tmp: TDbgSymbolValue;
|
||||
tmp, tmp2: TDbgSymbolValue;
|
||||
begin
|
||||
Result := nil;
|
||||
|
||||
if (Count = 2) then begin
|
||||
Result := Items[0].ResultValue;
|
||||
if (Result <> nil) and (Result.DbgSymbol <> nil) and
|
||||
(Result.DbgSymbol.SymbolType = stType)
|
||||
tmp := Items[0].ResultValue;
|
||||
if (tmp <> nil) and (tmp.DbgSymbol <> nil) and
|
||||
(tmp.DbgSymbol.SymbolType = stType)
|
||||
then begin
|
||||
// This is a typecast
|
||||
tmp := Items[1].ResultValue;
|
||||
if tmp <> nil then
|
||||
Result := Result.DbgSymbol.TypeCastValue(tmp);
|
||||
tmp2 := Items[1].ResultValue;
|
||||
if tmp2 <> nil then
|
||||
Result := tmp.DbgSymbol.TypeCastValue(tmp2);
|
||||
if Result <> nil then
|
||||
{$IFDEF WITH_REFCOUNT_DEBUG}Result.DbgRenameReference(nil, 'DoGetResultValue'){$ENDIF};
|
||||
exit;
|
||||
|
@ -423,11 +423,11 @@ begin
|
||||
ExpResult(svfInteger, -299);
|
||||
ExpFlags([svfInteger, svfOrdinal, svfAddress], [svfDataAddress]); // svfSize;
|
||||
|
||||
StartTest('PInt(GlobTestSetup1Pointer)^', skInteger, [ttHasType]);
|
||||
StartTest('LongInt(pointer(pi)^)', skInteger, [ttHasType]);
|
||||
ExpResult(svfInteger, -299);
|
||||
ExpFlags([svfInteger, svfOrdinal, svfAddress], [svfDataAddress]); // svfSize;
|
||||
|
||||
StartTest('LongInt(pointer(pi)^)', skInteger, [ttHasType]);
|
||||
StartTest('PInt(GlobTestSetup1Pointer)^', skInteger, [ttHasType]);
|
||||
ExpResult(svfInteger, -299);
|
||||
ExpFlags([svfInteger, svfOrdinal, svfAddress], [svfDataAddress]); // svfSize;
|
||||
|
||||
@ -435,6 +435,40 @@ begin
|
||||
ExpResult(svfInteger, -299);
|
||||
ExpFlags([svfInteger, svfOrdinal, svfAddress], [svfDataAddress]); // svfSize;
|
||||
|
||||
StartTest('PInt(GlobTestSetup1QWord)^', skInteger, [ttHasType]);
|
||||
ExpResult(svfInteger, -299);
|
||||
ExpFlags([svfInteger, svfOrdinal, svfAddress], [svfDataAddress]); // svfSize;
|
||||
|
||||
StartInvalTest('LongInt(GlobTestSetup1QWord^)', '');
|
||||
|
||||
//StartTest('LongInt(GlobTestSetup1QWord^)', skInteger, [ttHasType]);
|
||||
//ExpResult(svfInteger, -299);
|
||||
//ExpFlags([svfInteger, svfOrdinal, svfAddress], [svfDataAddress]); // svfSize;
|
||||
|
||||
|
||||
ImageLoader.TestStackFrame.pi := @ImageLoader.TestStackFrame.Obj1;
|
||||
GlobTestSetup1Pointer := @ImageLoader.TestStackFrame.Obj1;
|
||||
GlobTestSetup1QWord := QWord(@ImageLoader.TestStackFrame.Obj1);
|
||||
|
||||
StartTest('TTestSetup1Class(pi^).FWord', skCardinal, [ttHasType]);
|
||||
ExpResult(svfCardinal, 1019);
|
||||
ExpFlags([svfCardinal, svfOrdinal, svfAddress]); // svfSize; //
|
||||
|
||||
StartTest('PTestSetup1Class(pi)^.FWord', skCardinal, [ttHasType]);
|
||||
ExpResult(svfCardinal, 1019);
|
||||
ExpFlags([svfCardinal, svfOrdinal, svfAddress]); // svfSize; //
|
||||
|
||||
StartTest('TTestSetup1Class(GlobTestSetup1Pointer^).FWord', skCardinal, [ttHasType]);
|
||||
ExpResult(svfCardinal, 1019);
|
||||
ExpFlags([svfCardinal, svfOrdinal, svfAddress]); // svfSize; //
|
||||
|
||||
StartTest('PTestSetup1Class(GlobTestSetup1Pointer)^.FWord', skCardinal, [ttHasType]);
|
||||
ExpResult(svfCardinal, 1019);
|
||||
ExpFlags([svfCardinal, svfOrdinal, svfAddress]); // svfSize; //
|
||||
|
||||
StartTest('PTestSetup1Class(GlobTestSetup1QWord)^.FWord', skCardinal, [ttHasType]);
|
||||
ExpResult(svfCardinal, 1019);
|
||||
ExpFlags([svfCardinal, svfOrdinal, svfAddress]); // svfSize; //
|
||||
|
||||
///////////////////////////
|
||||
finally
|
||||
|
Loading…
Reference in New Issue
Block a user