blob: 6b5238bebe933e57516bbb841c8f1974c5522f8c [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "src/developer/debug/zxdb/client/thread_controller_test.h"
#include "src/developer/debug/zxdb/client/process_impl.h"
#include "src/developer/debug/zxdb/client/session.h"
#include "src/developer/debug/zxdb/client/system.h"
#include "src/developer/debug/zxdb/client/target_impl.h"
#include "src/developer/debug/zxdb/client/thread.h"
#include "src/developer/debug/zxdb/symbols/mock_module_symbols.h"
namespace zxdb {
// static
const uint64_t ThreadControllerTest::kUnsymbolizedModuleAddress;
// static
const uint64_t ThreadControllerTest::kSymbolizedModuleAddress;
ThreadControllerTest::ThreadControllerTest() = default;
ThreadControllerTest::~ThreadControllerTest() = default;
void ThreadControllerTest::SetUp() {
RemoteAPITest::SetUp();
process_ = InjectProcess(0x1234);
thread_ = InjectThread(process_->GetKoid(), 0x7890);
// Inject mock module symbols.
std::string symbolized_build_id("abcd"); // Identifies the module below.
std::string unsymbolized_build_id("zxyz");
module_symbols_ = MakeModuleSymbols();
unsymbolized_module_symbols_ = MakeModuleSymbols();
session().system().GetSymbols()->InjectModuleForTesting(symbolized_build_id,
module_symbols_.get());
session().system().GetSymbols()->InjectModuleForTesting(unsymbolized_build_id,
unsymbolized_module_symbols_.get());
// Make the process load the mocked module symbols and the other one with no symbols.
std::vector<debug_ipc::Module> modules;
debug_ipc::Module unsym_load;
unsym_load.name = "nosym";
unsym_load.base = kUnsymbolizedModuleAddress;
unsym_load.build_id = unsymbolized_build_id;
modules.push_back(unsym_load);
debug_ipc::Module sym_load;
sym_load.name = "sym";
sym_load.base = kSymbolizedModuleAddress;
sym_load.build_id = symbolized_build_id;
modules.push_back(sym_load);
TargetImpl* target = session().system().GetTargetImpls()[0];
target->process()->OnModules(modules, {});
}
fxl::RefPtr<MockModuleSymbols> ThreadControllerTest::MakeModuleSymbols() {
return fxl::MakeRefCounted<MockModuleSymbols>("file.so");
}
} // namespace zxdb