Skip to content

Commit 40fd912

Browse files
committed
[lldb] Use Address to setup breakpoint
Use `Address` (instead of `addr_t`) to setup breakpoint in `ReportRetriever::SetupBreakpoint`. This is cleaner and the breakpoint should now survive re-running of the binary. rdar://124399066
1 parent b01ac51 commit 40fd912

File tree

1 file changed

+4
-11
lines changed

1 file changed

+4
-11
lines changed

lldb/source/Plugins/InstrumentationRuntime/Utility/ReportRetriever.cpp

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,6 @@ bool ReportRetriever::NotifyBreakpointHit(ProcessSP process_sp,
219219
return true; // Return true to stop the target
220220
}
221221

222-
// FIXME: Setup the breakpoint using a less fragile SPI. rdar://124399066
223222
Breakpoint *ReportRetriever::SetupBreakpoint(ModuleSP module_sp,
224223
ProcessSP process_sp,
225224
ConstString symbol_name) {
@@ -235,19 +234,13 @@ Breakpoint *ReportRetriever::SetupBreakpoint(ModuleSP module_sp,
235234
if (!symbol->ValueIsAddress() || !symbol->GetAddressRef().IsValid())
236235
return nullptr;
237236

238-
Target &target = process_sp->GetTarget();
239-
addr_t symbol_address = symbol->GetAddressRef().GetOpcodeLoadAddress(&target);
240-
241-
if (symbol_address == LLDB_INVALID_ADDRESS)
242-
return nullptr;
243-
237+
const Address &address = symbol->GetAddressRef();
244238
const bool internal = true;
245239
const bool hardware = false;
246240

247-
Breakpoint *breakpoint =
248-
process_sp->GetTarget()
249-
.CreateBreakpoint(symbol_address, internal, hardware)
250-
.get();
241+
Breakpoint *breakpoint = process_sp->GetTarget()
242+
.CreateBreakpoint(address, internal, hardware)
243+
.get();
251244

252245
return breakpoint;
253246
}

0 commit comments

Comments
 (0)