diff --git a/libc/arch-x86/bionic/setjmp.S b/libc/arch-x86/bionic/setjmp.S index 8a2f30cc3..86e6e3cd5 100644 --- a/libc/arch-x86/bionic/setjmp.S +++ b/libc/arch-x86/bionic/setjmp.S @@ -151,9 +151,11 @@ ENTRY(siglongjmp) PIC_PROLOGUE pushl %eax + pushl %ecx pushl (_JB_SIGFLAG * 4)(%edx) call PIC_PLT(__bionic_setjmp_cookie_check) addl $4,%esp + popl %ecx popl %eax PIC_EPILOGUE diff --git a/libc/arch-x86_64/bionic/setjmp.S b/libc/arch-x86_64/bionic/setjmp.S index 09d61f5d9..56ebb074f 100644 --- a/libc/arch-x86_64/bionic/setjmp.S +++ b/libc/arch-x86_64/bionic/setjmp.S @@ -159,8 +159,10 @@ ENTRY(siglongjmp) // Check the cookie. pushq %rax + pushq %r11 movq %rcx, %rdi call PIC_PLT(__bionic_setjmp_cookie_check) + popq %r11 popq %rax // Return 1 if value is 0.