[PATCH] libc: arm: fix setjmp abi non-conformance
Richard Earnshaw
Richard.Earnshaw@foss.arm.com
Fri Feb 3 13:09:17 GMT 2023
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 [1], 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 [2], 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:
> https://bugs.gentoo.org/891589#c7
>
> 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.
> -mike
This has been fixed with commit c6e601de84ea9f2be2b026c609cc3c1fe82a3103.
More information about the Newlib
mailing list