diff options
Diffstat (limited to 'math')
-rw-r--r-- | math/Makefile | 11 | ||||
-rw-r--r-- | math/test-fpucw-ieee-static.c | 1 | ||||
-rw-r--r-- | math/test-fpucw-ieee.c | 24 | ||||
-rw-r--r-- | math/test-fpucw-static.c | 1 | ||||
-rw-r--r-- | math/test-fpucw.c | 10 |
5 files changed, 40 insertions, 7 deletions
diff --git a/math/Makefile b/math/Makefile index 3ed78fc9c3..a9bd49baee 100644 --- a/math/Makefile +++ b/math/Makefile @@ -87,9 +87,11 @@ long-c-yes = $(calls:=l) # Rules for the test suite. tests = test-matherr test-fenv atest-exp atest-sincos atest-exp2 basic-test \ - test-misc test-fpucw tst-definitions test-tgmath test-tgmath-ret \ - bug-nextafter bug-nexttoward bug-tgmath1 test-tgmath-int \ - test-tgmath2 test-powl tst-CMPLX tst-CMPLX2 test-snan + test-misc test-fpucw test-fpucw-ieee tst-definitions test-tgmath \ + test-tgmath-ret bug-nextafter bug-nexttoward bug-tgmath1 \ + test-tgmath-int test-tgmath2 test-powl tst-CMPLX tst-CMPLX2 test-snan \ + $(tests-static) +tests-static = test-fpucw-static test-fpucw-ieee-static # We do the `long double' tests only if this data type is available and # distinct from `double'. test-longdouble-yes = test-ldouble test-ildoubl @@ -217,7 +219,8 @@ $(objpfx)libieee.a: $(objpfx)ieee-math.o $(LN_S) $(<F) $(@F) ifeq ($(build-shared),yes) -$(addprefix $(objpfx),$(tests)): $(objpfx)libm.so$(libm.so-version) +$(addprefix $(objpfx),$(filter-out $(tests-static),$(tests))): $(objpfx)libm.so$(libm.so-version) +$(addprefix $(objpfx),$(tests-static)): $(objpfx)libm.a else $(addprefix $(objpfx),$(tests)): $(objpfx)libm.a endif diff --git a/math/test-fpucw-ieee-static.c b/math/test-fpucw-ieee-static.c new file mode 100644 index 0000000000..3a35542060 --- /dev/null +++ b/math/test-fpucw-ieee-static.c @@ -0,0 +1 @@ +#include "test-fpucw-ieee.c" diff --git a/math/test-fpucw-ieee.c b/math/test-fpucw-ieee.c new file mode 100644 index 0000000000..ae5fc73f6e --- /dev/null +++ b/math/test-fpucw-ieee.c @@ -0,0 +1,24 @@ +/* FPU control word overridden initialization test. + Copyright (C) 2013 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#define FPU_CONTROL _FPU_IEEE + +#include "test-fpucw.c" + +/* Preempt the library's definition of `__fpu_control'. */ +fpu_control_t __fpu_control = _FPU_IEEE; diff --git a/math/test-fpucw-static.c b/math/test-fpucw-static.c new file mode 100644 index 0000000000..bc1cfa8ce5 --- /dev/null +++ b/math/test-fpucw-static.c @@ -0,0 +1 @@ +#include "test-fpucw.c" diff --git a/math/test-fpucw.c b/math/test-fpucw.c index 1961a67481..ae6a2c9a71 100644 --- a/math/test-fpucw.c +++ b/math/test-fpucw.c @@ -19,6 +19,10 @@ #include <fpu_control.h> #include <stdio.h> +#ifndef FPU_CONTROL +# define FPU_CONTROL _FPU_DEFAULT +#endif + int main (void) { @@ -30,11 +34,11 @@ main (void) cw &= ~_FPU_RESERVED; - if (cw != (_FPU_DEFAULT & ~_FPU_RESERVED)) + if (cw != (FPU_CONTROL & ~_FPU_RESERVED)) printf ("control word is 0x%lx but should be 0x%lx.\n", - (long int) cw, (long int) (_FPU_DEFAULT & ~_FPU_RESERVED)); + (long int) cw, (long int) (FPU_CONTROL & ~_FPU_RESERVED)); - return cw != (_FPU_DEFAULT & ~_FPU_RESERVED); + return cw != (FPU_CONTROL & ~_FPU_RESERVED); #else return 0; |