HomeFreeBSD

Merge libcxxrt commit 5d8a15823a103bbc27f1bfdcf2b5aa008fab57dd

Description

Merge libcxxrt commit 5d8a15823a103bbc27f1bfdcf2b5aa008fab57dd

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

Details

Provenance
markjAuthored on Aug 8 2022, 4:30 PM
Parents
rG2dd83b3f0507: lib9p: Remove potential buffer overwrite in l9p_puqids()
Branches
Unknown
Tags
Unknown