mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-09 23:00:07 +00:00
Stop MIPS setjmp / longjmp saving / restoring floating-point flags (bug 14909).
This commit is contained in:
parent
c69f6af9e5
commit
601eb33deb
18
NEWS
18
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).
|
||||
|
@ -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>
|
||||
|
@ -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. */
|
||||
|
@ -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
|
||||
|
@ -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. */
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user