brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · a79c5cc Raw
50 lines · c
1//===-- RegisterInfoInterface.h --------------------------------*- C++ -*-===//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_UTILITY_REGISTERINFOINTERFACE_H10#define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERINFOINTERFACE_H11 12#include "lldb/Utility/ArchSpec.h"13#include "lldb/lldb-private-types.h"14#include <vector>15 16namespace lldb_private {17 18/// \class RegisterInfoInterface19///20/// RegisterInfo interface to patch RegisterInfo structure for archs.21class RegisterInfoInterface {22public:23  RegisterInfoInterface(const lldb_private::ArchSpec &target_arch)24      : m_target_arch(target_arch) {}25  virtual ~RegisterInfoInterface() = default;26 27  virtual size_t GetGPRSize() const = 0;28 29  virtual const lldb_private::RegisterInfo *GetRegisterInfo() const = 0;30 31  // Returns the number of registers including the user registers and the32  // lldb internal registers also33  virtual uint32_t GetRegisterCount() const = 0;34 35  // Returns the number of the user registers (excluding the registers36  // kept for lldb internal use only). Subclasses should override it if37  // they belongs to an architecture with lldb internal registers.38  virtual uint32_t GetUserRegisterCount() const { return GetRegisterCount(); }39 40  const lldb_private::ArchSpec &GetTargetArchitecture() const {41    return m_target_arch;42  }43 44private:45  lldb_private::ArchSpec m_target_arch;46};47} // namespace lldb_private48 49#endif50