[PATCH] newlib: increase jump buffer length to 24 to fit all non-volatile registers for aarch64-pc-cygwin

Radek Barton radek.barton@microsoft.com
Fri Jun 27 20:21:23 GMT 2025


Hello.

The `msvcrt` implementation of `setjmp`/`longjmp` saves `x19`-`x28`, `FP`, `LR`, `SP`, `FPCR`, `FPSR`, `d8`-`d15` registers and jump address to the jump buffer.

AFAIK the Cygwin implementation of `setjmp`/`longjmp` should do the same for which the value of `_JBLEN` macro defined here needs to be increased to 24 to fit them all.

Radek

---
>From edaea9fa87bebd3a1692a2333e67218f068658bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Radek=20Barto=C5=88?= <radek.barton@microsoft.com>
Date: Thu, 29 May 2025 20:34:56 +0200
Subject: [PATCH] newlib: increase jump buffer length to 24 to fit all
 non-volatile registers for aarch64-pc-cygwin
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Radek Bartoň <radek.barton@microsoft.com>
---
 newlib/libc/include/machine/setjmp.h | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/newlib/libc/include/machine/setjmp.h b/newlib/libc/include/machine/setjmp.h
index 102582c8e..d73e5589e 100644
--- a/newlib/libc/include/machine/setjmp.h
+++ b/newlib/libc/include/machine/setjmp.h
@@ -22,7 +22,15 @@ _BEGIN_STD_C
 #endif
 
 #if defined(__aarch64__)
-#define _JBLEN 22
+# if defined(__CYGWIN__)
+/* 
+ * Windows Arm64 ABI requires saving x19-x28, FP, LR, SP, FPCR, FPSR, d8-d15
+ * and jump address to jmp_buf.
+ */
+#  define _JBLEN 24
+# else
+#  define _JBLEN 22
+# endif
 #define _JBTYPE long long
 #endif
 
-- 
2.49.0.vfs.0.4

-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-newlib-increase-jump-buffer-length-to-24-to-fit-all-non-volatile-registers-for-aarch64-pc-cygwin.patch
Type: application/octet-stream
Size: 1107 bytes
Desc: 0001-newlib-increase-jump-buffer-length-to-24-to-fit-all-non-volatile-registers-for-aarch64-pc-cygwin.patch
URL: <https://sourceware.org/pipermail/newlib/attachments/20250627/98b2891d/attachment.obj>


More information about the Newlib mailing list