mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-29 01:30:38 +02:00
FpDebug: MemModel for Win/Darwin / fixes
This commit is contained in:
parent
c327f03044
commit
dbd0141eac
@ -72,6 +72,7 @@ type
|
||||
public
|
||||
constructor Create(const ABaseContext: TFpDbgLocationContext;
|
||||
AMemReader: TFpDbgMemReaderBase;
|
||||
AMemModel: TFpDbgMemModel;
|
||||
AMemConverter: TFpDbgMemConvertor;
|
||||
ADbgProcess: TDbgProcess;
|
||||
ADbgThread: TDbgThread);
|
||||
@ -450,10 +451,10 @@ end;
|
||||
|
||||
constructor TFpDbgInfoCallContext.Create(
|
||||
const ABaseContext: TFpDbgLocationContext; AMemReader: TFpDbgMemReaderBase;
|
||||
AMemConverter: TFpDbgMemConvertor; ADbgProcess: TDbgProcess;
|
||||
AMemModel: TFpDbgMemModel; AMemConverter: TFpDbgMemConvertor; ADbgProcess: TDbgProcess;
|
||||
ADbgThread: TDbgThread);
|
||||
begin
|
||||
inherited Create(ABaseContext, AMemReader, AMemConverter);
|
||||
inherited Create(ABaseContext, AMemReader, AMemModel, AMemConverter);
|
||||
FDbgProcess := ADbgProcess;
|
||||
FDbgThread := ADbgThread;
|
||||
FNextParamRegister := 0;
|
||||
|
@ -2133,7 +2133,7 @@ begin
|
||||
then
|
||||
exit;
|
||||
|
||||
Context := TFpDbgInfoCallContext.Create(ABaseContext, AMemReader, AMemConverter, FCurrentProcess, FCurrentThread);
|
||||
Context := TFpDbgInfoCallContext.Create(ABaseContext, AMemReader, MemModel, AMemConverter, FCurrentProcess, FCurrentThread);
|
||||
Context.AddReference;
|
||||
InitializeCommand(TDbgControllerCallRoutineCmd.Create(self, FunctionAddress, Context));
|
||||
Result := Context;
|
||||
|
@ -155,7 +155,7 @@ type
|
||||
AWorkingDirectory, AConsoleTty: string; AFlags: TStartInstanceFlags;
|
||||
out AnError: TFpError): boolean; override;
|
||||
class function isSupported(ATargetInfo: TTargetDescriptor): boolean; override;
|
||||
constructor Create(const AFileName: string; AnOsClasses: TOSDbgClasses; AMemManager: TFpDbgMemManager; AProcessConfig: TDbgProcessConfig = nil); override;
|
||||
constructor Create(const AFileName: string; AnOsClasses: TOSDbgClasses; AMemManager: TFpDbgMemManager; AMemModel: TFpDbgMemModel; AProcessConfig: TDbgProcessConfig = nil); override;
|
||||
destructor Destroy; override;
|
||||
|
||||
function ReadData(const AAdress: TDbgPtr; const ASize: Cardinal; out AData): Boolean; override;
|
||||
@ -637,10 +637,10 @@ begin
|
||||
end;
|
||||
|
||||
constructor TDbgDarwinProcess.Create(const AFileName: string;
|
||||
AnOsClasses: TOSDbgClasses; AMemManager: TFpDbgMemManager;
|
||||
AnOsClasses: TOSDbgClasses; AMemManager: TFpDbgMemManager; AMemModel: TFpDbgMemModel;
|
||||
AProcessConfig: TDbgProcessConfig);
|
||||
begin
|
||||
inherited Create(AFileName, AnOsClasses, AMemManager, AProcessConfig);
|
||||
inherited Create(AFileName, AnOsClasses, AMemManager, AMemModel, AProcessConfig);
|
||||
|
||||
GetDebugAccessRights;
|
||||
end;
|
||||
|
@ -5728,7 +5728,7 @@ end;
|
||||
function TFpSymbolDwarfTypeSubroutine.GetDataAddress(AValueObj: TFpValueDwarf;
|
||||
var AnAddress: TFpDbgMemLocation; ATargetType: TFpSymbolDwarfType): Boolean;
|
||||
begin
|
||||
inherited;
|
||||
Result := inherited GetDataAddress(AValueObj, AnAddress, ATargetType);
|
||||
AnAddress := AValueObj.Context.MemModel.UpdateLocationToCodeAddress(AnAddress);
|
||||
end;
|
||||
|
||||
|
@ -662,12 +662,14 @@ type
|
||||
FMessage: string;
|
||||
protected
|
||||
function GetMemManager: TFpDbgMemManager; override;
|
||||
function GetMemModel: TFpDbgMemModel; override;
|
||||
function GetAddress: TDbgPtr; override;
|
||||
function GetThreadId: Integer; override;
|
||||
function GetStackFrame: Integer; override;
|
||||
function GetSizeOfAddress: Integer; override;
|
||||
public
|
||||
constructor Create(const ABaseContext: TFpDbgLocationContext; AMemReader: TFpDbgMemReaderBase; AMemConverter: TFpDbgMemConvertor);
|
||||
constructor Create(const ABaseContext: TFpDbgLocationContext;
|
||||
AMemReader: TFpDbgMemReaderBase; AMemModel: TFpDbgMemModel; AMemConverter: TFpDbgMemConvertor);
|
||||
destructor Destroy; override;
|
||||
|
||||
procedure SetRegisterValue(ARegNum: Cardinal; AValue: TDbgPtr);
|
||||
@ -783,12 +785,12 @@ end;
|
||||
|
||||
constructor TFpDbgAbstractCallContext.Create(
|
||||
const ABaseContext: TFpDbgLocationContext; AMemReader: TFpDbgMemReaderBase;
|
||||
AMemConverter: TFpDbgMemConvertor);
|
||||
AMemModel: TFpDbgMemModel; AMemConverter: TFpDbgMemConvertor);
|
||||
begin
|
||||
FBaseContext:=ABaseContext;
|
||||
FBaseContext.AddReference;
|
||||
|
||||
FMemModel := TFpDbgMemModel.Create;
|
||||
FMemModel := AMemModel;
|
||||
FMemReader := TFpDbgCallMemReader.Create(AMemReader);
|
||||
FMemManager := TFpDbgMemManager.Create(FMemReader, AMemConverter, FMemModel);
|
||||
|
||||
@ -815,6 +817,11 @@ begin
|
||||
Result := FMemManager;
|
||||
end;
|
||||
|
||||
function TFpDbgAbstractCallContext.GetMemModel: TFpDbgMemModel;
|
||||
begin
|
||||
Result := FMemModel;
|
||||
end;
|
||||
|
||||
function TFpDbgAbstractCallContext.GetSizeOfAddress: Integer;
|
||||
begin
|
||||
Result := FBaseContext.SizeOfAddress;
|
||||
|
@ -198,7 +198,7 @@ type
|
||||
function CreateWatchPointData: TFpWatchPointData; override;
|
||||
public
|
||||
constructor Create(const AFileName: string; AnOsClasses: TOSDbgClasses;
|
||||
AMemManager: TFpDbgMemManager; AProcessConfig: TDbgProcessConfig = nil); override;
|
||||
AMemManager: TFpDbgMemManager; AMemModel: TFpDbgMemModel; AProcessConfig: TDbgProcessConfig = nil); override;
|
||||
destructor Destroy; override;
|
||||
|
||||
function ReadData(const AAdress: TDbgPtr; const ASize: Cardinal; out AData): Boolean; override;
|
||||
@ -555,15 +555,16 @@ begin
|
||||
Result := TFpIntelWatchPointData.Create;
|
||||
end;
|
||||
|
||||
constructor TDbgWinProcess.Create(const AFileName: string; AnOsClasses: TOSDbgClasses;
|
||||
AMemManager: TFpDbgMemManager; AProcessConfig: TDbgProcessConfig);
|
||||
constructor TDbgWinProcess.Create(const AFileName: string;
|
||||
AnOsClasses: TOSDbgClasses; AMemManager: TFpDbgMemManager;
|
||||
AMemModel: TFpDbgMemModel; AProcessConfig: TDbgProcessConfig);
|
||||
begin
|
||||
{$ifdef cpui386}
|
||||
FBitness := b32;
|
||||
{$else}
|
||||
FBitness := b64;
|
||||
{$endif}
|
||||
inherited Create(AFileName, AnOsClasses, AMemManager, AProcessConfig);
|
||||
inherited Create(AFileName, AnOsClasses, AMemManager, AMemModel, AProcessConfig);
|
||||
end;
|
||||
|
||||
destructor TDbgWinProcess.Destroy;
|
||||
|
Loading…
Reference in New Issue
Block a user