Skip to content

Conversation

@andylinpersonal
Copy link

@andylinpersonal andylinpersonal commented Dec 27, 2025

__check_nan<f|d><1|2> is hard-coded into .text instead of being wrapped with <double|float>_section like other __aeabi* functions. When those functions are moved to SRAM, this leaves __check_nan* in flash, causing GCC to emit a veneer call that clobbers ip and corrupts the saved lr in wrapper_func_<d|f><1|2>.

Fixes #2771

  ``__check_nan<f|d><1|2>`` is hard-coded into ``.text`` instead
of being wrapped with ``<double|float>_section`` like other
``__aeabi*`` functions. When those functions are moved to SRAM,
this leaves ``__check_nan*`` in flash, causing GCC to emit a veneer
call that clobbers ip and corrupts the saved ``lr`` in
``wrapper_func_<d|f><1|2>``.

Fixes raspberrypi#2771

Signed-off-by: Andy Lin <andylinpersonal@gmail.com>
@andylinpersonal andylinpersonal force-pushed the dev/fix-break-checknan-for-fp-in-ram branch from d51c6ea to cd1300f Compare December 27, 2025 20:40
@kilograham kilograham self-assigned this Dec 29, 2025
@kilograham kilograham added this to the 2.2.1 milestone Dec 29, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

3 participants