1 //===-- NativeRegisterContextDBReg_x86.h ------------------------*- C++ -*-===//
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
7 //===----------------------------------------------------------------------===//
9 #ifndef lldb_NativeRegisterContextDBReg_x86_h
10 #define lldb_NativeRegisterContextDBReg_x86_h
12 #include "Plugins/Process/Utility/NativeRegisterContextRegisterInfo.h"
14 namespace lldb_private
{
16 class NativeRegisterContextDBReg_x86
17 : public virtual NativeRegisterContextRegisterInfo
{
19 // NB: This constructor is here only because gcc<=6.5 requires a virtual base
20 // class initializer on abstract class (even though it is never used). It can
21 // be deleted once we move to gcc>=7.0.
22 NativeRegisterContextDBReg_x86(NativeThreadProtocol
&thread
)
23 : NativeRegisterContextRegisterInfo(thread
, nullptr) {}
25 Status
IsWatchpointHit(uint32_t wp_index
, bool &is_hit
) override
;
27 Status
GetWatchpointHitIndex(uint32_t &wp_index
,
28 lldb::addr_t trap_addr
) override
;
30 Status
IsWatchpointVacant(uint32_t wp_index
, bool &is_vacant
) override
;
32 bool ClearHardwareWatchpoint(uint32_t wp_index
) override
;
34 Status
ClearWatchpointHit(uint32_t wp_index
) override
;
36 Status
ClearAllHardwareWatchpoints() override
;
38 Status
SetHardwareWatchpointWithIndex(lldb::addr_t addr
, size_t size
,
42 uint32_t SetHardwareWatchpoint(lldb::addr_t addr
, size_t size
,
43 uint32_t watch_flags
) override
;
45 lldb::addr_t
GetWatchpointAddress(uint32_t wp_index
) override
;
47 uint32_t NumSupportedHardwareWatchpoints() override
;
49 virtual const RegisterInfo
*GetDR(int num
) const;
52 } // namespace lldb_private
54 #endif // #ifndef lldb_NativeRegisterContextDBReg_x86_h