Skip to content

Commit 01e980e

Browse files
authored
[lldb] Use Address to setup breakpoint (#94794)
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 4312075 commit 01e980e

File tree

2 files changed

+6
-21
lines changed

2 files changed

+6
-21
lines changed

lldb/source/Plugins/InstrumentationRuntime/ASanLibsanitizers/InstrumentationRuntimeASanLibsanitizers.cpp

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,17 +90,9 @@ void InstrumentationRuntimeASanLibsanitizers::Activate() {
9090
if (!process_sp)
9191
return;
9292

93-
lldb::ModuleSP module_sp = GetRuntimeModuleSP();
94-
9593
Breakpoint *breakpoint = ReportRetriever::SetupBreakpoint(
96-
module_sp, process_sp, ConstString("sanitizers_address_on_report"));
97-
98-
if (!breakpoint) {
99-
breakpoint = ReportRetriever::SetupBreakpoint(
100-
module_sp, process_sp,
101-
ConstString("_Z22raise_sanitizers_error23sanitizer_error_context"));
102-
}
103-
94+
GetRuntimeModuleSP(), process_sp,
95+
ConstString("sanitizers_address_on_report"));
10496
if (!breakpoint)
10597
return;
10698

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)