Only change MemManagager and MemModel for target AVR

This commit is contained in:
ccrause 2024-01-30 07:58:41 +02:00 committed by Martin
parent c6781743e8
commit 5b4f7aa9f4
2 changed files with 31 additions and 10 deletions

View File

@ -332,8 +332,8 @@ type
procedure SendEvents(out continue: boolean);
property CurrentCommand: TDbgControllerCmd read FCommand;
property OsDbgClasses: TOSDbgClasses read FOsDbgClasses;
property MemManager: TFpDbgMemManager read FMemManager;
property MemModel: TFpDbgMemModel read FMemModel;
property MemManager: TFpDbgMemManager read FMemManager write FMemManager;
property MemModel: TFpDbgMemModel read FMemModel write FMemModel;
property DefaultContext: TFpDbgLocationContext read GetDefaultContext; // CurrentThread, TopStackFrame
property LastError: TFpError read FLastError;
property Event: TFPDEvent read FPDEvent;

View File

@ -67,8 +67,7 @@ type
FProcessConfig: TRemoteConfig;
procedure UpdateProcessConfig;
protected
function CreateMemManager: TFpDbgMemManager; override;
function CreateMemModel: TFpDbgMemModel; override;
function ChangeFileName: Boolean; override;
public
constructor Create(const AExternalDebugger: String); override;
destructor Destroy; override;
@ -83,6 +82,9 @@ procedure Register;
implementation
uses
FpDbgCommon, FpDbgLoader;
{ TFpRspRemoteDebugger }
procedure TFpRspRemoteDebugger.UpdateProcessConfig;
@ -99,14 +101,33 @@ begin
TRemoteConfig(FProcessConFig).SkipSectionsList.Assign(AProperties.SkipUploadOfSectionList);
end;
function TFpRspRemoteDebugger.CreateMemManager: TFpDbgMemManager;
function TFpRspRemoteDebugger.ChangeFileName: Boolean;
var
ImgLoader: TDbgImageLoader;
target: TTargetDescriptor;
begin
Result := TAvrMemManager.Create(FMemReader, FMemConverter, FMemModel);
end;
Result := inherited ChangeFileName;
function TFpRspRemoteDebugger.CreateMemModel: TFpDbgMemModel;
begin
Result := TFpDbgAvrMemModel.Create;
// Load the target information from the executable file
if FileName <> '' then
begin
ImgLoader := TDbgImageLoader.Create(FileName);
target := ImgLoader.TargetInfo;
ImgLoader.Free;
// Change MemManager and MemModel for AVR only
if (target.machineType = mtAVR8) then
begin
if Assigned(FMemModel) then FMemModel.Free;
FMemModel := TFpDbgAvrMemModel.Create;
if Assigned(FMemManager) then FMemManager.Free;
FMemManager := TAvrMemManager.Create(FMemReader, FMemConverter, FMemModel);
// Update debug controller
FDbgController.MemModel := FMemModel;
FDbgController.MemManager := FMemManager;
end;
end;
end;
constructor TFpRspRemoteDebugger.Create(const AExternalDebugger: String);