aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/API/SBThread.cpp
diff options
context:
space:
mode:
authorPavel Labath <pavel@labath.sk>2025-01-17 12:13:30 +0100
committerGitHub <noreply@github.com>2025-01-17 12:13:30 +0100
commitf66a5e220cbc2650a5843db854d0734d2aaa030f (patch)
tree564040c5192307b56e4108cfb3cef325cf5b48e6 /lldb/source/API/SBThread.cpp
parent0d7c8c0e294d23fcfc9a396dafebe1465c471035 (diff)
downloadllvm-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.cpp5
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;