[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.
This commit is contained in:
Pavel Labath
2025-02-25 09:47:30 +01:00
committed by GitHub
parent 3083aea444
commit 5088e1b435

View File

@@ -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());