[Lldb-commits] [lldb] 5088e1b - [lldb] Avoid Function::GetAddressRange in ThreadPlanStepRange::InSymbol (#128515)
via lldb-commits
lldb-commits at lists.llvm.org
Tue Feb 25 00:47:34 PST 2025
Author: Pavel Labath
Date: 2025-02-25T09:47:30+01:00
New Revision: 5088e1b435fd06de2bfccd3894dcc2f2c326630f
URL: https://github.com/llvm/llvm-project/commit/5088e1b435fd06de2bfccd3894dcc2f2c326630f
DIFF: https://github.com/llvm/llvm-project/commit/5088e1b435fd06de2bfccd3894dcc2f2c326630f.diff
LOG: [lldb] Avoid Function::GetAddressRange in ThreadPlanStepRange::InSymbol (#128515)
The existing implementation would probably produce false positives for
discontinuous functions. I haven't tried reproducing it because setting
up discontinuous functions (and executing them, in particular) is pretty
complex and there's nothing particularly interesting happening here.
Added:
Modified:
lldb/source/Target/ThreadPlanStepRange.cpp
Removed:
################################################################################
diff --git a/lldb/source/Target/ThreadPlanStepRange.cpp b/lldb/source/Target/ThreadPlanStepRange.cpp
index de4cd5995f695..78e1270edcdab 100644
--- a/lldb/source/Target/ThreadPlanStepRange.cpp
+++ b/lldb/source/Target/ThreadPlanStepRange.cpp
@@ -197,9 +197,11 @@ bool ThreadPlanStepRange::InRange() {
bool ThreadPlanStepRange::InSymbol() {
lldb::addr_t cur_pc = GetThread().GetRegisterContext()->GetPC();
if (m_addr_context.function != nullptr) {
- return m_addr_context.function->GetAddressRange().ContainsLoadAddress(
- cur_pc, &GetTarget());
- } else if (m_addr_context.symbol && m_addr_context.symbol->ValueIsAddress()) {
+ AddressRange unused_range;
+ return m_addr_context.function->GetRangeContainingLoadAddress(
+ cur_pc, GetTarget(), unused_range);
+ }
+ if (m_addr_context.symbol && m_addr_context.symbol->ValueIsAddress()) {
AddressRange range(m_addr_context.symbol->GetAddressRef(),
m_addr_context.symbol->GetByteSize());
return range.ContainsLoadAddress(cur_pc, &GetTarget());
More information about the lldb-commits
mailing list