aboutsummaryrefslogtreecommitdiff
path: root/math
diff options
context:
space:
mode:
Diffstat (limited to 'math')
-rw-r--r--math/Makefile23
-rw-r--r--math/ieee-math.c6
-rw-r--r--math/lgamma-compat.h1
-rw-r--r--math/libm-test-support.c7
-rw-r--r--math/math-svid-compat.h90
-rw-r--r--math/math.h66
-rw-r--r--math/test-matherr-2.c49
-rw-r--r--math/test-matherr-3.c44
-rw-r--r--math/test-matherr.c28
-rw-r--r--math/w_acos_compat.c1
-rw-r--r--math/w_acosf_compat.c1
-rw-r--r--math/w_acosh_compat.c1
-rw-r--r--math/w_acoshf_compat.c1
-rw-r--r--math/w_acoshl_compat.c1
-rw-r--r--math/w_acosl_compat.c1
-rw-r--r--math/w_asin_compat.c1
-rw-r--r--math/w_asinf_compat.c1
-rw-r--r--math/w_asinl_compat.c1
-rw-r--r--math/w_atan2_compat.c1
-rw-r--r--math/w_atan2f_compat.c1
-rw-r--r--math/w_atan2l_compat.c1
-rw-r--r--math/w_atanh_compat.c1
-rw-r--r--math/w_atanhf_compat.c1
-rw-r--r--math/w_atanhl_compat.c1
-rw-r--r--math/w_cosh_compat.c1
-rw-r--r--math/w_coshf_compat.c1
-rw-r--r--math/w_coshl_compat.c1
-rw-r--r--math/w_exp10_compat.c1
-rw-r--r--math/w_exp10f_compat.c1
-rw-r--r--math/w_exp10l_compat.c1
-rw-r--r--math/w_exp2_compat.c1
-rw-r--r--math/w_exp2f_compat.c1
-rw-r--r--math/w_exp2l_compat.c1
-rw-r--r--math/w_fmod_compat.c1
-rw-r--r--math/w_fmodf_compat.c1
-rw-r--r--math/w_fmodl_compat.c1
-rw-r--r--math/w_hypot_compat.c1
-rw-r--r--math/w_hypotf_compat.c1
-rw-r--r--math/w_hypotl_compat.c1
-rw-r--r--math/w_j0_compat.c1
-rw-r--r--math/w_j0f_compat.c1
-rw-r--r--math/w_j0l_compat.c1
-rw-r--r--math/w_j1_compat.c1
-rw-r--r--math/w_j1f_compat.c1
-rw-r--r--math/w_j1l_compat.c1
-rw-r--r--math/w_jn_compat.c1
-rw-r--r--math/w_jnf_compat.c1
-rw-r--r--math/w_jnl_compat.c1
-rw-r--r--math/w_lgamma_main.c1
-rw-r--r--math/w_lgamma_r_compat.c1
-rw-r--r--math/w_lgammaf_main.c1
-rw-r--r--math/w_lgammaf_r_compat.c1
-rw-r--r--math/w_lgammal_main.c1
-rw-r--r--math/w_lgammal_r_compat.c1
-rw-r--r--math/w_log10_compat.c1
-rw-r--r--math/w_log10f_compat.c1
-rw-r--r--math/w_log10l_compat.c1
-rw-r--r--math/w_log2_compat.c1
-rw-r--r--math/w_log2f_compat.c1
-rw-r--r--math/w_log2l_compat.c1
-rw-r--r--math/w_log_compat.c1
-rw-r--r--math/w_logf_compat.c1
-rw-r--r--math/w_logl_compat.c1
-rw-r--r--math/w_pow_compat.c1
-rw-r--r--math/w_powf_compat.c1
-rw-r--r--math/w_powl_compat.c1
-rw-r--r--math/w_remainder_compat.c2
-rw-r--r--math/w_remainderf_compat.c2
-rw-r--r--math/w_remainderl_compat.c2
-rw-r--r--math/w_scalb_compat.c1
-rw-r--r--math/w_scalbf_compat.c1
-rw-r--r--math/w_scalbl_compat.c1
-rw-r--r--math/w_sinh_compat.c1
-rw-r--r--math/w_sinhf_compat.c1
-rw-r--r--math/w_sinhl_compat.c1
-rw-r--r--math/w_sqrt_compat.c1
-rw-r--r--math/w_sqrtf_compat.c1
-rw-r--r--math/w_sqrtl_compat.c1
-rw-r--r--math/w_tgamma_compat.c1
-rw-r--r--math/w_tgammaf_compat.c1
-rw-r--r--math/w_tgammal_compat.c1
81 files changed, 291 insertions, 98 deletions
diff --git a/math/Makefile b/math/Makefile
index e09b0c0..25d3e95 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -181,7 +181,7 @@ $(inst_libdir)/libm.a: $(common-objpfx)format.lds \
endif
# Rules for the test suite.
-tests = test-matherr test-fenv atest-exp atest-sincos atest-exp2 basic-test \
+tests = test-matherr-3 test-fenv atest-exp atest-sincos atest-exp2 basic-test \
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 \
@@ -201,6 +201,7 @@ tests-static = test-fpucw-static test-fpucw-ieee-static \
test-signgam-uchar-static test-signgam-uchar-init-static \
test-signgam-uint-static test-signgam-uint-init-static \
test-signgam-ullong-static test-signgam-ullong-init-static
+tests-internal = test-matherr test-matherr-2
ifneq (,$(CXX))
tests += test-math-isinff test-math-iszero
@@ -357,12 +358,6 @@ CFLAGS-test-flt-eval-method.c = -fexcess-precision=standard
CFLAGS-test-fe-snans-always-signal.c = -fsignaling-nans
-# The -lieee module sets the _LIB_VERSION_ switch to IEEE mode
-# for error handling in the -lm functions.
-install-lib += libieee.a
-non-lib.a += libieee.a
-extra-objs += libieee.a ieee-math.o
-
include ../Rules
gen-all-calls = $(gen-libm-calls) $(gen-calls)
@@ -542,10 +537,6 @@ endef
object-suffixes-left := $(all-object-suffixes)
include $(o-iterator)
-# This file defines the default _LIB_VERSION variable that controls
-# the error return conventions for the math functions.
-CPPFLAGS-s_lib_version.c := -D_POSIX_MODE
-
# We don't want the fdlibm code to use the inline math functions,
# only the fdlibm code.
math-CPPFLAGS += -D__NO_MATH_INLINES -D__LIBC_INTERNAL_MATH_INLINES
@@ -566,17 +557,9 @@ CFLAGS-s_modff.c += -fsignaling-nans
CFLAGS-s_modfl.c += -fsignaling-nans
CFLAGS-s_modff128.c += -fsignaling-nans
-# The -lieee library is actually an object file.
-# The module just defines the _LIB_VERSION_ variable.
-# It's not a library to make sure it is linked in instead of s_lib_version.o.
-$(objpfx)libieee.a: $(objpfx)ieee-math.o
- rm -f $@
- $(patsubst %/,cd % &&,$(objpfx)) \
- $(LN_S) $(<F) $(@F)
-
$(addprefix $(objpfx),\
$(filter-out $(tests-static) $(libm-tests-vector),\
- $(tests))): $(libm)
+ $(tests) $(tests-internal))): $(libm)
$(addprefix $(objpfx),$(tests-static)): $(objpfx)libm.a
define o-iterator-doit
$(foreach f,$($(o)-funcs),\
diff --git a/math/ieee-math.c b/math/ieee-math.c
deleted file mode 100644
index 99e41a3..0000000
--- a/math/ieee-math.c
+++ /dev/null
@@ -1,6 +0,0 @@
-/* Linking in this module forces IEEE error handling rules for math functions.
- The default is POSIX.1 error handling. */
-
-#include <math.h>
-
-_LIB_VERSION_TYPE _LIB_VERSION = _IEEE_;
diff --git a/math/lgamma-compat.h b/math/lgamma-compat.h
index 90a4237..189d126 100644
--- a/math/lgamma-compat.h
+++ b/math/lgamma-compat.h
@@ -19,6 +19,7 @@
#ifndef LGAMMA_COMPAT_H
#define LGAMMA_COMPAT_H 1
+#include <math-svid-compat.h>
#include <shlib-compat.h>
/* XSI POSIX requires lgamma to set signgam, but ISO C does not permit
diff --git a/math/libm-test-support.c b/math/libm-test-support.c
index 078d307..9ce3eb1 100644
--- a/math/libm-test-support.c
+++ b/math/libm-test-support.c
@@ -989,13 +989,6 @@ enable_test (int exceptions)
return 1;
}
-/* This is to prevent messages from the SVID libm emulation. */
-int
-matherr (struct exception *x __attribute__ ((unused)))
-{
- return 1;
-}
-
static void
initialize (void)
{
diff --git a/math/math-svid-compat.h b/math/math-svid-compat.h
new file mode 100644
index 0000000..284cc13
--- /dev/null
+++ b/math/math-svid-compat.h
@@ -0,0 +1,90 @@
+/* Declarations for SVID math error handling compatibility.
+ Copyright (C) 1991-2017 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/>. */
+
+#ifndef _MATH_SVID_COMPAT_H
+#define _MATH_SVID_COMPAT_H 1
+
+#ifndef __ASSEMBLER__
+/* Support for various different standard error handling behaviors. */
+typedef enum
+{
+ _IEEE_ = -1, /* According to IEEE 754/IEEE 854. */
+ _SVID_, /* According to System V, release 4. */
+ _XOPEN_, /* Nowadays also Unix98. */
+ _POSIX_,
+ _ISOC_ /* Actually this is ISO C99. */
+} _LIB_VERSION_TYPE;
+
+/* This variable can be changed at run-time to any of the values above to
+ affect floating point error handling behavior (it may also be necessary
+ to change the hardware FPU exception settings). */
+extern _LIB_VERSION_TYPE _LIB_VERSION;
+
+/* In SVID error handling, `matherr' is called with this description
+ of the exceptional condition. */
+struct exception
+ {
+ int type;
+ char *name;
+ double arg1;
+ double arg2;
+ double retval;
+ };
+
+extern int matherr (struct exception *__exc);
+extern int __matherr (struct exception *__exc);
+
+# define X_TLOSS 1.41484755040568800000e+16
+
+/* Types of exceptions in the `type' field. */
+# define DOMAIN 1
+# define SING 2
+# define OVERFLOW 3
+# define UNDERFLOW 4
+# define TLOSS 5
+# define PLOSS 6
+
+/* SVID mode specifies returning this large value instead of infinity. */
+# define HUGE 3.40282347e+38F
+#endif
+
+/* The above definitions may be used in testcases. The following code
+ is only used in the implementation. */
+
+#ifdef _LIBC
+# ifndef __ASSEMBLER__
+/* fdlibm kernel function */
+extern double __kernel_standard (double, double, int);
+extern float __kernel_standard_f (float, float, int);
+extern long double __kernel_standard_l (long double, long double, int);
+# endif
+
+# include <shlib-compat.h>
+# define LIBM_SVID_COMPAT SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_27)
+# if LIBM_SVID_COMPAT
+compat_symbol_reference (libm, matherr, matherr, GLIBC_2_0);
+compat_symbol_reference (libm, _LIB_VERSION, _LIB_VERSION, GLIBC_2_0);
+# elif !defined __ASSEMBLER__
+/* Except when building compat code, optimize out references to
+ _LIB_VERSION and matherr. */
+# define _LIB_VERSION _POSIX_
+# define matherr(EXC) ((void) (EXC), 0)
+# endif
+#endif
+
+#endif /* math-svid-compat.h. */
diff --git a/math/math.h b/math/math.h
index dea8dbe..275534b 100644
--- a/math/math.h
+++ b/math/math.h
@@ -501,70 +501,10 @@ iszero (__T __val)
# endif /* __cplusplus */
#endif /* Use IEC_60559_BFP_EXT. */
-#ifdef __USE_MISC
-/* Support for various different standard error handling behaviors. */
-typedef enum
-{
- _IEEE_ = -1, /* According to IEEE 754/IEEE 854. */
- _SVID_, /* According to System V, release 4. */
- _XOPEN_, /* Nowadays also Unix98. */
- _POSIX_,
- _ISOC_ /* Actually this is ISO C99. */
-} _LIB_VERSION_TYPE;
-
-/* This variable can be changed at run-time to any of the values above to
- affect floating point error handling behavior (it may also be necessary
- to change the hardware FPU exception settings). */
-extern _LIB_VERSION_TYPE _LIB_VERSION;
-#endif
-
-
-#ifdef __USE_MISC
-/* In SVID error handling, `matherr' is called with this description
- of the exceptional condition.
-
- We have a problem when using C++ since `exception' is a reserved
- name in C++. */
-# ifdef __cplusplus
-struct __exception
-# else
-struct exception
-# endif
- {
- int type;
- char *name;
- double arg1;
- double arg2;
- double retval;
- };
-
-# ifdef __cplusplus
-extern int matherr (struct __exception *__exc) throw ();
-# else
-extern int matherr (struct exception *__exc);
-# endif
-
-# define X_TLOSS 1.41484755040568800000e+16
-
-/* Types of exceptions in the `type' field. */
-# define DOMAIN 1
-# define SING 2
-# define OVERFLOW 3
-# define UNDERFLOW 4
-# define TLOSS 5
-# define PLOSS 6
-
-/* SVID mode specifies returning this large value instead of infinity. */
-# define HUGE 3.40282347e+38F
-
-#else /* !Misc. */
-
-# ifdef __USE_XOPEN
+#ifdef __USE_XOPEN
/* X/Open wants another strange constant. */
-# define MAXFLOAT 3.40282347e+38F
-# endif
-
-#endif /* Misc. */
+# define MAXFLOAT 3.40282347e+38F
+#endif
/* Some useful constants. */
diff --git a/math/test-matherr-2.c b/math/test-matherr-2.c
new file mode 100644
index 0000000..c2fc5e6
--- /dev/null
+++ b/math/test-matherr-2.c
@@ -0,0 +1,49 @@
+/* Test matherr (compat symbols, binary defines own _LIB_VERSION).
+ Copyright (C) 1997-2017 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/>. */
+
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <math-svid-compat.h>
+#include <shlib-compat.h>
+#undef matherr
+#undef _LIB_VERSION
+compat_symbol_reference (libm, matherr, matherr, GLIBC_2_0);
+compat_symbol_reference (libm, _LIB_VERSION, _LIB_VERSION, GLIBC_2_0);
+
+_LIB_VERSION_TYPE _LIB_VERSION = _SVID_;
+
+static int fail = 1;
+
+int
+matherr (struct exception *s)
+{
+ printf ("matherr is working\n");
+ fail = 0;
+ return 1;
+}
+
+static int
+do_test (void)
+{
+ acos (2.0);
+ return fail;
+}
+
+#include <support/test-driver.c>
diff --git a/math/test-matherr-3.c b/math/test-matherr-3.c
new file mode 100644
index 0000000..c81a04f
--- /dev/null
+++ b/math/test-matherr-3.c
@@ -0,0 +1,44 @@
+/* Test matherr not supported for new binaries.
+ Copyright (C) 1997-2017 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/>. */
+
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <math-svid-compat.h>
+
+_LIB_VERSION_TYPE _LIB_VERSION = _SVID_;
+
+static int fail = 0;
+
+int
+matherr (struct exception *s)
+{
+ printf ("matherr is working, but should not be\n");
+ fail = 1;
+ return 1;
+}
+
+static int
+do_test (void)
+{
+ acos (2.0);
+ return fail;
+}
+
+#include <support/test-driver.c>
diff --git a/math/test-matherr.c b/math/test-matherr.c
index 6983879..34856f1 100644
--- a/math/test-matherr.c
+++ b/math/test-matherr.c
@@ -1,7 +1,32 @@
+/* Test matherr (compat symbols, binary modifies library's _LIB_VERSION).
+ Copyright (C) 1997-2017 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/>. */
+
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
+#include <math-svid-compat.h>
+#include <shlib-compat.h>
+#undef matherr
+#undef _LIB_VERSION
+compat_symbol_reference (libm, matherr, matherr, GLIBC_2_0);
+compat_symbol_reference (libm, _LIB_VERSION, _LIB_VERSION, GLIBC_2_0);
+
static int fail = 1;
int
@@ -20,5 +45,4 @@ do_test (void)
return fail;
}
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
+#include <support/test-driver.c>
diff --git a/math/w_acos_compat.c b/math/w_acos_compat.c
index e6fbdf1..5115732 100644
--- a/math/w_acos_compat.c
+++ b/math/w_acos_compat.c
@@ -19,6 +19,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper acos */
diff --git a/math/w_acosf_compat.c b/math/w_acosf_compat.c
index f389da1..0bf557c 100644
--- a/math/w_acosf_compat.c
+++ b/math/w_acosf_compat.c
@@ -19,6 +19,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper acosf */
diff --git a/math/w_acosh_compat.c b/math/w_acosh_compat.c
index 286ea86..31251ce 100644
--- a/math/w_acosh_compat.c
+++ b/math/w_acosh_compat.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper acosh */
diff --git a/math/w_acoshf_compat.c b/math/w_acoshf_compat.c
index 801a52e..6a4482e 100644
--- a/math/w_acoshf_compat.c
+++ b/math/w_acoshf_compat.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper acoshf */
diff --git a/math/w_acoshl_compat.c b/math/w_acoshl_compat.c
index 310f3c9..b9f66c5 100644
--- a/math/w_acoshl_compat.c
+++ b/math/w_acoshl_compat.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper acosl */
diff --git a/math/w_acosl_compat.c b/math/w_acosl_compat.c
index eaccc66..66600b5 100644
--- a/math/w_acosl_compat.c
+++ b/math/w_acosl_compat.c
@@ -19,6 +19,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper acosl */
diff --git a/math/w_asin_compat.c b/math/w_asin_compat.c
index b2ad632..59beea8 100644
--- a/math/w_asin_compat.c
+++ b/math/w_asin_compat.c
@@ -19,6 +19,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper asin */
diff --git a/math/w_asinf_compat.c b/math/w_asinf_compat.c
index 0d0ee98..0eb20b1 100644
--- a/math/w_asinf_compat.c
+++ b/math/w_asinf_compat.c
@@ -19,6 +19,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper asinf */
diff --git a/math/w_asinl_compat.c b/math/w_asinl_compat.c
index a02fa1e..c8f4d15 100644
--- a/math/w_asinl_compat.c
+++ b/math/w_asinl_compat.c
@@ -19,6 +19,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper asinl */
diff --git a/math/w_atan2_compat.c b/math/w_atan2_compat.c
index cceb602..fa098ff 100644
--- a/math/w_atan2_compat.c
+++ b/math/w_atan2_compat.c
@@ -23,6 +23,7 @@
#include <errno.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
double
diff --git a/math/w_atan2f_compat.c b/math/w_atan2f_compat.c
index 8343893..15e05d8 100644
--- a/math/w_atan2f_compat.c
+++ b/math/w_atan2f_compat.c
@@ -23,6 +23,7 @@
#include <errno.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
float
diff --git a/math/w_atan2l_compat.c b/math/w_atan2l_compat.c
index b7b29ff..87b7394 100644
--- a/math/w_atan2l_compat.c
+++ b/math/w_atan2l_compat.c
@@ -23,6 +23,7 @@
#include <errno.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
long double
diff --git a/math/w_atanh_compat.c b/math/w_atanh_compat.c
index 456dcb3..f7a43be 100644
--- a/math/w_atanh_compat.c
+++ b/math/w_atanh_compat.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper atanh */
diff --git a/math/w_atanhf_compat.c b/math/w_atanhf_compat.c
index dd14145..c9d2c3a 100644
--- a/math/w_atanhf_compat.c
+++ b/math/w_atanhf_compat.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper atanhf */
diff --git a/math/w_atanhl_compat.c b/math/w_atanhl_compat.c
index 37e8da5..56f9f1e 100644
--- a/math/w_atanhl_compat.c
+++ b/math/w_atanhl_compat.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper atanhl */
diff --git a/math/w_cosh_compat.c b/math/w_cosh_compat.c
index 0771434..fd16436 100644
--- a/math/w_cosh_compat.c
+++ b/math/w_cosh_compat.c
@@ -16,6 +16,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
double
__cosh (double x)
diff --git a/math/w_coshf_compat.c b/math/w_coshf_compat.c
index dc7fb53..dd62281 100644
--- a/math/w_coshf_compat.c
+++ b/math/w_coshf_compat.c
@@ -20,6 +20,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
float
__coshf (float x)
diff --git a/math/w_coshl_compat.c b/math/w_coshl_compat.c
index 27f0a4f..5fa32be 100644
--- a/math/w_coshl_compat.c
+++ b/math/w_coshl_compat.c
@@ -21,6 +21,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
long double
__coshl (long double x)
diff --git a/math/w_exp10_compat.c b/math/w_exp10_compat.c
index 1ba9279..64f1d19 100644
--- a/math/w_exp10_compat.c
+++ b/math/w_exp10_compat.c
@@ -23,6 +23,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
double
__exp10 (double x)
diff --git a/math/w_exp10f_compat.c b/math/w_exp10f_compat.c
index 7993945..5cf926a 100644
--- a/math/w_exp10f_compat.c
+++ b/math/w_exp10f_compat.c
@@ -23,6 +23,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
float
__exp10f (float x)
diff --git a/math/w_exp10l_compat.c b/math/w_exp10l_compat.c
index 2734468..06f5267 100644
--- a/math/w_exp10l_compat.c
+++ b/math/w_exp10l_compat.c
@@ -23,6 +23,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
long double
__exp10l (long double x)
diff --git a/math/w_exp2_compat.c b/math/w_exp2_compat.c
index ca17f9e..a4d4653 100644
--- a/math/w_exp2_compat.c
+++ b/math/w_exp2_compat.c
@@ -4,6 +4,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
double
__exp2 (double x)
diff --git a/math/w_exp2f_compat.c b/math/w_exp2f_compat.c
index 61cbd6c..b21fe36 100644
--- a/math/w_exp2f_compat.c
+++ b/math/w_exp2f_compat.c
@@ -4,6 +4,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
float
__exp2f (float x)
diff --git a/math/w_exp2l_compat.c b/math/w_exp2l_compat.c
index 47aed3c..04cd666 100644
--- a/math/w_exp2l_compat.c
+++ b/math/w_exp2l_compat.c
@@ -4,6 +4,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
long double
__exp2l (long double x)
diff --git a/math/w_fmod_compat.c b/math/w_fmod_compat.c
index 746550a..1079d3a 100644
--- a/math/w_fmod_compat.c
+++ b/math/w_fmod_compat.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper fmod */
double
diff --git a/math/w_fmodf_compat.c b/math/w_fmodf_compat.c
index 45ece58..88b64a2 100644
--- a/math/w_fmodf_compat.c
+++ b/math/w_fmodf_compat.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper fmodf */
float
diff --git a/math/w_fmodl_compat.c b/math/w_fmodl_compat.c
index 1f385bd..23422fa 100644
--- a/math/w_fmodl_compat.c
+++ b/math/w_fmodl_compat.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper fmodl */
long double
diff --git a/math/w_hypot_compat.c b/math/w_hypot_compat.c
index 7c662c8..ff3774c 100644
--- a/math/w_hypot_compat.c
+++ b/math/w_hypot_compat.c
@@ -16,6 +16,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
double
diff --git a/math/w_hypotf_compat.c b/math/w_hypotf_compat.c
index 0ecacae..0a43d90 100644
--- a/math/w_hypotf_compat.c
+++ b/math/w_hypotf_compat.c
@@ -19,6 +19,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
float
diff --git a/math/w_hypotl_compat.c b/math/w_hypotl_compat.c
index c784fa2..13060f7 100644
--- a/math/w_hypotl_compat.c
+++ b/math/w_hypotl_compat.c
@@ -20,6 +20,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
long double
diff --git a/math/w_j0_compat.c b/math/w_j0_compat.c
index e7b56f2..80d21ac 100644
--- a/math/w_j0_compat.c
+++ b/math/w_j0_compat.c
@@ -19,6 +19,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper j0 */
diff --git a/math/w_j0f_compat.c b/math/w_j0f_compat.c
index 34220b9..36fc4f9 100644
--- a/math/w_j0f_compat.c
+++ b/math/w_j0f_compat.c
@@ -19,6 +19,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper j0f */
diff --git a/math/w_j0l_compat.c b/math/w_j0l_compat.c
index e03fa1d..ff7e1b1 100644
--- a/math/w_j0l_compat.c
+++ b/math/w_j0l_compat.c
@@ -19,6 +19,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper j0l */
diff --git a/math/w_j1_compat.c b/math/w_j1_compat.c
index efbe8df..f7a76c1 100644
--- a/math/w_j1_compat.c
+++ b/math/w_j1_compat.c
@@ -19,6 +19,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper j1 */
diff --git a/math/w_j1f_compat.c b/math/w_j1f_compat.c
index 7558685..9aa5c8c 100644
--- a/math/w_j1f_compat.c
+++ b/math/w_j1f_compat.c
@@ -19,6 +19,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper j1f */
diff --git a/math/w_j1l_compat.c b/math/w_j1l_compat.c
index f35261d..7e6d9f5 100644
--- a/math/w_j1l_compat.c
+++ b/math/w_j1l_compat.c
@@ -19,6 +19,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper j1l */
diff --git a/math/w_jn_compat.c b/math/w_jn_compat.c
index 9321bf5..7c49992 100644
--- a/math/w_jn_compat.c
+++ b/math/w_jn_compat.c
@@ -19,6 +19,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper jn */
diff --git a/math/w_jnf_compat.c b/math/w_jnf_compat.c
index 9752b2a..ead40e7 100644
--- a/math/w_jnf_compat.c
+++ b/math/w_jnf_compat.c
@@ -19,6 +19,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper jnf */
diff --git a/math/w_jnl_compat.c b/math/w_jnl_compat.c
index d17b047..bc41635 100644
--- a/math/w_jnl_compat.c
+++ b/math/w_jnl_compat.c
@@ -46,6 +46,7 @@ static char rcsid[] = "$NetBSD: $";
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
long double __jnl(int n, long double x) /* wrapper jnl */
{
diff --git a/math/w_lgamma_main.c b/math/w_lgamma_main.c
index cdea331..7dbba22 100644
--- a/math/w_lgamma_main.c
+++ b/math/w_lgamma_main.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
#include <lgamma-compat.h>
diff --git a/math/w_lgamma_r_compat.c b/math/w_lgamma_r_compat.c
index 6578b2c..3f7fbce 100644
--- a/math/w_lgamma_r_compat.c
+++ b/math/w_lgamma_r_compat.c
@@ -16,6 +16,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
double
diff --git a/math/w_lgammaf_main.c b/math/w_lgammaf_main.c
index ba7ff0e..a3d7e1a 100644
--- a/math/w_lgammaf_main.c
+++ b/math/w_lgammaf_main.c
@@ -15,6 +15,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
#include <lgamma-compat.h>
diff --git a/math/w_lgammaf_r_compat.c b/math/w_lgammaf_r_compat.c
index d7d2cb8..d9601f4 100644
--- a/math/w_lgammaf_r_compat.c
+++ b/math/w_lgammaf_r_compat.c
@@ -19,6 +19,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
float
diff --git a/math/w_lgammal_main.c b/math/w_lgammal_main.c
index c3c41f6..447fb97 100644
--- a/math/w_lgammal_main.c
+++ b/math/w_lgammal_main.c
@@ -22,6 +22,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
#include <lgamma-compat.h>
diff --git a/math/w_lgammal_r_compat.c b/math/w_lgammal_r_compat.c
index 7caeb12..d1b58e4 100644
--- a/math/w_lgammal_r_compat.c
+++ b/math/w_lgammal_r_compat.c
@@ -20,6 +20,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
long double
diff --git a/math/w_log10_compat.c b/math/w_log10_compat.c
index 9704ba9..6f3eb34 100644
--- a/math/w_log10_compat.c
+++ b/math/w_log10_compat.c
@@ -19,6 +19,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper log10(x) */
diff --git a/math/w_log10f_compat.c b/math/w_log10f_compat.c
index f8921fe..2cb5c9a 100644
--- a/math/w_log10f_compat.c
+++ b/math/w_log10f_compat.c
@@ -19,6 +19,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper log10f(x) */
diff --git a/math/w_log10l_compat.c b/math/w_log10l_compat.c
index cfb514a..0063c50 100644
--- a/math/w_log10l_compat.c
+++ b/math/w_log10l_compat.c
@@ -19,6 +19,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper log10l(x) */
diff --git a/math/w_log2_compat.c b/math/w_log2_compat.c
index b8e842d..252fc0d 100644
--- a/math/w_log2_compat.c
+++ b/math/w_log2_compat.c
@@ -19,6 +19,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper log2(x) */
diff --git a/math/w_log2f_compat.c b/math/w_log2f_compat.c
index 357cc0a..6adaff6 100644
--- a/math/w_log2f_compat.c
+++ b/math/w_log2f_compat.c
@@ -19,6 +19,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper log2f(x) */
diff --git a/math/w_log2l_compat.c b/math/w_log2l_compat.c
index 3d9994e..f496c36 100644
--- a/math/w_log2l_compat.c
+++ b/math/w_log2l_compat.c
@@ -19,6 +19,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper log2l(x) */
diff --git a/math/w_log_compat.c b/math/w_log_compat.c
index 4b47069..82f3ff4 100644
--- a/math/w_log_compat.c
+++ b/math/w_log_compat.c
@@ -19,6 +19,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper log(x) */
diff --git a/math/w_logf_compat.c b/math/w_logf_compat.c
index 8b0f4fc..ac18b65 100644
--- a/math/w_logf_compat.c
+++ b/math/w_logf_compat.c
@@ -19,6 +19,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper logf(x) */
diff --git a/math/w_logl_compat.c b/math/w_logl_compat.c
index 12afbe5..ba65830 100644
--- a/math/w_logl_compat.c
+++ b/math/w_logl_compat.c
@@ -19,6 +19,7 @@
#include <fenv.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper logl(x) */
diff --git a/math/w_pow_compat.c b/math/w_pow_compat.c
index 0e24b75..367f609 100644
--- a/math/w_pow_compat.c
+++ b/math/w_pow_compat.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper pow */
diff --git a/math/w_powf_compat.c b/math/w_powf_compat.c
index 7e3b015..afc3fce 100644
--- a/math/w_powf_compat.c
+++ b/math/w_powf_compat.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper powf */
diff --git a/math/w_powl_compat.c b/math/w_powl_compat.c
index 60a89c2..b25dad8 100644
--- a/math/w_powl_compat.c
+++ b/math/w_powl_compat.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper powl */
diff --git a/math/w_remainder_compat.c b/math/w_remainder_compat.c
index 6644590..27fa14f 100644
--- a/math/w_remainder_compat.c
+++ b/math/w_remainder_compat.c
@@ -18,6 +18,8 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
+#include <math-svid-compat.h>
/* wrapper remainder */
diff --git a/math/w_remainderf_compat.c b/math/w_remainderf_compat.c
index 1db246a..627b4f1 100644
--- a/math/w_remainderf_compat.c
+++ b/math/w_remainderf_compat.c
@@ -18,6 +18,8 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
+#include <math-svid-compat.h>
/* wrapper remainderf */
diff --git a/math/w_remainderl_compat.c b/math/w_remainderl_compat.c
index 2fc40f1..9858475 100644
--- a/math/w_remainderl_compat.c
+++ b/math/w_remainderl_compat.c
@@ -18,6 +18,8 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
+#include <math-svid-compat.h>
/* wrapper remainderl */
diff --git a/math/w_scalb_compat.c b/math/w_scalb_compat.c
index 8354115..a31e54d 100644
--- a/math/w_scalb_compat.c
+++ b/math/w_scalb_compat.c
@@ -19,6 +19,7 @@
#include <errno.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
static double
diff --git a/math/w_scalbf_compat.c b/math/w_scalbf_compat.c
index fe93f0a..2b96df0 100644
--- a/math/w_scalbf_compat.c
+++ b/math/w_scalbf_compat.c
@@ -19,6 +19,7 @@
#include <errno.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
static float
diff --git a/math/w_scalbl_compat.c b/math/w_scalbl_compat.c
index 62645d4..a4a0f8e 100644
--- a/math/w_scalbl_compat.c
+++ b/math/w_scalbl_compat.c
@@ -19,6 +19,7 @@
#include <errno.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
static long double
diff --git a/math/w_sinh_compat.c b/math/w_sinh_compat.c
index 51daf2f..121edfc 100644
--- a/math/w_sinh_compat.c
+++ b/math/w_sinh_compat.c
@@ -16,6 +16,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
double
__sinh (double x)
diff --git a/math/w_sinhf_compat.c b/math/w_sinhf_compat.c
index 0e530b1..2103b06 100644
--- a/math/w_sinhf_compat.c
+++ b/math/w_sinhf_compat.c
@@ -19,6 +19,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
float
__sinhf (float x)
diff --git a/math/w_sinhl_compat.c b/math/w_sinhl_compat.c
index 7df7c06..57f08e7 100644
--- a/math/w_sinhl_compat.c
+++ b/math/w_sinhl_compat.c
@@ -20,6 +20,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
long double
__sinhl (long double x)
diff --git a/math/w_sqrt_compat.c b/math/w_sqrt_compat.c
index 018da82..743df32 100644
--- a/math/w_sqrt_compat.c
+++ b/math/w_sqrt_compat.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper sqrt */
diff --git a/math/w_sqrtf_compat.c b/math/w_sqrtf_compat.c
index de5b42d..0689b4b 100644
--- a/math/w_sqrtf_compat.c
+++ b/math/w_sqrtf_compat.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper sqrtf */
diff --git a/math/w_sqrtl_compat.c b/math/w_sqrtl_compat.c
index b4663b7..43e81ac 100644
--- a/math/w_sqrtl_compat.c
+++ b/math/w_sqrtl_compat.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
/* wrapper sqrtl */
diff --git a/math/w_tgamma_compat.c b/math/w_tgamma_compat.c
index 99b6029..93bd48f 100644
--- a/math/w_tgamma_compat.c
+++ b/math/w_tgamma_compat.c
@@ -18,6 +18,7 @@
#include <errno.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
double
__tgamma(double x)
diff --git a/math/w_tgammaf_compat.c b/math/w_tgammaf_compat.c
index dfce894..e6ae48c 100644
--- a/math/w_tgammaf_compat.c
+++ b/math/w_tgammaf_compat.c
@@ -16,6 +16,7 @@
#include <errno.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
float
__tgammaf(float x)
diff --git a/math/w_tgammal_compat.c b/math/w_tgammal_compat.c
index 50de8cf..306f672 100644
--- a/math/w_tgammal_compat.c
+++ b/math/w_tgammal_compat.c
@@ -21,6 +21,7 @@
#include <errno.h>
#include <math.h>
#include <math_private.h>
+#include <math-svid-compat.h>
long double
__tgammal(long double x)