]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/include/lldb/Breakpoint/BreakpointResolverAddress.h
Upgrade Unbound to 1.6.5. More to follow.
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / include / lldb / Breakpoint / BreakpointResolverAddress.h
1 //===-- BreakpointResolverAddress.h -----------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #ifndef liblldb_BreakpointResolverAddress_h_
11 #define liblldb_BreakpointResolverAddress_h_
12
13 // C Includes
14 // C++ Includes
15 // Other libraries and framework includes
16 // Project includes
17 #include "lldb/Breakpoint/BreakpointResolver.h"
18 #include "lldb/Core/ModuleSpec.h"
19
20 namespace lldb_private {
21
22 //----------------------------------------------------------------------
23 /// @class BreakpointResolverAddress BreakpointResolverAddress.h
24 /// "lldb/Breakpoint/BreakpointResolverAddress.h"
25 /// @brief This class sets breakpoints on a given Address.  This breakpoint only
26 /// takes
27 /// once, and then it won't attempt to reset itself.
28 //----------------------------------------------------------------------
29
30 class BreakpointResolverAddress : public BreakpointResolver {
31 public:
32   BreakpointResolverAddress(Breakpoint *bkpt, const Address &addr);
33
34   BreakpointResolverAddress(Breakpoint *bkpt, const Address &addr,
35                             const FileSpec &module_spec);
36
37   ~BreakpointResolverAddress() override;
38
39   static BreakpointResolver *
40   CreateFromStructuredData(Breakpoint *bkpt,
41                            const StructuredData::Dictionary &options_dict,
42                            Status &error);
43
44   StructuredData::ObjectSP SerializeToStructuredData() override;
45
46   void ResolveBreakpoint(SearchFilter &filter) override;
47
48   void ResolveBreakpointInModules(SearchFilter &filter,
49                                   ModuleList &modules) override;
50
51   Searcher::CallbackReturn SearchCallback(SearchFilter &filter,
52                                           SymbolContext &context, Address *addr,
53                                           bool containing) override;
54
55   Searcher::Depth GetDepth() override;
56
57   void GetDescription(Stream *s) override;
58
59   void Dump(Stream *s) const override;
60
61   /// Methods for support type inquiry through isa, cast, and dyn_cast:
62   static inline bool classof(const BreakpointResolverAddress *) { return true; }
63   static inline bool classof(const BreakpointResolver *V) {
64     return V->getResolverID() == BreakpointResolver::AddressResolver;
65   }
66
67   lldb::BreakpointResolverSP CopyForBreakpoint(Breakpoint &breakpoint) override;
68
69 protected:
70   Address
71       m_addr; // The address - may be Section Offset or may be just an offset
72   lldb::addr_t m_resolved_addr; // The current value of the resolved load
73                                 // address for this breakpoint,
74   FileSpec m_module_filespec;   // If this filespec is Valid, and m_addr is an
75                                 // offset, then it will be converted
76   // to a Section+Offset address in this module, whenever that module gets
77   // around to
78   // being loaded.
79 private:
80   DISALLOW_COPY_AND_ASSIGN(BreakpointResolverAddress);
81 };
82
83 } // namespace lldb_private
84
85 #endif // liblldb_BreakpointResolverAddress_h_