1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
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.
|