[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