1 //===-- BreakpointResolverAddress.cpp ---------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #include "lldb/Breakpoint/BreakpointResolverAddress.h"
14 // Other libraries and framework includes
16 #include "lldb/lldb-private-log.h"
18 #include "lldb/Breakpoint/BreakpointLocation.h"
19 #include "lldb/Core/Log.h"
20 #include "lldb/Core/StreamString.h"
21 #include "lldb/Target/Target.h"
24 using namespace lldb_private;
26 //----------------------------------------------------------------------
27 // BreakpointResolverAddress:
28 //----------------------------------------------------------------------
29 BreakpointResolverAddress::BreakpointResolverAddress
34 BreakpointResolver (bkpt, BreakpointResolver::AddressResolver),
39 BreakpointResolverAddress::~BreakpointResolverAddress ()
45 BreakpointResolverAddress::ResolveBreakpoint (SearchFilter &filter)
47 // The address breakpoint only takes once, so if we've already set it we're done.
48 if (m_breakpoint->GetNumLocations() > 0)
51 BreakpointResolver::ResolveBreakpoint(filter);
55 BreakpointResolverAddress::ResolveBreakpointInModules
61 // The address breakpoint only takes once, so if we've already set it we're done.
62 if (m_breakpoint->GetNumLocations() > 0)
65 BreakpointResolver::ResolveBreakpointInModules (filter, modules);
68 Searcher::CallbackReturn
69 BreakpointResolverAddress::SearchCallback
72 SymbolContext &context,
77 assert (m_breakpoint != NULL);
79 if (filter.AddressPasses (m_addr))
81 BreakpointLocationSP bp_loc_sp(m_breakpoint->AddLocation(m_addr));
82 if (bp_loc_sp && !m_breakpoint->IsInternal())
85 bp_loc_sp->GetDescription(&s, lldb::eDescriptionLevelVerbose);
86 Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_BREAKPOINTS));
88 log->Printf ("Added location: %s\n", s.GetData());
91 return Searcher::eCallbackReturnStop;
95 BreakpointResolverAddress::GetDepth()
97 return Searcher::eDepthTarget;
101 BreakpointResolverAddress::GetDescription (Stream *s)
103 s->PutCString ("address = ");
104 m_addr.Dump(s, m_breakpoint->GetTarget().GetProcessSP().get(), Address::DumpStyleLoadAddress, Address::DumpStyleModuleWithFileAddress);
108 BreakpointResolverAddress::Dump (Stream *s) const