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

Stephen Peckham via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 31 07:28:58 PDT 2023


stephenpeckham added inline comments.


================
Comment at: libunwind/src/UnwindCursor.hpp:2538
 
   if (nextReturnAddress > 0x01 && nextReturnAddress < 0x10000) {
     _LIBUNWIND_TRACE_UNWINDING("The next is a signal handler frame: "
----------------
stephenpeckham wrote:
> This code wasn't changed, but the check could be done at the beginning of the function instead of the end. With this change, isSignalFrame does not need to be updated.
Retracting this comment.  The value of _isSignalFrame can be queried, so the value has to be computed here.


================
Comment at: libunwind/test/aix_signal_unwind.pass.sh.S:159
+        std 0, 16(1)
+        ld 3, L..C0(2)                  # @badp
+        ld 4, 0(3)
----------------
I suggest you add "bl $+4" to modify LR as if an internal function had been called.


================
Comment at: libunwind/test/aix_signal_unwind.pass.sh.S:208
+        stw 0, 8(1)
+        lwz 3, L..C0(2)                 # @badp
+        lwz 4, 0(3)
----------------
add "bl $+4"


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