llvm-project/libunwind/src
Mikhail Maltsev d5323f6a70 [libunwind][AArch64] Fix libunwind::Registers_arm64::jumpto
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
2019-06-17 11:00:21 +00:00
..
AddressSpace.hpp [runtimes] Check if pragma comment(lib, ...) is supported first 2019-05-30 04:40:21 +00:00
CMakeLists.txt [runtimes] Move libunwind, libc++abi and libc++ to lib/$target/c++ and include/c++ 2019-05-22 21:08:33 +00:00
CompactUnwinder.hpp Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
DwarfInstructions.hpp [PPC64][libunwind] Fix r2 not properly restored 2019-05-16 06:49:13 +00:00
DwarfParser.hpp Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
EHHeaderParser.hpp [libunwind] Don't abort if encoutering invalid .eh_frame_hdr 2019-01-24 03:04:42 +00:00
RWMutex.hpp [runtimes] Check if pragma comment(lib, ...) is supported first 2019-05-30 04:40:21 +00:00
Registers.hpp [libunwind] Export the unw_* symbols as weak symbols 2019-04-03 21:50:03 +00:00
Unwind-EHABI.cpp [libunwind] Export the unw_* symbols as weak symbols 2019-04-03 21:50:03 +00:00
Unwind-EHABI.h Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
Unwind-seh.cpp [libunwind] Export the unw_* symbols as weak symbols 2019-04-03 21:50:03 +00:00
Unwind-sjlj.c [libunwind] Export the unw_* symbols as weak symbols 2019-04-03 21:50:03 +00:00
UnwindCursor.hpp [NFC] Fix typo in debug log 2019-04-22 15:40:50 +00:00
UnwindLevel1-gcc-ext.c [libunwind] Export the unw_* symbols as weak symbols 2019-04-03 21:50:03 +00:00
UnwindLevel1.c [NFC] Correct outdated links to the Itanium C++ ABI documentation 2019-04-11 16:37:07 +00:00
UnwindRegistersRestore.S [libunwind][AArch64] Fix libunwind::Registers_arm64::jumpto 2019-06-17 11:00:21 +00:00
UnwindRegistersSave.S [PPC] Fix 32-bit build of libunwind 2019-05-16 06:49:20 +00:00
Unwind_AppleExtras.cpp Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
assembly.h [PPC] Fix 32-bit build of libunwind 2019-05-16 06:49:20 +00:00
config.h [NFC] Move the export attribute after extern "C". 2019-04-12 18:34:19 +00:00
dwarf2.h Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
libunwind.cpp [libunwind] Fix the typo in unw_save_vfp_as_X alias 2019-04-11 13:08:44 +00:00
libunwind_ext.h [libunwind] Export the unw_* symbols as weak symbols 2019-04-03 21:50:03 +00:00