blob: 481b3fe12d575f98c999ca3b68e25c7f0fda9d02 [file] [log] [blame]
// Copyright 2019 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/symbols/symbol_data_provider.h"
#include "src/developer/debug/shared/message_loop.h"
#include "src/developer/debug/zxdb/common/err.h"
namespace zxdb {
namespace {
Err NoProcessErr() { return Err("No process for memory operations."); }
Err NoFrameErr() { return Err("No stack frame to evaluate."); }
} // namespace
debug_ipc::Arch SymbolDataProvider::GetArch() { return debug_ipc::Arch::kUnknown; }
std::optional<containers::array_view<uint8_t>> SymbolDataProvider::GetRegister(
debug_ipc::RegisterID id) {
return containers::array_view<uint8_t>(); // Known to be unknown.
}
void SymbolDataProvider::GetRegisterAsync(debug_ipc::RegisterID, GetRegisterCallback cb) {
debug_ipc::MessageLoop::Current()->PostTask(
FROM_HERE, [cb = std::move(cb)]() mutable { cb(NoFrameErr(), std::vector<uint8_t>()); });
}
void SymbolDataProvider::WriteRegister(debug_ipc::RegisterID id, std::vector<uint8_t> data,
WriteCallback cb) {
debug_ipc::MessageLoop::Current()->PostTask(FROM_HERE,
[cb = std::move(cb)]() mutable { cb(NoFrameErr()); });
}
std::optional<uint64_t> SymbolDataProvider::GetFrameBase() { return std::nullopt; }
void SymbolDataProvider::GetFrameBaseAsync(GetFrameBaseCallback cb) {
debug_ipc::MessageLoop::Current()->PostTask(
FROM_HERE, [cb = std::move(cb)]() mutable { cb(NoFrameErr(), 0); });
}
uint64_t SymbolDataProvider::GetCanonicalFrameAddress() const { return 0; }
std::optional<uint64_t> SymbolDataProvider::GetDebugAddressForContext(
const SymbolContext& /*context*/) const {
return std::nullopt;
}
void SymbolDataProvider::GetTLSSegment(const SymbolContext& /*symbol_context*/,
GetTLSSegmentCallback cb) {
cb(NoProcessErr());
}
void SymbolDataProvider::GetMemoryAsync(uint64_t address, uint32_t size, GetMemoryCallback cb) {
debug_ipc::MessageLoop::Current()->PostTask(
FROM_HERE, [cb = std::move(cb)]() mutable { cb(NoProcessErr(), std::vector<uint8_t>()); });
}
void SymbolDataProvider::WriteMemory(uint64_t address, std::vector<uint8_t> data,
WriteCallback cb) {
debug_ipc::MessageLoop::Current()->PostTask(
FROM_HERE, [cb = std::move(cb)]() mutable { cb(NoProcessErr()); });
}
} // namespace zxdb