ted added a comment. I've got another failure case for this. If the remote gdbserver doesn't implement qMemoryRegionInfo or qXfer:memory-map:read, thread step-out will fail.
error: Could not create return address breakpoint. Return address (0x5bc0) permissions not found. That comes from this code: 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()); return; GetLoadAddressPermissions does this: Status error(GetMemoryRegionInfo(load_addr, range_info)); if (!error.Success()) return false; and ProcessGDBRemote::GetMemoryRegionInfo will send a qMemoryRegionInfo. If that fails, it will try qXfer::memory-map:read. qMemoryRegionInfo isn't required: //---------------------------------------------------------------------- // "qMemoryRegionInfo:<addr>" // // BRIEF // Get information about the address range that contains "<addr>" // // PRIORITY TO IMPLEMENT // Medium. This is nice to have, but it isn't necessary. Many embedded stubs do not implement this, which means thread step-out won't work with them anymore. How should we fix this? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D71372/new/ https://reviews.llvm.org/D71372 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits