[newlib-cygwin/main] Cygwin: gendef: Implement sigsetjmp for AArch64

Corinna Vinschen corinna@sourceware.org
Fri Jan 16 18:50:57 GMT 2026


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=eb6c6edc32f86bcccc23c2e9aef471e8a015ad75

commit eb6c6edc32f86bcccc23c2e9aef471e8a015ad75
Author:     Thirumalai Nagalingam <thirumalai.nagalingam@multicorewareinc.com>
AuthorDate: Sat Dec 6 18:12:43 2025 +0530
Commit:     Corinna Vinschen <corinna@vinschen.de>
CommitDate: Fri Jan 16 19:48:53 2026 +0100

    Cygwin: gendef: Implement sigsetjmp for AArch64
    
    Co-authored-by: Radek Bartoň <radek.barton@microsoft.com>
    
    Signed-off-by: Thirumalai Nagalingam <thirumalai.nagalingam@multicorewareinc.com>

Diff:
---
 winsup/cygwin/scripts/gendef | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/winsup/cygwin/scripts/gendef b/winsup/cygwin/scripts/gendef
index b0e4d2a3e507..ff13f1daad69 100755
--- a/winsup/cygwin/scripts/gendef
+++ b/winsup/cygwin/scripts/gendef
@@ -607,7 +607,28 @@ EOF
 	# TODO: These are only stubs, they need to be implemented properly for AArch64.
 	return <<EOF;
 	.globl	sigsetjmp
+	.seh_proc sigsetjmp
 sigsetjmp:
+	// prologue
+	stp		fp, lr, [sp, #-0x10]!	// save FP and LR registers
+	mov		fp, sp			// set FP to current SP
+	.seh_endprologue
+	str	w1, [x0, #0x100]		// buf->savemask = savemask
+	cbz     w1, 1f				// If savemask == 0, skip fetching sigmask
+	mov     x3, x0                        	// save buf in x3
+	sub     sp, sp, #32			// Allocate 32 bytes on stack call
+	mov     x0, #0                         	// SIG_SETMASK
+	mov     x1, xzr                        	// newmask = NULL
+	add     x2, x3, #0x108                 	// &buf->sigmask
+	bl      pthread_sigmask
+	add     sp, sp, #32
+1:
+	bl	setjmp
+	// epilogue
+	ldp	fp, lr, [sp], #0x10		// restore saved FP and LR registers
+	ret
+	.seh_endproc
+
 	.globl  setjmp
 setjmp:
 	.globl	siglongjmp


More information about the Cygwin-cvs mailing list