LibC: Fix sigsetjmp

the call from C sigsetjmp messed up rbp, now sigsetjmp is also written
in assembly.

I did not test the 32 bit code, just ported the tested 64 bit version
over :D
This commit is contained in:
2025-08-20 20:40:17 +03:00
parent 0dfe0b7023
commit 1d6c08478d
3 changed files with 42 additions and 11 deletions

View File

@@ -38,3 +38,21 @@ longjmp:
movq 56(%rdi), %r15
jmp *%rcx
.size longjmp, . - longjmp
// int sigsetjmp(sigjmp_buf env, int savemask)
.global sigsetjmp
sigsetjmp:
movq %rsi, 64(%rdi)
testq %rsi, %rsi
jz setjmp
subq $8, %rsp
movq %rdi, (%rsp)
leaq 72(%rsi), %rdx
xorq %rsi, %rsi
call pthread_sigmask
movq (%rsp), %rdi
addq $8, %rsp
jmp setjmp
.size sigsetjmp, . - sigsetjmp