Basic debugger networking.
This commit is contained in:
@@ -175,7 +175,7 @@ class TestRunner {
|
||||
memory.reset(new Memory());
|
||||
memory->Initialize();
|
||||
|
||||
processor.reset(new Processor(memory.get(), nullptr));
|
||||
processor.reset(new Processor(memory.get(), nullptr, nullptr));
|
||||
processor->Setup();
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
#include "xenia/cpu/module.h"
|
||||
#include "xenia/cpu/thread_state.h"
|
||||
#include "xenia/cpu/xex_module.h"
|
||||
#include "xenia/debug/debugger.h"
|
||||
#include "xenia/profiling.h"
|
||||
|
||||
// TODO(benvanik): based on compiler support
|
||||
@@ -70,8 +69,10 @@ class BuiltinModule : public Module {
|
||||
std::string name_;
|
||||
};
|
||||
|
||||
Processor::Processor(xe::Memory* memory, ExportResolver* export_resolver)
|
||||
Processor::Processor(xe::Memory* memory, ExportResolver* export_resolver,
|
||||
debug::Debugger* debugger)
|
||||
: memory_(memory),
|
||||
debugger_(debugger),
|
||||
debug_info_flags_(0),
|
||||
builtin_module_(nullptr),
|
||||
next_builtin_address_(0xFFFF0000ul),
|
||||
@@ -92,7 +93,6 @@ Processor::~Processor() {
|
||||
modules_.clear();
|
||||
}
|
||||
|
||||
debugger_.reset();
|
||||
frontend_.reset();
|
||||
backend_.reset();
|
||||
}
|
||||
@@ -107,10 +107,6 @@ bool Processor::Setup() {
|
||||
// Must be initialized by subclass before calling into this.
|
||||
assert_not_null(memory_);
|
||||
|
||||
// Create debugger first. Other types hook up to it.
|
||||
debugger_.reset(new xe::debug::Debugger(this));
|
||||
debugger_->StartSession();
|
||||
|
||||
std::unique_ptr<Module> builtin_module(new BuiltinModule(this));
|
||||
builtin_module_ = builtin_module.get();
|
||||
modules_.push_back(std::move(builtin_module));
|
||||
@@ -302,7 +298,9 @@ bool Processor::DemandFunction(FunctionInfo* symbol_info,
|
||||
symbol_info->set_function(function);
|
||||
|
||||
// Before we give the symbol back to the rest, let the debugger know.
|
||||
debugger_->OnFunctionDefined(symbol_info, function);
|
||||
if (debugger_) {
|
||||
debugger_->OnFunctionDefined(symbol_info, function);
|
||||
}
|
||||
|
||||
symbol_info->set_status(SymbolInfo::STATUS_DEFINED);
|
||||
symbol_status = symbol_info->status();
|
||||
|
||||
@@ -20,14 +20,9 @@
|
||||
#include "xenia/cpu/function.h"
|
||||
#include "xenia/cpu/module.h"
|
||||
#include "xenia/cpu/thread_state.h"
|
||||
#include "xenia/debug/debugger.h"
|
||||
#include "xenia/memory.h"
|
||||
|
||||
namespace xe {
|
||||
namespace debug {
|
||||
class Debugger;
|
||||
} // namespace debug
|
||||
} // namespace xe
|
||||
|
||||
namespace xe {
|
||||
namespace cpu {
|
||||
|
||||
@@ -43,11 +38,12 @@ enum class Irql : uint32_t {
|
||||
|
||||
class Processor {
|
||||
public:
|
||||
Processor(Memory* memory, ExportResolver* export_resolver);
|
||||
Processor(Memory* memory, ExportResolver* export_resolver,
|
||||
debug::Debugger* debugger);
|
||||
~Processor();
|
||||
|
||||
Memory* memory() const { return memory_; }
|
||||
debug::Debugger* debugger() const { return debugger_.get(); }
|
||||
debug::Debugger* debugger() const { return debugger_; }
|
||||
frontend::PPCFrontend* frontend() const { return frontend_.get(); }
|
||||
backend::Backend* backend() const { return backend_.get(); }
|
||||
ExportResolver* export_resolver() const { return export_resolver_; }
|
||||
@@ -85,11 +81,10 @@ class Processor {
|
||||
bool DemandFunction(FunctionInfo* symbol_info, Function** out_function);
|
||||
|
||||
Memory* memory_;
|
||||
debug::Debugger* debugger_;
|
||||
|
||||
uint32_t debug_info_flags_;
|
||||
|
||||
std::unique_ptr<debug::Debugger> debugger_;
|
||||
|
||||
std::unique_ptr<frontend::PPCFrontend> frontend_;
|
||||
std::unique_ptr<backend::Backend> backend_;
|
||||
ExportResolver* export_resolver_;
|
||||
|
||||
@@ -38,7 +38,8 @@ class TestFunction {
|
||||
|
||||
#if XENIA_TEST_X64
|
||||
{
|
||||
auto processor = std::make_unique<Processor>(memory.get(), nullptr);
|
||||
auto processor =
|
||||
std::make_unique<Processor>(memory.get(), nullptr, nullptr);
|
||||
processor->Setup();
|
||||
processors.emplace_back(std::move(processor));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user