cbd1e83154
Fix two bugs in __cxa_end_cleanup() Per the EHABI32 specification, __cxa_end_cleanup must take care to preserve registers before calling _Unwind_Resume(). So, libcxxrt uses an assembly stub which preserves caller-saved registers around the call to __cxa_get_cleanup(). But: - it failed to restore them properly, - it did not preserve the link register. Fix both of these problems. This is needed to fix exception unwinding on FreeBSD with LLVM 14. Note that r4 is callee-saved but is pushed onto the stack to preserve stack pointer alignment. Sponsored-by: The FreeBSD Foundation MFC after: 1 week |
||
---|---|---|
.. | ||
abi_namespace.h | ||
atomic.h | ||
auxhelper.cc | ||
cxxabi.h | ||
dwarf_eh.h | ||
dynamic_cast.cc | ||
exception.cc | ||
FREEBSD-upgrade | ||
guard.cc | ||
libelftc_dem_gnu3.c | ||
LICENSE | ||
memory.cc | ||
noexception.cc | ||
stdexcept.cc | ||
stdexcept.h | ||
terminate.cc | ||
typeinfo.cc | ||
typeinfo.h | ||
unwind-arm.h | ||
unwind-itanium.h | ||
unwind.h |