brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 95f9bf6 Raw
60 lines · c
1//===-- RegisterContextWindows.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 liblldb_RegisterContextWindows_H_10#define liblldb_RegisterContextWindows_H_11 12#include "lldb/Target/RegisterContext.h"13#include "lldb/lldb-forward.h"14 15namespace lldb_private {16 17class Thread;18 19class RegisterContextWindows : public lldb_private::RegisterContext {20public:21  // Constructors and Destructors22  RegisterContextWindows(Thread &thread, uint32_t concrete_frame_idx);23 24  virtual ~RegisterContextWindows();25 26  // Subclasses must override these functions27  void InvalidateAllRegisters() override;28 29  bool ReadAllRegisterValues(lldb::WritableDataBufferSP &data_sp) override;30 31  bool WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override;32 33  uint32_t ConvertRegisterKindToRegisterNumber(lldb::RegisterKind kind,34                                               uint32_t num) override;35 36  bool HardwareSingleStep(bool enable) override;37 38  static constexpr uint32_t GetNumHardwareBreakpointSlots() {39    return NUM_HARDWARE_BREAKPOINT_SLOTS;40  }41 42  bool AddHardwareBreakpoint(uint32_t slot, lldb::addr_t address, uint32_t size,43                             bool read, bool write);44  bool RemoveHardwareBreakpoint(uint32_t slot);45 46  uint32_t GetTriggeredHardwareBreakpointSlotId();47 48protected:49  static constexpr unsigned NUM_HARDWARE_BREAKPOINT_SLOTS = 4;50 51  virtual bool CacheAllRegisterValues();52  virtual bool ApplyAllRegisterValues();53 54  CONTEXT m_context;55  bool m_context_stale;56};57} // namespace lldb_private58 59#endif // #ifndef liblldb_RegisterContextWindows_H_60