mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-02 00:23:38 +02:00
49 lines
1.2 KiB
ObjectPascal
49 lines
1.2 KiB
ObjectPascal
unit FpDbgCallContextInfo;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
DbgIntfBaseTypes,
|
|
FpDbgInfo,
|
|
FpdMemoryTools,
|
|
FpDbgDwarfDataClasses,
|
|
FpDbgDwarf,
|
|
FpDbgClasses;
|
|
|
|
type
|
|
{ TFpDbgInfoCallContext }
|
|
|
|
TFpDbgInfoCallContext = class(TFpDbgAbstractCallContext)
|
|
public
|
|
function CreateParamSymbol(AParamIndex: Integer; ASymbolType: TFpSymbol; ADbgProcess: TDbgProcess; AName: String = ''): TFpValue; virtual;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{ TFpDbgInfoCallContext }
|
|
|
|
function TFpDbgInfoCallContext.CreateParamSymbol(AParamIndex: Integer;
|
|
ASymbolType: TFpSymbol; ADbgProcess: TDbgProcess; AName: String): TFpValue;
|
|
var
|
|
ParameterMemLocation: TFpDbgMemLocation;
|
|
TypeSymbol: TFpSymbol;
|
|
ParamSymbol: TFpSymbolDwarfFunctionResult;
|
|
begin
|
|
ParameterMemLocation := ADbgProcess.CallParamDefaultLocation(AParamIndex);
|
|
TypeSymbol := ASymbolType.TypeInfo;
|
|
if AName = '' then
|
|
AName := ASymbolType.Name;
|
|
ParamSymbol := TFpSymbolDwarfFunctionResult.Create(AName, TDbgDwarfSymbolBase(ASymbolType).InformationEntry, TypeSymbol.Kind, ParameterMemLocation);
|
|
try
|
|
Result := ParamSymbol.Value;
|
|
finally
|
|
ParamSymbol.ReleaseReference;
|
|
end;
|
|
TFpValueDwarf(Result).Context := Self;
|
|
end;
|
|
|
|
end.
|
|
|