[PATCH] D158655: [libunwind][AIX] Fix problem with stepping up from a leaf function when unwinding started in a signal handler

Hubert Tong via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 25 13:15:40 PDT 2023


hubert.reinterpretcast added inline comments.


================
Comment at: libunwind/src/UnwindCursor.hpp:2504
+    // sigcontext is used as the return address.
+    if (!usedLRFromSigContext)
+      newRegisters.setSP(lastStack);
----------------
I don't think there should a condition here at all. A fix needs to be made at line 2324 (otherwise the wrong link area would be used for retrieving a saved LR when `stores_bc` is `0` and `saves_lr` is `1`).


================
Comment at: libunwind/src/UnwindCursor.hpp:2324
   // lastStack points to the stack frame of the next routine up.
   pint_t lastStack = *(reinterpret_cast<pint_t *>(registers.getSP()));
 
----------------
hubert.reinterpretcast wrote:
> This only covers the case when `stores_bc` is `1` in the traceback table.
@xingxue, is a change coming for this? I think this also falls into "cases that arise when unwinding past a signal handler".


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D158655/new/

https://reviews.llvm.org/D158655



More information about the llvm-commits mailing list