Also retrieve SSE exceptions in x86-32 fegetexceptflag

This commit is contained in:
Ulrich Drepper 2011-12-22 16:28:08 -05:00
parent f311e884ec
commit db910efdbd
3 changed files with 28 additions and 8 deletions

View File

@ -1,3 +1,9 @@
2011-12-22 Ulrich Drepper <drepper@gmail.com>
[BZ #13185]
* sysdeps/i386/fpu/fgetexcptflg.c (__fegetexceptflag): Also return
SSE flags if possible.
2011-12-22 Liubov Dmitrieva <liubov.dmitrieva@gmail.com> 2011-12-22 Liubov Dmitrieva <liubov.dmitrieva@gmail.com>
* sysdeps/i386/i686/multiarch/strcpy-ssse3.S: Fix wrong copying * sysdeps/i386/i686/multiarch/strcpy-ssse3.S: Fix wrong copying

8
NEWS
View File

@ -11,10 +11,10 @@ Version 2.15
6779, 6783, 9696, 10103, 10709, 11589, 12403, 12847, 12868, 12852, 12874, 6779, 6783, 9696, 10103, 10709, 11589, 12403, 12847, 12868, 12852, 12874,
12885, 12892, 12907, 12922, 12935, 13007, 13021, 13067, 13068, 13090, 12885, 12892, 12907, 12922, 12935, 13007, 13021, 13067, 13068, 13090,
13092, 13114, 13118, 13123, 13134, 13138, 13147, 13150, 13179, 13189, 13092, 13114, 13118, 13123, 13134, 13138, 13147, 13150, 13179, 13185,
13192, 13268, 13276, 13282, 13291, 13305, 13328, 13335, 13337, 13344, 13189, 13192, 13268, 13276, 13282, 13291, 13305, 13328, 13335, 13337,
13358, 13367, 13413, 13416, 13423, 13439, 13446, 13472, 13484, 13506, 13344, 13358, 13367, 13413, 13416, 13423, 13439, 13446, 13472, 13484,
13515, 13523, 13524, 13538 13506, 13515, 13523, 13524, 13538
* New program pldd to list loaded object of a process * New program pldd to list loaded object of a process
Implemented by Ulrich Drepper. Implemented by Ulrich Drepper.

View File

@ -1,5 +1,5 @@
/* Store current representation for exceptions. /* Store current representation for exceptions.
Copyright (C) 1997,99,2000,01 Free Software Foundation, Inc. Copyright (C) 1997,99,2000,01,11 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -19,7 +19,10 @@
02111-1307 USA. */ 02111-1307 USA. */
#include <fenv.h> #include <fenv.h>
#include <bp-sym.h> #include <unistd.h>
#include <ldsodefs.h>
#include <dl-procinfo.h>
int int
__fegetexceptflag (fexcept_t *flagp, int excepts) __fegetexceptflag (fexcept_t *flagp, int excepts)
@ -31,6 +34,17 @@ __fegetexceptflag (fexcept_t *flagp, int excepts)
*flagp = temp & excepts & FE_ALL_EXCEPT; *flagp = temp & excepts & FE_ALL_EXCEPT;
/* If the CPU supports SSE, we clear the MXCSR as well. */
if ((GLRO(dl_hwcap) & HWCAP_I386_XMM) != 0)
{
unsigned int sse_exc;
/* Get the current MXCSR. */
__asm__ ("stmxcsr %0" : "=m" (*&sse_exc));
*flagp |= sse_exc & excepts & FE_ALL_EXCEPT;
}
/* Success. */ /* Success. */
return 0; return 0;
} }
@ -38,7 +52,7 @@ __fegetexceptflag (fexcept_t *flagp, int excepts)
#include <shlib-compat.h> #include <shlib-compat.h>
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2) #if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
strong_alias (__fegetexceptflag, __old_fegetexceptflag) strong_alias (__fegetexceptflag, __old_fegetexceptflag)
compat_symbol (libm, BP_SYM (__old_fegetexceptflag), BP_SYM (fegetexceptflag), GLIBC_2_1); compat_symbol (libm, __old_fegetexceptflag, fegetexceptflag, GLIBC_2_1);
#endif #endif
versioned_symbol (libm, BP_SYM (__fegetexceptflag), BP_SYM (fegetexceptflag), GLIBC_2_2); versioned_symbol (libm, __fegetexceptflag, fegetexceptflag, GLIBC_2_2);