brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 6ca31e5 Raw
71 lines · c
1//===----------------------------------------------------------------------===//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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLDB_SOURCE_PLUGINS_PROCESS_WASM_REGISTERCONTEXTWASM_H10#define LLDB_SOURCE_PLUGINS_PROCESS_WASM_REGISTERCONTEXTWASM_H11 12#include "Plugins/Process/gdb-remote/GDBRemoteRegisterContext.h"13#include "Plugins/Process/gdb-remote/ThreadGDBRemote.h"14#include "ThreadWasm.h"15#include "Utility/WasmVirtualRegisters.h"16#include "lldb/lldb-private-types.h"17#include <unordered_map>18 19namespace lldb_private {20namespace wasm {21 22class RegisterContextWasm;23 24typedef std::shared_ptr<RegisterContextWasm> RegisterContextWasmSP;25 26struct WasmVirtualRegisterInfo : public RegisterInfo {27  WasmVirtualRegisterKinds kind;28  uint32_t index;29 30  WasmVirtualRegisterInfo(WasmVirtualRegisterKinds kind, uint32_t index)31      : RegisterInfo(), kind(kind), index(index) {}32};33 34class RegisterContextWasm35    : public process_gdb_remote::GDBRemoteRegisterContext {36public:37  RegisterContextWasm(38      process_gdb_remote::ThreadGDBRemote &thread, uint32_t concrete_frame_idx,39      process_gdb_remote::GDBRemoteDynamicRegisterInfoSP reg_info_sp);40 41  ~RegisterContextWasm() override;42 43  uint32_t ConvertRegisterKindToRegisterNumber(lldb::RegisterKind kind,44                                               uint32_t num) override;45 46  void InvalidateAllRegisters() override;47 48  size_t GetRegisterCount() override;49 50  const RegisterInfo *GetRegisterInfoAtIndex(size_t reg) override;51 52  size_t GetRegisterSetCount() override;53 54  const RegisterSet *GetRegisterSet(size_t reg_set) override;55 56  bool ReadRegister(const RegisterInfo *reg_info,57                    RegisterValue &value) override;58 59  bool WriteRegister(const RegisterInfo *reg_info,60                     const RegisterValue &value) override;61 62private:63  std::unordered_map<size_t, std::unique_ptr<WasmVirtualRegisterInfo>>64      m_register_map;65};66 67} // namespace wasm68} // namespace lldb_private69 70#endif71