[libunwind][AArch64] Fix libunwind::Registers_arm64::jumpto
The AArch64 version of the libunwind function which restores the
CPU state and resumes execution is not interrupt-safe. It restores
the target value of SP before loading the floating-point registers
from the context struct, but that struct is allocated on the stack
which is being deallocated. This means that if an interrupt occurs
during this function, and uses a lot of stack space, it could
overwrite the values about to be loaded into the floating-point
This patch fixes the issue.
Patch by Oliver Stannard.
Reviewers: phosek, chill
Reviewed By: chill
Subscribers: chill, javed.absar, kristof.beyls, christof, LukeCheeseman, pbarrio, olista01, libcxx-commits
Differential Revision: https://reviews.llvm.org/D63006
git-svn-id: https://llvm.org/svn/llvm-project/libunwind/trunk@363545 91177308-0d34-0410-b5e6-96231b3b80d8
1 file changed