summaryrefslogtreecommitdiff
path: root/lldb/source/Breakpoint/BreakpointResolverAddress.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2020-07-26 19:36:28 +0000
committerDimitry Andric <dim@FreeBSD.org>2020-07-26 19:36:28 +0000
commitcfca06d7963fa0909f90483b42a6d7d194d01e08 (patch)
tree209fb2a2d68f8f277793fc8df46c753d31bc853b /lldb/source/Breakpoint/BreakpointResolverAddress.cpp
parent706b4fc47bbc608932d3b491ae19a3b9cde9497b (diff)
Notes
Diffstat (limited to 'lldb/source/Breakpoint/BreakpointResolverAddress.cpp')
-rw-r--r--lldb/source/Breakpoint/BreakpointResolverAddress.cpp35
1 files changed, 17 insertions, 18 deletions
diff --git a/lldb/source/Breakpoint/BreakpointResolverAddress.cpp b/lldb/source/Breakpoint/BreakpointResolverAddress.cpp
index b98568098b4b5..2c56912b56af8 100644
--- a/lldb/source/Breakpoint/BreakpointResolverAddress.cpp
+++ b/lldb/source/Breakpoint/BreakpointResolverAddress.cpp
@@ -1,4 +1,4 @@
-//===-- BreakpointResolverAddress.cpp ---------------------------*- C++ -*-===//
+//===-- BreakpointResolverAddress.cpp -------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
@@ -22,21 +22,19 @@ using namespace lldb_private;
// BreakpointResolverAddress:
BreakpointResolverAddress::BreakpointResolverAddress(
- Breakpoint *bkpt, const Address &addr, const FileSpec &module_spec)
+ const BreakpointSP &bkpt, const Address &addr, const FileSpec &module_spec)
: BreakpointResolver(bkpt, BreakpointResolver::AddressResolver),
m_addr(addr), m_resolved_addr(LLDB_INVALID_ADDRESS),
m_module_filespec(module_spec) {}
-BreakpointResolverAddress::BreakpointResolverAddress(Breakpoint *bkpt,
+BreakpointResolverAddress::BreakpointResolverAddress(const BreakpointSP &bkpt,
const Address &addr)
: BreakpointResolver(bkpt, BreakpointResolver::AddressResolver),
m_addr(addr), m_resolved_addr(LLDB_INVALID_ADDRESS), m_module_filespec() {
}
-BreakpointResolverAddress::~BreakpointResolverAddress() {}
-
BreakpointResolver *BreakpointResolverAddress::CreateFromStructuredData(
- Breakpoint *bkpt, const StructuredData::Dictionary &options_dict,
+ const BreakpointSP &bkpt, const StructuredData::Dictionary &options_dict,
Status &error) {
llvm::StringRef module_name;
lldb::addr_t addr_offset;
@@ -100,7 +98,7 @@ void BreakpointResolverAddress::ResolveBreakpoint(SearchFilter &filter) {
bool re_resolve = false;
if (m_addr.GetSection() || m_module_filespec)
re_resolve = true;
- else if (m_breakpoint->GetNumLocations() == 0)
+ else if (GetBreakpoint()->GetNumLocations() == 0)
re_resolve = true;
if (re_resolve)
@@ -113,7 +111,7 @@ void BreakpointResolverAddress::ResolveBreakpointInModules(
bool re_resolve = false;
if (m_addr.GetSection())
re_resolve = true;
- else if (m_breakpoint->GetNumLocations() == 0)
+ else if (GetBreakpoint()->GetNumLocations() == 0)
re_resolve = true;
if (re_resolve)
@@ -122,15 +120,16 @@ void BreakpointResolverAddress::ResolveBreakpointInModules(
Searcher::CallbackReturn BreakpointResolverAddress::SearchCallback(
SearchFilter &filter, SymbolContext &context, Address *addr) {
- assert(m_breakpoint != nullptr);
+ BreakpointSP breakpoint_sp = GetBreakpoint();
+ Breakpoint &breakpoint = *breakpoint_sp;
if (filter.AddressPasses(m_addr)) {
- if (m_breakpoint->GetNumLocations() == 0) {
+ if (breakpoint.GetNumLocations() == 0) {
// If the address is just an offset, and we're given a module, see if we
// can find the appropriate module loaded in the binary, and fix up
// m_addr to use that.
if (!m_addr.IsSectionOffset() && m_module_filespec) {
- Target &target = m_breakpoint->GetTarget();
+ Target &target = breakpoint.GetTarget();
ModuleSpec module_spec(m_module_filespec);
ModuleSP module_sp = target.GetImages().FindFirstModule(module_spec);
if (module_sp) {
@@ -140,9 +139,9 @@ Searcher::CallbackReturn BreakpointResolverAddress::SearchCallback(
}
}
- m_resolved_addr = m_addr.GetLoadAddress(&m_breakpoint->GetTarget());
+ m_resolved_addr = m_addr.GetLoadAddress(&breakpoint.GetTarget());
BreakpointLocationSP bp_loc_sp(AddLocation(m_addr));
- if (bp_loc_sp && !m_breakpoint->IsInternal()) {
+ if (bp_loc_sp && !breakpoint.IsInternal()) {
StreamString s;
bp_loc_sp->GetDescription(&s, lldb::eDescriptionLevelVerbose);
Log *log(
@@ -150,9 +149,9 @@ Searcher::CallbackReturn BreakpointResolverAddress::SearchCallback(
LLDB_LOGF(log, "Added location: %s\n", s.GetData());
}
} else {
- BreakpointLocationSP loc_sp = m_breakpoint->GetLocationAtIndex(0);
+ BreakpointLocationSP loc_sp = breakpoint.GetLocationAtIndex(0);
lldb::addr_t cur_load_location =
- m_addr.GetLoadAddress(&m_breakpoint->GetTarget());
+ m_addr.GetLoadAddress(&breakpoint.GetTarget());
if (cur_load_location != m_resolved_addr) {
m_resolved_addr = cur_load_location;
loc_sp->ClearBreakpointSite();
@@ -169,7 +168,7 @@ lldb::SearchDepth BreakpointResolverAddress::GetDepth() {
void BreakpointResolverAddress::GetDescription(Stream *s) {
s->PutCString("address = ");
- m_addr.Dump(s, m_breakpoint->GetTarget().GetProcessSP().get(),
+ m_addr.Dump(s, GetBreakpoint()->GetTarget().GetProcessSP().get(),
Address::DumpStyleModuleWithFileAddress,
Address::DumpStyleLoadAddress);
}
@@ -177,8 +176,8 @@ void BreakpointResolverAddress::GetDescription(Stream *s) {
void BreakpointResolverAddress::Dump(Stream *s) const {}
lldb::BreakpointResolverSP
-BreakpointResolverAddress::CopyForBreakpoint(Breakpoint &breakpoint) {
+BreakpointResolverAddress::CopyForBreakpoint(BreakpointSP &breakpoint) {
lldb::BreakpointResolverSP ret_sp(
- new BreakpointResolverAddress(&breakpoint, m_addr));
+ new BreakpointResolverAddress(breakpoint, m_addr));
return ret_sp;
}