mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-01 20:24:01 +02:00
46 lines
1.1 KiB
ObjectPascal
46 lines
1.1 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): TFpValue; virtual;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{ TFpDbgInfoCallContext }
|
|
|
|
function TFpDbgInfoCallContext.CreateParamSymbol(AParamIndex: Integer; ASymbolType: TFpSymbol; ADbgProcess: TDbgProcess): TFpValue;
|
|
var
|
|
ParameterMemLocation: TFpDbgMemLocation;
|
|
TypeSymbol: TFpSymbol;
|
|
ParamSymbol: TFpSymbolDwarfFunctionResult;
|
|
begin
|
|
ParameterMemLocation := ADbgProcess.CallParamDefaultLocation(AParamIndex);
|
|
TypeSymbol := ASymbolType.TypeInfo;
|
|
ParamSymbol := TFpSymbolDwarfFunctionResult.Create(ASymbolType.Name, TDbgDwarfSymbolBase(ASymbolType).InformationEntry, TypeSymbol.Kind, ParameterMemLocation);
|
|
try
|
|
Result := ParamSymbol.Value;
|
|
finally
|
|
ParamSymbol.ReleaseReference;
|
|
end;
|
|
TFpValueDwarf(Result).Context := Self;
|
|
end;
|
|
|
|
end.
|
|
|