forked from OSchip/llvm-project
d5323f6a70
Summary: 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 registers. 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 Tags: #libc Differential Revision: https://reviews.llvm.org/D63006 llvm-svn: 363545 |
||
---|---|---|
.. | ||
AddressSpace.hpp | ||
CMakeLists.txt | ||
CompactUnwinder.hpp | ||
DwarfInstructions.hpp | ||
DwarfParser.hpp | ||
EHHeaderParser.hpp | ||
RWMutex.hpp | ||
Registers.hpp | ||
Unwind-EHABI.cpp | ||
Unwind-EHABI.h | ||
Unwind-seh.cpp | ||
Unwind-sjlj.c | ||
UnwindCursor.hpp | ||
UnwindLevel1-gcc-ext.c | ||
UnwindLevel1.c | ||
UnwindRegistersRestore.S | ||
UnwindRegistersSave.S | ||
Unwind_AppleExtras.cpp | ||
assembly.h | ||
config.h | ||
dwarf2.h | ||
libunwind.cpp | ||
libunwind_ext.h |