1//===-- NativeRegisterContextDBReg_x86.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-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef lldb_NativeRegisterContextDBReg_x86_h
10#define lldb_NativeRegisterContextDBReg_x86_h
11
12#include "Plugins/Process/Utility/NativeRegisterContextRegisterInfo.h"
13
14namespace lldb_private {
15
16class NativeRegisterContextDBReg_x86
17 : public virtual NativeRegisterContextRegisterInfo {
18public:
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) {}
24
25 Status IsWatchpointHit(uint32_t wp_index, bool &is_hit) override;
26
27 Status GetWatchpointHitIndex(uint32_t &wp_index,
28 lldb::addr_t trap_addr) override;
29
30 Status IsWatchpointVacant(uint32_t wp_index, bool &is_vacant) override;
31
32 bool ClearHardwareWatchpoint(uint32_t wp_index) override;
33
34 Status ClearWatchpointHit(uint32_t wp_index) override;
35
36 Status ClearAllHardwareWatchpoints() override;
37
38 Status SetHardwareWatchpointWithIndex(lldb::addr_t addr, size_t size,
39 uint32_t watch_flags,
40 uint32_t wp_index);
41
42 uint32_t SetHardwareWatchpoint(lldb::addr_t addr, size_t size,
43 uint32_t watch_flags) override;
44
45 lldb::addr_t GetWatchpointAddress(uint32_t wp_index) override;
46
47 uint32_t NumSupportedHardwareWatchpoints() override;
48
49 virtual const RegisterInfo *GetDR(int num) const;
50};
51
52} // namespace lldb_private
53
54#endif // #ifndef lldb_NativeRegisterContextDBReg_x86_h
55

source code of lldb/source/Plugins/Process/Utility/NativeRegisterContextDBReg_x86.h