From 5b4f7aa9f493cd019678050d41601cc3312ddcfa Mon Sep 17 00:00:00 2001 From: ccrause Date: Tue, 30 Jan 2024 07:58:41 +0200 Subject: [PATCH] Only change MemManagager and MemModel for target AVR --- components/fpdebug/fpdbgcontroller.pas | 4 +- .../rspremotedebugger.pas | 37 +++++++++++++++---- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/components/fpdebug/fpdbgcontroller.pas b/components/fpdebug/fpdbgcontroller.pas index a652c87e02..addc39c206 100644 --- a/components/fpdebug/fpdbgcontroller.pas +++ b/components/fpdebug/fpdbgcontroller.pas @@ -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; diff --git a/components/lazdebuggers/lazdebuggerfprspremote/rspremotedebugger.pas b/components/lazdebuggers/lazdebuggerfprspremote/rspremotedebugger.pas index 11d2ffafbb..35fae94cf9 100644 --- a/components/lazdebuggers/lazdebuggerfprspremote/rspremotedebugger.pas +++ b/components/lazdebuggers/lazdebuggerfprspremote/rspremotedebugger.pas @@ -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);