]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Stop MIPS setjmp / longjmp saving / restoring floating-point flags (bug 14909).
authorJoseph Myers <joseph@codesourcery.com>
Fri, 14 Jun 2013 21:42:24 +0000 (21:42 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Fri, 14 Jun 2013 21:42:24 +0000 (21:42 +0000)
NEWS
ports/ChangeLog.mips
ports/sysdeps/mips/__longjmp.c
ports/sysdeps/mips/bits/setjmp.h
ports/sysdeps/mips/mips64/__longjmp.c
ports/sysdeps/mips/mips64/setjmp_aux.c
ports/sysdeps/mips/setjmp_aux.c

diff --git a/NEWS b/NEWS
index 31fcb6c54d6927ea4fe80d0c671bd9e938d35a55..36de21eee2d453852abeccf83d033e0d451fcb97 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -12,15 +12,15 @@ Version 2.18
   2546, 2560, 5159, 6809, 10060, 10062, 10357, 10686, 11120, 11561, 12387,
   12515, 12723, 13550, 13889, 13951, 13988, 14142, 14176, 14200, 14256,
   14280, 14293, 14317, 14327, 14478, 14496, 14582, 14686, 14812, 14888,
-  14894, 14908, 14920, 14952, 14964, 14981, 14982, 14985, 14991, 14994,
-  14996, 15000, 15003, 15006, 15007, 15014, 15020, 15023, 15036, 15054,
-  15055, 15062, 15078, 15084, 15085, 15086, 15100, 15160, 15214, 15221,
-  15232, 15234, 15283, 15285, 15287, 15304, 15305, 15307, 15309, 15327,
-  15330, 15335, 15336, 15337, 15339, 15342, 15346, 15359, 15361, 15366,
-  15380, 15381, 15394, 15395, 15405, 15406, 15409, 15416, 15418, 15419,
-  15423, 15424, 15426, 15429, 15431, 15432, 15441, 15442, 15448, 15465,
-  15480, 15485, 15488, 15490, 15492, 15493, 15497, 15506, 15529, 15536,
-  15553, 15577, 15583, 15618, 15627.
+  14894, 14908, 14909, 14920, 14952, 14964, 14981, 14982, 14985, 14991,
+  14994, 14996, 15000, 15003, 15006, 15007, 15014, 15020, 15023, 15036,
+  15054, 15055, 15062, 15078, 15084, 15085, 15086, 15100, 15160, 15214,
+  15221, 15232, 15234, 15283, 15285, 15287, 15304, 15305, 15307, 15309,
+  15327, 15330, 15335, 15336, 15337, 15339, 15342, 15346, 15359, 15361,
+  15366, 15380, 15381, 15394, 15395, 15405, 15406, 15409, 15416, 15418,
+  15419, 15423, 15424, 15426, 15429, 15431, 15432, 15441, 15442, 15448,
+  15465, 15480, 15485, 15488, 15490, 15492, 15493, 15497, 15506, 15529,
+  15536, 15553, 15577, 15583, 15618, 15627.
 
 * CVE-2013-0242 Buffer overrun in regexp matcher has been fixed (Bugzilla
   #15078).
index e876ee2651638b9dbd57e293b101798080c7e08d..66f859d997a6dc2d09d3930db2fd4631c7176a64 100644 (file)
@@ -1,5 +1,17 @@
 2013-06-14  Joseph Myers  <joseph@codesourcery.com>
 
+       [BZ #14909]
+       * sysdeps/mips/bits/setjmp.h (struct __jmp_buf_internal_tag):
+       Rename __fpc_csr field to __glibc_reserved1.
+       * sysdeps/mips/setjmp_aux.c (__sigsetjmp_aux) [__mips_hard_float]:
+       Do not set __fpc_csr.
+       * sysdeps/mips/mips64/setjmp_aux.c (__sigsetjmp_aux)
+       [__mips_hard_float]: Likewise.
+       * sysdeps/mips/__longjmp.c (____longjmp) [__mips_hard_float]: Do
+       not use __fpc_csr.
+       * sysdeps/mips/mips64/__longjmp.c (__longjmp) [__mips_hard_float]:
+       Likewise.
+
        * sysdeps/mips/math-tests.h: New file.
 
 2013-06-05  Joseph Myers  <joseph@codesourcery.com>
index 67bdb86cf8f9359d21dad2e170e4ca4c1786a20e..d1d7d64dfa4ae315ff163dae0f432f2ddd41dae4 100644 (file)
@@ -47,10 +47,6 @@ ____longjmp (env_arg, val_arg)
   asm volatile ("l.d $f26, %0" : : "m" (env[0].__fpregs[3]));
   asm volatile ("l.d $f28, %0" : : "m" (env[0].__fpregs[4]));
   asm volatile ("l.d $f30, %0" : : "m" (env[0].__fpregs[5]));
-
-  /* Get and reconstruct the floating point csr.  */
-  asm volatile ("lw $2, %0" : : "m" (env[0].__fpc_csr));
-  asm volatile ("ctc1 $2, $31");
 #endif
 
   /* Get the GP. */
index d35b12dc650a007509fb5b85ef700059d7366622..437848fcb921f6ea8620242d310f5ca3b28f65e2 100644 (file)
@@ -59,8 +59,8 @@ typedef struct __jmp_buf_internal_tag
     __extension__ long long __gp;
 #endif
 
-    /* Floating point status register.  */
-    int __fpc_csr;
+    /* Unused (was floating point status register).  */
+    int __glibc_reserved1;
 
     /* Callee-saved floating point registers.  */
 #if _MIPS_SIM == _ABI64
index 1e42e9c28fb13991271fe3398b8e59372a20400d..bffb1137cd06ff64a255712a2dbcf59128d92fbe 100644 (file)
@@ -59,10 +59,6 @@ __longjmp (env_arg, val_arg)
   asm volatile ("l.d $f28, %0" : : "m" (env[0].__fpregs[4]));
   asm volatile ("l.d $f30, %0" : : "m" (env[0].__fpregs[5]));
 #endif
-
-  /* Get and reconstruct the floating point csr.  */
-  asm volatile ("lw $2, %0" : : "m" (env[0].__fpc_csr));
-  asm volatile ("ctc1 $2, $31");
 #endif
 
   /* Get the GP. */
index 9515f44b83cec8d99a163d4632d069dc1af1a229..931830391b0964a8885a844055c5febdd49c83ba 100644 (file)
@@ -71,11 +71,6 @@ __sigsetjmp_aux (jmp_buf env, int savemask, long long sp, long long fp,
   asm volatile ("sd $22, %0" : : "m" (env[0].__jmpbuf[0].__regs[6]));
   asm volatile ("sd $23, %0" : : "m" (env[0].__jmpbuf[0].__regs[7]));
 
-#ifdef __mips_hard_float
-  /* .. and finally get and reconstruct the floating point csr.  */
-  asm ("cfc1 %0, $31" : "=r" (env[0].__jmpbuf[0].__fpc_csr));
-#endif
-
   /* Save the signal mask if requested.  */
   return __sigjmp_save (env, savemask);
 }
index cb9ea245bbda634b17c27c903f2c831b3fded2a5..26715b77d86bfbc372455df12ce7b7a35b03f190 100644 (file)
@@ -58,11 +58,6 @@ __sigsetjmp_aux (jmp_buf env, int savemask, int sp, int fp)
   asm volatile ("sw $22, %0" : : "m" (env[0].__jmpbuf[0].__regs[6]));
   asm volatile ("sw $23, %0" : : "m" (env[0].__jmpbuf[0].__regs[7]));
 
-#ifdef __mips_hard_float
-  /* .. and finally get and reconstruct the floating point csr.  */
-  asm ("cfc1 %0, $31" : "=r" (env[0].__jmpbuf[0].__fpc_csr));
-#endif
-
   /* Save the signal mask if requested.  */
   return __sigjmp_save (env, savemask);
 }