mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-11-23 15:19:36 +01:00
FpDebug: Callcontext, rename TFpValueCallParamStringByRef to TFpSymbolCallParamOrdinalOrPointer
This commit is contained in:
parent
c6ab397e07
commit
f3476e5274
@ -14,16 +14,17 @@ uses
|
|||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
{ TFpValueCallParamStringByRef }
|
{ TFpSymbolCallParamOrdinalOrPointer }
|
||||||
|
|
||||||
TFpValueCallParamStringByRef = class(TFpValueDwarfPointer)
|
TFpSymbolCallParamOrdinalOrPointer = class(TFpSymbolDwarfTypeBasic) // act as pointer
|
||||||
function GetDwarfDataAddress(out AnAddress: TFpDbgMemLocation;
|
private type
|
||||||
ATargetType: TFpSymbolDwarfType = nil): Boolean; override;
|
{ TFpValueCallParamStringByRef }
|
||||||
end;
|
|
||||||
|
|
||||||
{ TFpSymbolCallParamStringByRef }
|
TFpValueCallParamStringByRef = class(TFpValueDwarfPointer)
|
||||||
|
function GetDwarfDataAddress(out AnAddress: TFpDbgMemLocation;
|
||||||
|
ATargetType: TFpSymbolDwarfType = nil): Boolean; override;
|
||||||
|
end;
|
||||||
|
|
||||||
TFpSymbolCallParamStringByRef = class(TFpSymbolDwarfTypeBasic) // act as pointer
|
|
||||||
protected
|
protected
|
||||||
procedure KindNeeded; override;
|
procedure KindNeeded; override;
|
||||||
procedure Init; override;
|
procedure Init; override;
|
||||||
@ -96,35 +97,35 @@ implementation
|
|||||||
var
|
var
|
||||||
FPDBG_FUNCCALL: PLazLoggerLogGroup;
|
FPDBG_FUNCCALL: PLazLoggerLogGroup;
|
||||||
|
|
||||||
{ TFpValueCallParamStringByRef }
|
{ TFpSymbolCallParamOrdinalOrPointer.TFpValueCallParamStringByRef }
|
||||||
|
|
||||||
function TFpValueCallParamStringByRef.GetDwarfDataAddress(out
|
function TFpSymbolCallParamOrdinalOrPointer.TFpValueCallParamStringByRef.GetDwarfDataAddress
|
||||||
AnAddress: TFpDbgMemLocation; ATargetType: TFpSymbolDwarfType): Boolean;
|
(out AnAddress: TFpDbgMemLocation; ATargetType: TFpSymbolDwarfType): Boolean;
|
||||||
begin
|
begin
|
||||||
AnAddress := Address;
|
AnAddress := Address;
|
||||||
Result := IsReadableLoc(AnAddress);
|
Result := IsReadableLoc(AnAddress);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TFpSymbolCallParamStringByRef }
|
{ TFpSymbolCallParamOrdinalOrPointer }
|
||||||
|
|
||||||
procedure TFpSymbolCallParamStringByRef.KindNeeded;
|
procedure TFpSymbolCallParamOrdinalOrPointer.KindNeeded;
|
||||||
begin
|
begin
|
||||||
SetKind(skPointer);
|
SetKind(skPointer);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TFpSymbolCallParamStringByRef.Init;
|
procedure TFpSymbolCallParamOrdinalOrPointer.Init;
|
||||||
begin
|
begin
|
||||||
inherited Init;
|
inherited Init;
|
||||||
EvaluatedFields := EvaluatedFields + [sfiAddress];
|
EvaluatedFields := EvaluatedFields + [sfiAddress];
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TFpSymbolCallParamStringByRef.GetTypedValueObject(ATypeCast: Boolean;
|
function TFpSymbolCallParamOrdinalOrPointer.GetTypedValueObject(ATypeCast: Boolean;
|
||||||
AnOuterType: TFpSymbolDwarfType): TFpValueDwarf;
|
AnOuterType: TFpSymbolDwarfType): TFpValueDwarf;
|
||||||
begin
|
begin
|
||||||
Result := TFpValueCallParamStringByRef.Create(AnOuterType);
|
Result := TFpValueCallParamStringByRef.Create(AnOuterType);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
constructor TFpSymbolCallParamStringByRef.Create(AName: String;
|
constructor TFpSymbolCallParamOrdinalOrPointer.Create(AName: String;
|
||||||
AStringVarAddress: TDBGPtr);
|
AStringVarAddress: TDBGPtr);
|
||||||
begin
|
begin
|
||||||
inherited Create(AName, skPointer, TargetLoc(AStringVarAddress));
|
inherited Create(AName, skPointer, TargetLoc(AStringVarAddress));
|
||||||
@ -345,9 +346,9 @@ end;
|
|||||||
function TFpDbgInfoCallContext.InternalAddStringResult: Boolean;
|
function TFpDbgInfoCallContext.InternalAddStringResult: Boolean;
|
||||||
var
|
var
|
||||||
ParamSymbol: TFpValue;
|
ParamSymbol: TFpValue;
|
||||||
RefSym: TFpSymbolCallParamStringByRef;
|
RefSym: TFpSymbolCallParamOrdinalOrPointer;
|
||||||
begin
|
begin
|
||||||
RefSym := TFpSymbolCallParamStringByRef.Create('', 0);
|
RefSym := TFpSymbolCallParamOrdinalOrPointer.Create('', 0);
|
||||||
ParamSymbol := InternalCreateParamSymbol(FNextParamRegister, RefSym, '');
|
ParamSymbol := InternalCreateParamSymbol(FNextParamRegister, RefSym, '');
|
||||||
try
|
try
|
||||||
Result := ParamSymbol <> nil;
|
Result := ParamSymbol <> nil;
|
||||||
@ -434,7 +435,7 @@ var
|
|||||||
begin
|
begin
|
||||||
Result := False;
|
Result := False;
|
||||||
if AParamSymbolType = nil then
|
if AParamSymbolType = nil then
|
||||||
AParamSymbolType := TFpSymbolCallParamStringByRef.Create('', 0)
|
AParamSymbolType := TFpSymbolCallParamOrdinalOrPointer.Create('', 0)
|
||||||
else
|
else
|
||||||
AParamSymbolType.AddReference;
|
AParamSymbolType.AddReference;
|
||||||
ParamSymbol := InternalCreateParamSymbol(FNextParamRegister, AParamSymbolType, '');
|
ParamSymbol := InternalCreateParamSymbol(FNextParamRegister, AParamSymbolType, '');
|
||||||
@ -474,10 +475,10 @@ function TFpDbgInfoCallContext.AddOrdinalViaRefAsParam(AValue: QWord): Boolean;
|
|||||||
var
|
var
|
||||||
ParamSymbol: TFpValue;
|
ParamSymbol: TFpValue;
|
||||||
m: TDBGPtr;
|
m: TDBGPtr;
|
||||||
RefSym: TFpSymbolCallParamStringByRef;
|
RefSym: TFpSymbolCallParamOrdinalOrPointer;
|
||||||
begin
|
begin
|
||||||
m := AllocStack(32);
|
m := AllocStack(32);
|
||||||
RefSym := TFpSymbolCallParamStringByRef.Create('', m);
|
RefSym := TFpSymbolCallParamOrdinalOrPointer.Create('', m);
|
||||||
ParamSymbol := InternalCreateParamSymbol(FNextParamRegister, RefSym, '');
|
ParamSymbol := InternalCreateParamSymbol(FNextParamRegister, RefSym, '');
|
||||||
try
|
try
|
||||||
Result := ParamSymbol <> nil;
|
Result := ParamSymbol <> nil;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user