From d281548a330cf98b0799844d0e4471d55f6ec384 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Mon, 25 May 2015 21:44:14 -0400 Subject: [PATCH] Debugger: Cleanups, no functional change. - Add virtual hook to TeamMemory for retrieving area information from the target team. - Implement said hook in DebuggerInterface. - Adjust RetrieveMemoryBlockJob to use said hook to retrieve the writable state of the target block rather than calling get_memory_properties() directly. --- .../debugger/debugger_interface/DebuggerInterface.cpp | 10 ++++++++++ .../debugger/debugger_interface/DebuggerInterface.h | 5 ++++- src/apps/debugger/jobs/RetrieveMemoryBlockJob.cpp | 5 ++--- src/apps/debugger/model/TeamMemory.h | 4 ++++ 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/apps/debugger/debugger_interface/DebuggerInterface.cpp b/src/apps/debugger/debugger_interface/DebuggerInterface.cpp index 3f78fb43795..3c0ef9d18ef 100644 --- a/src/apps/debugger/debugger_interface/DebuggerInterface.cpp +++ b/src/apps/debugger/debugger_interface/DebuggerInterface.cpp @@ -13,6 +13,7 @@ #include #include +#include #include #include #include @@ -708,6 +709,15 @@ DebuggerInterface::GetCpuFeatures(uint32& flags) } +status_t +DebuggerInterface::GetMemoryProperties(target_addr_t address, + uint32& protection, uint32& locking) +{ + return get_memory_properties(fTeamID, (const void *)address, + &protection, &locking); +} + + ssize_t DebuggerInterface::ReadMemory(target_addr_t address, void* buffer, size_t size) { diff --git a/src/apps/debugger/debugger_interface/DebuggerInterface.h b/src/apps/debugger/debugger_interface/DebuggerInterface.h index 8770c7c0bd2..6465acc8f74 100644 --- a/src/apps/debugger/debugger_interface/DebuggerInterface.h +++ b/src/apps/debugger/debugger_interface/DebuggerInterface.h @@ -1,6 +1,6 @@ /* * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. - * Copyright 2010-2013, Rene Gollent, rene@gollent.com. + * Copyright 2010-2015, Rene Gollent, rene@gollent.com. * Distributed under the terms of the MIT License. */ #ifndef DEBUGGER_INTERFACE_H @@ -83,6 +83,9 @@ class DebuggerInterface : public TeamMemory { virtual status_t GetCpuFeatures(uint32& flags); // TeamMemory + virtual status_t GetMemoryProperties(target_addr_t address, + uint32& protection, uint32& locking); + virtual ssize_t ReadMemory(target_addr_t address, void* buffer, size_t size); virtual ssize_t WriteMemory(target_addr_t address, diff --git a/src/apps/debugger/jobs/RetrieveMemoryBlockJob.cpp b/src/apps/debugger/jobs/RetrieveMemoryBlockJob.cpp index 1a41b025ef1..fd7f472650d 100644 --- a/src/apps/debugger/jobs/RetrieveMemoryBlockJob.cpp +++ b/src/apps/debugger/jobs/RetrieveMemoryBlockJob.cpp @@ -7,7 +7,6 @@ #include "Jobs.h" #include -#include #include "Team.h" #include "TeamMemory.h" @@ -53,8 +52,8 @@ RetrieveMemoryBlockJob::Do() uint32 protection = 0; uint32 locking = 0; - status_t error = get_memory_properties(fTeam->ID(), - (const void *)fMemoryBlock->BaseAddress(), &protection, &locking); + status_t error = fTeamMemory->GetMemoryProperties( + fMemoryBlock->BaseAddress(), protection, locking); if (error != B_OK) { fMemoryBlock->NotifyDataRetrieved(error); return error; diff --git a/src/apps/debugger/model/TeamMemory.h b/src/apps/debugger/model/TeamMemory.h index 6790704e1cd..ed8ee554f76 100644 --- a/src/apps/debugger/model/TeamMemory.h +++ b/src/apps/debugger/model/TeamMemory.h @@ -1,4 +1,5 @@ /* + * Copyright 2015, Rene Gollent, rene@gollent.com. * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. * Distributed under the terms of the MIT License. */ @@ -19,6 +20,9 @@ class TeamMemory : public BReferenceable { virtual ~TeamMemory(); + virtual status_t GetMemoryProperties(target_addr_t baseAddress, + uint32& protection, uint32& locking) = 0; + virtual ssize_t ReadMemory(target_addr_t address, void* buffer, size_t size) = 0; virtual status_t ReadMemoryString(target_addr_t address,