Don't fail step out if remote server doesn't implement qMemoryRegionInfo
authorTed Woodward <ted.woodward@codeaurora.org>
Tue, 28 Jan 2020 19:31:40 +0000 (13:31 -0600)
committerTed Woodward <ted.woodward@codeaurora.org>
Tue, 28 Jan 2020 19:36:06 +0000 (13:36 -0600)
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

Subscribers: lldb-commits

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D72513

lldb/source/Target/ThreadPlanStepOut.cpp

index 9ca1b3fc03aba97a82c59e9efec39a3b51a606c7..eead322f6b891479ced52819b1cf4b98a985512c 100644 (file)
@@ -135,7 +135,6 @@ ThreadPlanStepOut::ThreadPlanStepOut(
                                   m_return_addr);
       LLDB_LOGF(log, "ThreadPlanStepOut(%p): %s", static_cast<void *>(this),
                 m_constructor_errors.GetData());
-      return;
     } else if (!(permissions & ePermissionsExecutable)) {
       m_constructor_errors.Printf("Return address (0x%" PRIx64
                                   ") did not point to executable memory.",