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

Reply via email to