LLDB mainline
RegisterContextUnifiedCore.h
Go to the documentation of this file.
1//===-- RegisterContextUnifiedCore.h --------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLDB_SOURCE_PLUGINS_PROCESS_REGISTERCONTEXT_UNIFIED_CORE_H
10#define LLDB_SOURCE_PLUGINS_PROCESS_REGISTERCONTEXT_UNIFIED_CORE_H
11
12#include <string>
13#include <vector>
14
19#include "lldb/lldb-private.h"
20
21namespace lldb_private {
22
24public:
26 Thread &thread, uint32_t concrete_frame_idx,
27 lldb::RegisterContextSP core_thread_regctx_sp,
28 lldb_private::StructuredData::ObjectSP metadata_thread_registers);
29
30 void InvalidateAllRegisters() override {};
31
32 size_t GetRegisterCount() override;
33
34 const lldb_private::RegisterInfo *GetRegisterInfoAtIndex(size_t reg) override;
35
36 size_t GetRegisterSetCount() override;
37
38 const lldb_private::RegisterSet *GetRegisterSet(size_t set) override;
39
40 bool ReadRegister(const lldb_private::RegisterInfo *reg_info,
41 lldb_private::RegisterValue &value) override;
42
43 bool WriteRegister(const lldb_private::RegisterInfo *reg_info,
44 const lldb_private::RegisterValue &value) override;
45
46private:
47 std::vector<lldb_private::RegisterSet> m_register_sets;
48 std::vector<lldb_private::RegisterInfo> m_register_infos;
49 /// For each register set, an array of register numbers included.
50 std::map<size_t, std::vector<uint32_t>> m_regset_regnum_collection;
51 /// Bytes of the register contents.
52 std::vector<uint8_t> m_register_data;
53};
54
55} // namespace lldb_private
56
57#endif // LLDB_SOURCE_PLUGINS_PROCESS_REGISTERCONTEXT_UNIFIED_CORE_H
const lldb_private::RegisterSet * GetRegisterSet(size_t set) override
bool ReadRegister(const lldb_private::RegisterInfo *reg_info, lldb_private::RegisterValue &value) override
std::vector< lldb_private::RegisterInfo > m_register_infos
std::vector< lldb_private::RegisterSet > m_register_sets
bool WriteRegister(const lldb_private::RegisterInfo *reg_info, const lldb_private::RegisterValue &value) override
const lldb_private::RegisterInfo * GetRegisterInfoAtIndex(size_t reg) override
RegisterContextUnifiedCore(Thread &thread, uint32_t concrete_frame_idx, lldb::RegisterContextSP core_thread_regctx_sp, lldb_private::StructuredData::ObjectSP metadata_thread_registers)
std::vector< uint8_t > m_register_data
Bytes of the register contents.
std::map< size_t, std::vector< uint32_t > > m_regset_regnum_collection
For each register set, an array of register numbers included.
RegisterContext(Thread &thread, uint32_t concrete_frame_idx)
std::shared_ptr< Object > ObjectSP
A class that represents a running process on the host machine.
std::shared_ptr< lldb_private::RegisterContext > RegisterContextSP
Every register is described in detail including its name, alternate name (optional),...
Registers are grouped into register sets.