[Lldb-commits] [lldb] 6fd818c - Don't fail step out if remote server doesn't implement qMemoryRegionInfo
Ted Woodward via lldb-commits
lldb-commits at lists.llvm.org
Mon Feb 10 11:41:22 PST 2020
Author: Ted Woodward
Date: 2020-02-10T13:40:44-06:00
New Revision: 6fd818c5a9c565b8aaeaf1ca85ad14735ee0eb0c
URL: https://github.com/llvm/llvm-project/commit/6fd818c5a9c565b8aaeaf1ca85ad14735ee0eb0c
DIFF: https://github.com/llvm/llvm-project/commit/6fd818c5a9c565b8aaeaf1ca85ad14735ee0eb0c.diff
LOG: Don't fail step out if remote server doesn't implement qMemoryRegionInfo
Summary:
The return address validation in D71372 will fail if the memory permissions can't be determined. Many embedded stubs either don't implement the qMemoryRegionInfo packet, or don't have memory permissions at all.
Remove the return from the if clause that calls GetLoadAddressPermissions, so this call failing doesn't cause the step out to abort. Instead, assume that the memory permission check doesn't apply to this type of target.
Reviewers: labath, jingham, clayborg, mossberg
Reviewed By: labath, jingham
Subscribers: lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D72513
Added:
Modified:
lldb/source/Target/ThreadPlanStepOut.cpp
Removed:
################################################################################
diff --git a/lldb/source/Target/ThreadPlanStepOut.cpp b/lldb/source/Target/ThreadPlanStepOut.cpp
index eead322f6b89..7581ccea625a 100644
--- a/lldb/source/Target/ThreadPlanStepOut.cpp
+++ b/lldb/source/Target/ThreadPlanStepOut.cpp
@@ -130,11 +130,9 @@ ThreadPlanStepOut::ThreadPlanStepOut(
uint32_t permissions = 0;
if (!m_thread.GetProcess()->GetLoadAddressPermissions(m_return_addr,
permissions)) {
- m_constructor_errors.Printf("Return address (0x%" PRIx64
- ") permissions not found.",
- m_return_addr);
- LLDB_LOGF(log, "ThreadPlanStepOut(%p): %s", static_cast<void *>(this),
- m_constructor_errors.GetData());
+ LLDB_LOGF(log, "ThreadPlanStepOut(%p): Return address (0x%" PRIx64
+ ") permissions not found.", static_cast<void *>(this),
+ m_return_addr);
} else if (!(permissions & ePermissionsExecutable)) {
m_constructor_errors.Printf("Return address (0x%" PRIx64
") did not point to executable memory.",
More information about the lldb-commits
mailing list