Author: andrew
Date: Sun Jul 21 12:47:33 2013
New Revision: 253518
URL: http://svnweb.freebsd.org/changeset/base/253518

Log:
  Teach siglongjmp about the VFP version of the setjmp buffer.
  
  This fixes a bug where a call to sigsetjmp followed by siglongjmp may fail
  when run on a machine with VFP enabled.

Modified:
  head/lib/libc/arm/gen/sigsetjmp.S

Modified: head/lib/libc/arm/gen/sigsetjmp.S
==============================================================================
--- head/lib/libc/arm/gen/sigsetjmp.S   Sun Jul 21 11:59:41 2013        
(r253517)
+++ head/lib/libc/arm/gen/sigsetjmp.S   Sun Jul 21 12:47:33 2013        
(r253518)
@@ -57,8 +57,10 @@ ENTRY(sigsetjmp)
 WEAK_ALIAS(__siglongjmp, siglongjmp)
 
 ENTRY(siglongjmp)
-       ldr     r2, .L_setjmp_magic
-       ldr     r3, [r0]
-       teq     r2, r3
+       ldr     r2, .L_setjmp_magic             /* load magic */
+       ldr     r3, [r0]                        /* get magic from jmp_buf */
+       bic     r3, r3, #(_JB_MAGIC__SETJMP ^ _JB_MAGIC__SETJMP_VFP)
+                                               /* ignore VFP-ness of magic */
+       teq     r2, r3                          /* magic correct? */
        beq     PIC_SYM(_C_LABEL(_longjmp), PLT)
        b       PIC_SYM(_C_LABEL(longjmp), PLT)
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to