mossberg marked 2 inline comments as done. mossberg added inline comments.
================ Comment at: lldb/source/Target/ThreadPlanStepOut.cpp:127-129 + if (!return_address_section) { + LLDB_LOGF(log, "Return address had no section."); + return; ---------------- clayborg wrote: > This will fail for JIT'ed code. Best to ask the process for memory region > information since it will usually be complete mappings for the process, even > if we have no file on disk for the region in question: > > ``` > uint32_t permissions = 0; > const addr_t return_pc = > return_address.GetLoadAddr(&m_thread.GetProcess()->GetTarget()); > if (!m_thread.GetProcess()->GetLoadAddressPermissions(return_pc, > permissions)) { > LLDB_LOGF(log, "No permissions for PC."); > return; > } else if (!(permissions & ePermissionsExecutable)) { > LLDB_LOGF(log, "Return address did not point to executable memory."); > return; > } > ``` > > The issue is we don't always have an object file for stuff we debug. If we > rely on having an object file, like to require sections as your solution did, > then this will fail for any JIT'ed code or any code that we weren't able to > find object files for (remote debugging where we might not have all files). > > Thanks @clayborg! Updated the patch. 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