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

(cherry picked from commit cbd1e83154af8bae3daa3919bb2746d587436515)

Details

Provenance
markjAuthored on Aug 8 2022, 4:30 PM
Parents
rG84d3fc26e3a2: Deprecate minigzip(1) in preparation of removing it from base system.
Branches
Unknown
Tags
Unknown