| // 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 |