[PATCH] libc: arm: fix setjmp abi non-conformance

Richard Earnshaw Richard.Earnshaw@foss.arm.com
Tue Feb 7 15:30:54 GMT 2023


Newlib doesn't maintain branches (we just tag the repo and make a 
snapshot public based on that), so there's nowhere this can be 
backported to.

Ultimately this is Jeff's (or Corinna's) call though.

R.

On 07/02/2023 15:24, Victor Do Nascimento wrote:
> 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-4.3.0.20230120.
> 
> Is that an option at all?
> 
> Cheers,
> Victor
> 
> 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 [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