Merge pull request #11940 from lioncash/debugiface

Common: Move DebugInterface.h into Core
This commit is contained in:
Admiral H. Curtiss 2023-06-13 01:59:33 +02:00 committed by GitHub
commit 63090d411d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 37 additions and 45 deletions

View File

@ -36,7 +36,6 @@ add_library(common
Debug/Threads.h Debug/Threads.h
Debug/Watches.cpp Debug/Watches.cpp
Debug/Watches.h Debug/Watches.h
DebugInterface.h
DynamicLibrary.cpp DynamicLibrary.cpp
DynamicLibrary.h DynamicLibrary.h
ENet.cpp ENet.cpp

View File

@ -61,6 +61,7 @@ add_library(core
CoreTiming.h CoreTiming.h
Debugger/CodeTrace.cpp Debugger/CodeTrace.cpp
Debugger/CodeTrace.h Debugger/CodeTrace.h
Debugger/DebugInterface.h
Debugger/Debugger_SymbolMap.cpp Debugger/Debugger_SymbolMap.cpp
Debugger/Debugger_SymbolMap.h Debugger/Debugger_SymbolMap.h
Debugger/Dump.cpp Debugger/Dump.cpp

View File

@ -4,6 +4,7 @@
#pragma once #pragma once
#include <cstddef> #include <cstddef>
#include <optional>
#include <string> #include <string>
#include <vector> #include <vector>
@ -19,10 +20,7 @@ struct Watch;
namespace Core namespace Core
{ {
class CPUThreadGuard; class CPUThreadGuard;
} // namespace Core
namespace Common
{
class DebugInterface class DebugInterface
{ {
protected: protected:
@ -31,8 +29,8 @@ protected:
public: public:
// Watches // Watches
virtual std::size_t SetWatch(u32 address, std::string name = "") = 0; virtual std::size_t SetWatch(u32 address, std::string name = "") = 0;
virtual const Debug::Watch& GetWatch(std::size_t index) const = 0; virtual const Common::Debug::Watch& GetWatch(std::size_t index) const = 0;
virtual const std::vector<Debug::Watch>& GetWatches() const = 0; virtual const std::vector<Common::Debug::Watch>& GetWatches() const = 0;
virtual void UnsetWatch(u32 address) = 0; virtual void UnsetWatch(u32 address) = 0;
virtual void UpdateWatch(std::size_t index, u32 address, std::string name) = 0; virtual void UpdateWatch(std::size_t index, u32 address, std::string name) = 0;
virtual void UpdateWatchAddress(std::size_t index, u32 address) = 0; virtual void UpdateWatchAddress(std::size_t index, u32 address) = 0;
@ -47,28 +45,27 @@ public:
virtual void ClearWatches() = 0; virtual void ClearWatches() = 0;
// Memory Patches // Memory Patches
virtual void SetPatch(const Core::CPUThreadGuard& guard, u32 address, u32 value) = 0; virtual void SetPatch(const CPUThreadGuard& guard, u32 address, u32 value) = 0;
virtual void SetPatch(const Core::CPUThreadGuard& guard, u32 address, std::vector<u8> value) = 0; virtual void SetPatch(const CPUThreadGuard& guard, u32 address, std::vector<u8> value) = 0;
virtual void SetFramePatch(const Core::CPUThreadGuard& guard, u32 address, u32 value) = 0; virtual void SetFramePatch(const CPUThreadGuard& guard, u32 address, u32 value) = 0;
virtual void SetFramePatch(const Core::CPUThreadGuard& guard, u32 address, virtual void SetFramePatch(const CPUThreadGuard& guard, u32 address, std::vector<u8> value) = 0;
std::vector<u8> value) = 0; virtual const std::vector<Common::Debug::MemoryPatch>& GetPatches() const = 0;
virtual const std::vector<Debug::MemoryPatch>& GetPatches() const = 0; virtual void UnsetPatch(const CPUThreadGuard& guard, u32 address) = 0;
virtual void UnsetPatch(const Core::CPUThreadGuard& guard, u32 address) = 0; virtual void EnablePatch(const CPUThreadGuard& guard, std::size_t index) = 0;
virtual void EnablePatch(const Core::CPUThreadGuard& guard, std::size_t index) = 0; virtual void DisablePatch(const CPUThreadGuard& guard, std::size_t index) = 0;
virtual void DisablePatch(const Core::CPUThreadGuard& guard, std::size_t index) = 0;
virtual bool HasEnabledPatch(u32 address) const = 0; virtual bool HasEnabledPatch(u32 address) const = 0;
virtual void RemovePatch(const Core::CPUThreadGuard& guard, std::size_t index) = 0; virtual void RemovePatch(const CPUThreadGuard& guard, std::size_t index) = 0;
virtual void ClearPatches(const Core::CPUThreadGuard& guard) = 0; virtual void ClearPatches(const CPUThreadGuard& guard) = 0;
virtual void ApplyExistingPatch(const Core::CPUThreadGuard& guard, std::size_t index) = 0; virtual void ApplyExistingPatch(const CPUThreadGuard& guard, std::size_t index) = 0;
// Threads // Threads
virtual Debug::Threads GetThreads(const Core::CPUThreadGuard& guard) const = 0; virtual Common::Debug::Threads GetThreads(const CPUThreadGuard& guard) const = 0;
virtual std::string Disassemble(const Core::CPUThreadGuard* /*guard*/, u32 /*address*/) const virtual std::string Disassemble(const CPUThreadGuard* /*guard*/, u32 /*address*/) const
{ {
return "NODEBUGGER"; return "NODEBUGGER";
} }
virtual std::string GetRawMemoryString(const Core::CPUThreadGuard& /*guard*/, int /*memory*/, virtual std::string GetRawMemoryString(const CPUThreadGuard& /*guard*/, int /*memory*/,
u32 /*address*/) const u32 /*address*/) const
{ {
return "NODEBUGGER"; return "NODEBUGGER";
@ -82,20 +79,17 @@ public:
virtual void ClearAllMemChecks() {} virtual void ClearAllMemChecks() {}
virtual bool IsMemCheck(u32 /*address*/, size_t /*size*/) const { return false; } virtual bool IsMemCheck(u32 /*address*/, size_t /*size*/) const { return false; }
virtual void ToggleMemCheck(u32 /*address*/, bool /*read*/, bool /*write*/, bool /*log*/) {} virtual void ToggleMemCheck(u32 /*address*/, bool /*read*/, bool /*write*/, bool /*log*/) {}
virtual u32 ReadMemory(const Core::CPUThreadGuard& /*guard*/, u32 /*address*/) const { return 0; } virtual u32 ReadMemory(const CPUThreadGuard& /*guard*/, u32 /*address*/) const { return 0; }
virtual void WriteExtraMemory(const Core::CPUThreadGuard& /*guard*/, int /*memory*/, virtual void WriteExtraMemory(const CPUThreadGuard& /*guard*/, int /*memory*/, u32 /*value*/,
u32 /*value*/, u32 /*address*/) u32 /*address*/)
{ {
} }
virtual u32 ReadExtraMemory(const Core::CPUThreadGuard& /*guard*/, int /*memory*/, virtual u32 ReadExtraMemory(const CPUThreadGuard& /*guard*/, int /*memory*/,
u32 /*address*/) const u32 /*address*/) const
{ {
return 0; return 0;
} }
virtual u32 ReadInstruction(const Core::CPUThreadGuard& /*guard*/, u32 /*address*/) const virtual u32 ReadInstruction(const CPUThreadGuard& /*guard*/, u32 /*address*/) const { return 0; }
{
return 0;
}
virtual std::optional<u32> virtual std::optional<u32>
GetMemoryAddressFromInstruction(const std::string& /*instruction*/) const GetMemoryAddressFromInstruction(const std::string& /*instruction*/) const
{ {
@ -105,11 +99,11 @@ public:
virtual void SetPC(u32 /*address*/) {} virtual void SetPC(u32 /*address*/) {}
virtual void Step() {} virtual void Step() {}
virtual void RunToBreakpoint() {} virtual void RunToBreakpoint() {}
virtual u32 GetColor(const Core::CPUThreadGuard* /*guard*/, u32 /*address*/) const virtual u32 GetColor(const CPUThreadGuard* /*guard*/, u32 /*address*/) const
{ {
return 0xFFFFFFFF; return 0xFFFFFFFF;
} }
virtual std::string GetDescription(u32 /*address*/) const = 0; virtual std::string GetDescription(u32 /*address*/) const = 0;
virtual void Clear(const Core::CPUThreadGuard& guard) = 0; virtual void Clear(const CPUThreadGuard& guard) = 0;
}; };
} // namespace Common } // namespace Core

View File

@ -9,7 +9,7 @@
#include "Common/Debug/MemoryPatches.h" #include "Common/Debug/MemoryPatches.h"
#include "Common/Debug/Watches.h" #include "Common/Debug/Watches.h"
#include "Common/DebugInterface.h" #include "Core/Debugger/DebugInterface.h"
#include "Core/NetworkCaptureLogger.h" #include "Core/NetworkCaptureLogger.h"
namespace Core namespace Core
@ -33,7 +33,7 @@ private:
// wrapper between disasm control and Dolphin debugger // wrapper between disasm control and Dolphin debugger
class PPCDebugInterface final : public Common::DebugInterface class PPCDebugInterface final : public Core::DebugInterface
{ {
public: public:
explicit PPCDebugInterface(Core::System& system); explicit PPCDebugInterface(Core::System& system);

View File

@ -10,9 +10,9 @@
#include <vector> #include <vector>
#include "Common/CommonTypes.h" #include "Common/CommonTypes.h"
#include "Common/DebugInterface.h"
#include "Common/Logging/Log.h" #include "Common/Logging/Log.h"
#include "Core/Core.h" #include "Core/Core.h"
#include "Core/Debugger/DebugInterface.h"
#include "Core/PowerPC/Expression.h" #include "Core/PowerPC/Expression.h"
#include "Core/PowerPC/JitInterface.h" #include "Core/PowerPC/JitInterface.h"
#include "Core/PowerPC/MMU.h" #include "Core/PowerPC/MMU.h"
@ -365,7 +365,7 @@ bool MemChecks::OverlapsMemcheck(u32 address, u32 length) const
}); });
} }
bool TMemCheck::Action(Core::System& system, Common::DebugInterface* debug_interface, u64 value, bool TMemCheck::Action(Core::System& system, Core::DebugInterface* debug_interface, u64 value,
u32 addr, bool write, size_t size, u32 pc) u32 addr, bool write, size_t size, u32 pc)
{ {
if (!is_enabled) if (!is_enabled)

View File

@ -11,7 +11,7 @@
#include "Common/CommonTypes.h" #include "Common/CommonTypes.h"
#include "Core/PowerPC/Expression.h" #include "Core/PowerPC/Expression.h"
namespace Common namespace Core
{ {
class DebugInterface; class DebugInterface;
} }
@ -49,7 +49,7 @@ struct TMemCheck
std::optional<Expression> condition; std::optional<Expression> condition;
// returns whether to break // returns whether to break
bool Action(Core::System& system, Common::DebugInterface* debug_interface, u64 value, u32 addr, bool Action(Core::System& system, Core::DebugInterface* debug_interface, u64 value, u32 addr,
bool write, size_t size, u32 pc); bool write, size_t size, u32 pc);
}; };

View File

@ -19,6 +19,7 @@
#include "Common/Logging/Log.h" #include "Common/Logging/Log.h"
#include "Common/StringUtil.h" #include "Common/StringUtil.h"
#include "Core/Core.h" #include "Core/Core.h"
#include "Core/Debugger/DebugInterface.h"
#include "Core/PowerPC/MMU.h" #include "Core/PowerPC/MMU.h"
#include "Core/PowerPC/PPCAnalyst.h" #include "Core/PowerPC/PPCAnalyst.h"
#include "Core/PowerPC/PowerPC.h" #include "Core/PowerPC/PowerPC.h"

View File

@ -3,19 +3,16 @@
#pragma once #pragma once
#include <map>
#include <string> #include <string>
#include <vector>
#include "Common/CommonTypes.h" #include "Common/CommonTypes.h"
#include "Common/SymbolDB.h" #include "Common/SymbolDB.h"
#include "Core/Debugger/PPCDebugInterface.h"
namespace Core namespace Core
{ {
class CPUThreadGuard; class CPUThreadGuard;
} class DebugInterface;
} // namespace Core
// This has functionality overlapping Debugger_Symbolmap. Should merge that stuff in here later. // This has functionality overlapping Debugger_Symbolmap. Should merge that stuff in here later.
class PPCSymbolDB : public Common::SymbolDB class PPCSymbolDB : public Common::SymbolDB
@ -44,7 +41,7 @@ public:
void LogFunctionCall(u32 addr); void LogFunctionCall(u32 addr);
private: private:
Common::DebugInterface* debugger; Core::DebugInterface* debugger;
}; };
extern PPCSymbolDB g_symbolDB; extern PPCSymbolDB g_symbolDB;

View File

@ -39,7 +39,6 @@
<ClInclude Include="Common\Debug\MemoryPatches.h" /> <ClInclude Include="Common\Debug\MemoryPatches.h" />
<ClInclude Include="Common\Debug\Threads.h" /> <ClInclude Include="Common\Debug\Threads.h" />
<ClInclude Include="Common\Debug\Watches.h" /> <ClInclude Include="Common\Debug\Watches.h" />
<ClInclude Include="Common\DebugInterface.h" />
<ClInclude Include="Common\DynamicLibrary.h" /> <ClInclude Include="Common\DynamicLibrary.h" />
<ClInclude Include="Common\ENet.h" /> <ClInclude Include="Common\ENet.h" />
<ClInclude Include="Common\EnumFormatter.h" /> <ClInclude Include="Common\EnumFormatter.h" />
@ -191,6 +190,7 @@
<ClInclude Include="Core\Core.h" /> <ClInclude Include="Core\Core.h" />
<ClInclude Include="Core\CoreTiming.h" /> <ClInclude Include="Core\CoreTiming.h" />
<ClInclude Include="Core\Debugger\CodeTrace.h" /> <ClInclude Include="Core\Debugger\CodeTrace.h" />
<ClInclude Include="Core\Debugger\DebugInterface.h" />
<ClInclude Include="Core\Debugger\Debugger_SymbolMap.h" /> <ClInclude Include="Core\Debugger\Debugger_SymbolMap.h" />
<ClInclude Include="Core\Debugger\Dump.h" /> <ClInclude Include="Core\Debugger\Dump.h" />
<ClInclude Include="Core\Debugger\GCELF.h" /> <ClInclude Include="Core\Debugger\GCELF.h" />