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 19 namespace lldb_private { 20 21 //---------------------------------------------------------------------- 22 /// @class BreakpointResolverAddress BreakpointResolverAddress.h "lldb/Breakpoint/BreakpointResolverAddress.h" 23 /// @brief This class sets breakpoints on a given Address. This breakpoint only takes 24 /// once, and then it won't attempt to reset itself. 25 //---------------------------------------------------------------------- 26 27 class BreakpointResolverAddress: 28 public BreakpointResolver 29 { 30 public: 31 BreakpointResolverAddress (Breakpoint *bkpt, 32 const Address &addr); 33 34 virtual 35 ~BreakpointResolverAddress (); 36 37 void 38 ResolveBreakpoint (SearchFilter &filter) override; 39 40 void 41 ResolveBreakpointInModules (SearchFilter &filter, 42 ModuleList &modules) override; 43 44 Searcher::CallbackReturn 45 SearchCallback (SearchFilter &filter, 46 SymbolContext &context, 47 Address *addr, 48 bool containing) override; 49 50 Searcher::Depth 51 GetDepth () override; 52 53 void 54 GetDescription (Stream *s) override; 55 56 void 57 Dump (Stream *s) const override; 58 59 /// Methods for support type inquiry through isa, cast, and dyn_cast: classof(const BreakpointResolverAddress *)60 static inline bool classof(const BreakpointResolverAddress *) { return true; } classof(const BreakpointResolver * V)61 static inline bool classof(const BreakpointResolver *V) { 62 return V->getResolverID() == BreakpointResolver::AddressResolver; 63 } 64 65 lldb::BreakpointResolverSP 66 CopyForBreakpoint (Breakpoint &breakpoint) override; 67 68 protected: 69 Address m_addr; 70 71 private: 72 DISALLOW_COPY_AND_ASSIGN(BreakpointResolverAddress); 73 }; 74 75 } // namespace lldb_private 76 77 #endif // liblldb_BreakpointResolverAddress_h_ 78