diff options
author | Pavel Labath <pavel@labath.sk> | 2025-01-17 12:13:30 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-01-17 12:13:30 +0100 |
commit | f66a5e220cbc2650a5843db854d0734d2aaa030f (patch) | |
tree | 564040c5192307b56e4108cfb3cef325cf5b48e6 /lldb/source/API/SBThread.cpp | |
parent | 0d7c8c0e294d23fcfc9a396dafebe1465c471035 (diff) | |
download | llvm-f66a5e220cbc2650a5843db854d0734d2aaa030f.zip llvm-f66a5e220cbc2650a5843db854d0734d2aaa030f.tar.gz llvm-f66a5e220cbc2650a5843db854d0734d2aaa030f.tar.bz2 |
[lldb] Fix SBThread::StepOverUntil for discontinuous functions (#123046)
I think the only issue here was that we would erroneously consider
functions which are "in the middle" of the function were stepping to as
a part of the function, and would try to step into them (likely stepping
out of the function instead) instead of giving up early.
Diffstat (limited to 'lldb/source/API/SBThread.cpp')
-rw-r--r-- | lldb/source/API/SBThread.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lldb/source/API/SBThread.cpp b/lldb/source/API/SBThread.cpp index 4e61c83..cc84807 100644 --- a/lldb/source/API/SBThread.cpp +++ b/lldb/source/API/SBThread.cpp @@ -842,7 +842,6 @@ SBError SBThread::StepOverUntil(lldb::SBFrame &sb_frame, // appropriate error message. bool all_in_function = true; - AddressRange fun_range = frame_sc.function->GetAddressRange(); std::vector<addr_t> step_over_until_addrs; const bool abort_other_plans = false; @@ -859,7 +858,9 @@ SBError SBThread::StepOverUntil(lldb::SBFrame &sb_frame, addr_t step_addr = sc.line_entry.range.GetBaseAddress().GetLoadAddress(target); if (step_addr != LLDB_INVALID_ADDRESS) { - if (fun_range.ContainsLoadAddress(step_addr, target)) + AddressRange unused_range; + if (frame_sc.function->GetRangeContainingLoadAddress(step_addr, *target, + unused_range)) step_over_until_addrs.push_back(step_addr); else all_in_function = false; |