[PATCH] libc: arm: fix setjmp abi non-conformance
Victor Do Nascimento
Tue Feb 7 15:24:41 GMT 2023
Dear Richard (now also CCing the mailing list),
One of the folks over at the Gentoo bug discussion inquired about
getting the patch back-ported to the latest source snapshot (where the
problem originally presented itself), newlib-188.8.131.5230120.
Is that an option at all?
On 2/3/23 13:09, Richard Earnshaw wrote:
> On 25/01/2023 13:30, Mike Frysinger wrote:
>> On 13 Dec 2022 14:51, Victor L. Do Nascimento wrote:
>>> As per the arm Procedure Call Standard for the Arm Architecture
>>> section 6.1.2 , VFP registers s16-s31 (d8-d15, q4-q7) must be
>>> preserved across subroutine calls.
>>> The current setjmp/longjmp implementations preserve only the core
>>> registers, with the jump buffer size too small to store the required
>>> co-processor registers.
>>> In accordance with the C Library ABI for the Arm Architecture
>>> section 6.11 , this patch sets _JBTYPE to long long adjusting
>>> _JBLEN to 20.
>>> It also emits vfp load/store instructions depending on architectural
>>> support, predicated at compile time on ACLE feature-test macros.
>> this breaks building with GCC 11 and older:
>> i don't think it was intentional that this only work with GCC 12+, or if
>> it was, that we want such requirements. GCC 12 is less than a year old.
> This has been fixed with commit c6e601de84ea9f2be2b026c609cc3c1fe82a3103.
More information about the Newlib