summary refs log tree commit diff
path: root/math
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2018-09-03 21:09:04 +0000
committerJoseph Myers <joseph@codesourcery.com>2018-09-03 21:09:04 +0000
commit70e2ba332f887760f56700baf7adcf441ff50ba9 (patch)
tree8daf453f0d374fcb3e125efe644cf2a526e91d25 /math
parenta6e8926f8d49a213a9abb1a61f6af964f612ab7f (diff)
downloadglibc-70e2ba332f887760f56700baf7adcf441ff50ba9.tar.gz
glibc-70e2ba332f887760f56700baf7adcf441ff50ba9.tar.xz
glibc-70e2ba332f887760f56700baf7adcf441ff50ba9.zip
Do not include fenv_private.h in math_private.h.
Continuing the clean-up related to the catch-all math_private.h
header, this patch stops math_private.h from including fenv_private.h.
Instead, fenv_private.h is included directly from those users of
math_private.h that also used interfaces from fenv_private.h.  No
attempt is made to remove unused includes of math_private.h, but that
is a natural followup.

(However, since math_private.h sometimes defines optimized versions of
math.h interfaces or __* variants thereof, as well as defining its own
interfaces, I think it might make sense to get all those optimized
versions included from include/math.h, not requiring a separate header
at all, before eliminating unused math_private.h includes - that
avoids a file quietly becoming less-optimized if someone adds a call
to one of those interfaces without restoring a math_private.h include
to that file.)

There is still a pitfall that if code uses plain fe* and __fe*
interfaces, but only includes fenv.h and not fenv_private.h or (before
this patch) math_private.h, it will compile on platforms with
exceptions and rounding modes but not get the optimized versions (and
possibly not compile) on platforms without exception and rounding mode
support, so making it easy to break the build for such platforms
accidentally.

I think it would be most natural to move the inlines / macros for fe*
and __fe* in the case of no exceptions and rounding modes into
include/fenv.h, so that all code including fenv.h with _ISOMAC not
defined automatically gets them.  Then fenv_private.h would be purely
the header for the libc_fe*, SET_RESTORE_ROUND etc. internal
interfaces and the risk of breaking the build on other platforms than
the one you tested on because of a missing fenv_private.h include
would be much reduced (and there would be some unused fenv_private.h
includes to remove along with unused math_private.h includes).

Tested for x86_64 and x86, and tested with build-many-glibcs.py that
installed stripped shared libraries are unchanged by this patch.

	* sysdeps/generic/math_private.h: Do not include <fenv_private.h>.
	* math/fromfp.h: Include <fenv_private.h>.
	* math/math-narrow.h: Likewise.
	* math/s_cexp_template.c: Likewise.
	* math/s_csin_template.c: Likewise.
	* math/s_csinh_template.c: Likewise.
	* math/s_ctan_template.c: Likewise.
	* math/s_ctanh_template.c: Likewise.
	* math/s_iseqsig_template.c: Likewise.
	* math/w_acos_compat.c: Likewise.
	* math/w_acosf_compat.c: Likewise.
	* math/w_acosl_compat.c: Likewise.
	* math/w_asin_compat.c: Likewise.
	* math/w_asinf_compat.c: Likewise.
	* math/w_asinl_compat.c: Likewise.
	* math/w_ilogb_template.c: Likewise.
	* math/w_j0_compat.c: Likewise.
	* math/w_j0f_compat.c: Likewise.
	* math/w_j0l_compat.c: Likewise.
	* math/w_j1_compat.c: Likewise.
	* math/w_j1f_compat.c: Likewise.
	* math/w_j1l_compat.c: Likewise.
	* math/w_jn_compat.c: Likewise.
	* math/w_jnf_compat.c: Likewise.
	* math/w_llogb_template.c: Likewise.
	* math/w_log10_compat.c: Likewise.
	* math/w_log10f_compat.c: Likewise.
	* math/w_log10l_compat.c: Likewise.
	* math/w_log2_compat.c: Likewise.
	* math/w_log2f_compat.c: Likewise.
	* math/w_log2l_compat.c: Likewise.
	* math/w_log_compat.c: Likewise.
	* math/w_logf_compat.c: Likewise.
	* math/w_logl_compat.c: Likewise.
	* sysdeps/aarch64/fpu/feholdexcpt.c: Likewise.
	* sysdeps/aarch64/fpu/fesetround.c: Likewise.
	* sysdeps/aarch64/fpu/fgetexcptflg.c: Likewise.
	* sysdeps/aarch64/fpu/ftestexcept.c: Likewise.
	* sysdeps/ieee754/dbl-64/e_atan2.c: Likewise.
	* sysdeps/ieee754/dbl-64/e_exp.c: Likewise.
	* sysdeps/ieee754/dbl-64/e_exp2.c: Likewise.
	* sysdeps/ieee754/dbl-64/e_gamma_r.c: Likewise.
	* sysdeps/ieee754/dbl-64/e_jn.c: Likewise.
	* sysdeps/ieee754/dbl-64/e_pow.c: Likewise.
	* sysdeps/ieee754/dbl-64/e_remainder.c: Likewise.
	* sysdeps/ieee754/dbl-64/e_sqrt.c: Likewise.
	* sysdeps/ieee754/dbl-64/gamma_product.c: Likewise.
	* sysdeps/ieee754/dbl-64/lgamma_neg.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_atan.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_fma.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_fmaf.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_llrint.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_llround.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_lrint.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_lround.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_nearbyint.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_sin.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_sincos.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_tan.c: Likewise.
	* sysdeps/ieee754/dbl-64/wordsize-64/s_lround.c: Likewise.
	* sysdeps/ieee754/dbl-64/wordsize-64/s_nearbyint.c: Likewise.
	* sysdeps/ieee754/dbl-64/x2y2m1.c: Likewise.
	* sysdeps/ieee754/float128/float128_private.h: Likewise.
	* sysdeps/ieee754/flt-32/e_gammaf_r.c: Likewise.
	* sysdeps/ieee754/flt-32/e_j1f.c: Likewise.
	* sysdeps/ieee754/flt-32/e_jnf.c: Likewise.
	* sysdeps/ieee754/flt-32/lgamma_negf.c: Likewise.
	* sysdeps/ieee754/flt-32/s_llrintf.c: Likewise.
	* sysdeps/ieee754/flt-32/s_llroundf.c: Likewise.
	* sysdeps/ieee754/flt-32/s_lrintf.c: Likewise.
	* sysdeps/ieee754/flt-32/s_lroundf.c: Likewise.
	* sysdeps/ieee754/flt-32/s_nearbyintf.c: Likewise.
	* sysdeps/ieee754/k_standardl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/e_expl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/e_gammal_r.c: Likewise.
	* sysdeps/ieee754/ldbl-128/e_j1l.c: Likewise.
	* sysdeps/ieee754/ldbl-128/e_jnl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/gamma_productl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/lgamma_negl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/s_fmal.c: Likewise.
	* sysdeps/ieee754/ldbl-128/s_llrintl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/s_llroundl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/s_lrintl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/s_lroundl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/s_nearbyintl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/x2y2m1l.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/e_expl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/e_j1l.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/e_jnl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/lgamma_negl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_fmal.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_llrintl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_llroundl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_lrintl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_lroundl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_rintl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/x2y2m1l.c: Likewise.
	* sysdeps/ieee754/ldbl-96/e_gammal_r.c: Likewise.
	* sysdeps/ieee754/ldbl-96/e_jnl.c: Likewise.
	* sysdeps/ieee754/ldbl-96/gamma_productl.c: Likewise.
	* sysdeps/ieee754/ldbl-96/lgamma_negl.c: Likewise.
	* sysdeps/ieee754/ldbl-96/s_fma.c: Likewise.
	* sysdeps/ieee754/ldbl-96/s_fmal.c: Likewise.
	* sysdeps/ieee754/ldbl-96/s_llrintl.c: Likewise.
	* sysdeps/ieee754/ldbl-96/s_llroundl.c: Likewise.
	* sysdeps/ieee754/ldbl-96/s_lrintl.c: Likewise.
	* sysdeps/ieee754/ldbl-96/s_lroundl.c: Likewise.
	* sysdeps/ieee754/ldbl-96/x2y2m1l.c: Likewise.
	* sysdeps/powerpc/fpu/e_sqrt.c: Likewise.
	* sysdeps/powerpc/fpu/e_sqrtf.c: Likewise.
	* sysdeps/riscv/rv64/rvd/s_ceil.c: Likewise.
	* sysdeps/riscv/rv64/rvd/s_floor.c: Likewise.
	* sysdeps/riscv/rv64/rvd/s_nearbyint.c: Likewise.
	* sysdeps/riscv/rv64/rvd/s_round.c: Likewise.
	* sysdeps/riscv/rv64/rvd/s_roundeven.c: Likewise.
	* sysdeps/riscv/rv64/rvd/s_trunc.c: Likewise.
	* sysdeps/riscv/rvd/s_finite.c: Likewise.
	* sysdeps/riscv/rvd/s_fmax.c: Likewise.
	* sysdeps/riscv/rvd/s_fmin.c: Likewise.
	* sysdeps/riscv/rvd/s_fpclassify.c: Likewise.
	* sysdeps/riscv/rvd/s_isinf.c: Likewise.
	* sysdeps/riscv/rvd/s_isnan.c: Likewise.
	* sysdeps/riscv/rvd/s_issignaling.c: Likewise.
	* sysdeps/riscv/rvf/fegetround.c: Likewise.
	* sysdeps/riscv/rvf/feholdexcpt.c: Likewise.
	* sysdeps/riscv/rvf/fesetenv.c: Likewise.
	* sysdeps/riscv/rvf/fesetround.c: Likewise.
	* sysdeps/riscv/rvf/feupdateenv.c: Likewise.
	* sysdeps/riscv/rvf/fgetexcptflg.c: Likewise.
	* sysdeps/riscv/rvf/ftestexcept.c: Likewise.
	* sysdeps/riscv/rvf/s_ceilf.c: Likewise.
	* sysdeps/riscv/rvf/s_finitef.c: Likewise.
	* sysdeps/riscv/rvf/s_floorf.c: Likewise.
	* sysdeps/riscv/rvf/s_fmaxf.c: Likewise.
	* sysdeps/riscv/rvf/s_fminf.c: Likewise.
	* sysdeps/riscv/rvf/s_fpclassifyf.c: Likewise.
	* sysdeps/riscv/rvf/s_isinff.c: Likewise.
	* sysdeps/riscv/rvf/s_isnanf.c: Likewise.
	* sysdeps/riscv/rvf/s_issignalingf.c: Likewise.
	* sysdeps/riscv/rvf/s_nearbyintf.c: Likewise.
	* sysdeps/riscv/rvf/s_roundevenf.c: Likewise.
	* sysdeps/riscv/rvf/s_roundf.c: Likewise.
	* sysdeps/riscv/rvf/s_truncf.c: Likewise.
Diffstat (limited to 'math')
-rw-r--r--math/fromfp.h1
-rw-r--r--math/math-narrow.h1
-rw-r--r--math/s_cexp_template.c1
-rw-r--r--math/s_csin_template.c1
-rw-r--r--math/s_csinh_template.c1
-rw-r--r--math/s_ctan_template.c1
-rw-r--r--math/s_ctanh_template.c1
-rw-r--r--math/s_iseqsig_template.c1
-rw-r--r--math/w_acos_compat.c1
-rw-r--r--math/w_acosf_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_ilogb_template.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_llogb_template.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
33 files changed, 33 insertions, 0 deletions
diff --git a/math/fromfp.h b/math/fromfp.h
index 9d102a635f..718a5120d8 100644
--- a/math/fromfp.h
+++ b/math/fromfp.h
@@ -22,6 +22,7 @@
 #include <math.h>
 #include <math-barriers.h>
 #include <math_private.h>
+#include <fenv_private.h>
 #include <stdbool.h>
 #include <stdint.h>
 
diff --git a/math/math-narrow.h b/math/math-narrow.h
index c4065e88f7..242b22c8e2 100644
--- a/math/math-narrow.h
+++ b/math/math-narrow.h
@@ -26,6 +26,7 @@
 #include <ieee754.h>
 #include <math-barriers.h>
 #include <math_private.h>
+#include <fenv_private.h>
 
 /* Carry out a computation using round-to-odd.  The computation is
    EXPR; the union type in which to store the result is UNION and the
diff --git a/math/s_cexp_template.c b/math/s_cexp_template.c
index 5fdab1e5ac..766681a2bb 100644
--- a/math/s_cexp_template.c
+++ b/math/s_cexp_template.c
@@ -21,6 +21,7 @@
 #include <fenv.h>
 #include <math.h>
 #include <math_private.h>
+#include <fenv_private.h>
 #include <math-underflow.h>
 #include <float.h>
 
diff --git a/math/s_csin_template.c b/math/s_csin_template.c
index 5f95e92ee0..4581852b17 100644
--- a/math/s_csin_template.c
+++ b/math/s_csin_template.c
@@ -21,6 +21,7 @@
 #include <fenv.h>
 #include <math.h>
 #include <math_private.h>
+#include <fenv_private.h>
 #include <math-underflow.h>
 #include <float.h>
 
diff --git a/math/s_csinh_template.c b/math/s_csinh_template.c
index 95f28c2b66..ad599d67ea 100644
--- a/math/s_csinh_template.c
+++ b/math/s_csinh_template.c
@@ -21,6 +21,7 @@
 #include <fenv.h>
 #include <math.h>
 #include <math_private.h>
+#include <fenv_private.h>
 #include <math-underflow.h>
 #include <float.h>
 
diff --git a/math/s_ctan_template.c b/math/s_ctan_template.c
index ab11c25299..bd9247c98d 100644
--- a/math/s_ctan_template.c
+++ b/math/s_ctan_template.c
@@ -21,6 +21,7 @@
 #include <fenv.h>
 #include <math.h>
 #include <math_private.h>
+#include <fenv_private.h>
 #include <math-underflow.h>
 #include <float.h>
 
diff --git a/math/s_ctanh_template.c b/math/s_ctanh_template.c
index bd1292239f..7b1dd9aa67 100644
--- a/math/s_ctanh_template.c
+++ b/math/s_ctanh_template.c
@@ -21,6 +21,7 @@
 #include <fenv.h>
 #include <math.h>
 #include <math_private.h>
+#include <fenv_private.h>
 #include <math-underflow.h>
 #include <float.h>
 
diff --git a/math/s_iseqsig_template.c b/math/s_iseqsig_template.c
index a4d28d778d..b3a86aea50 100644
--- a/math/s_iseqsig_template.c
+++ b/math/s_iseqsig_template.c
@@ -20,6 +20,7 @@
 #include <fenv.h>
 #include <math.h>
 #include <math_private.h>
+#include <fenv_private.h>
 #include <stdbool.h>
 #include <fix-fp-int-compare-invalid.h>
 
diff --git a/math/w_acos_compat.c b/math/w_acos_compat.c
index 079fdb271f..ff6d163c20 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 <fenv_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-double.h>
 
diff --git a/math/w_acosf_compat.c b/math/w_acosf_compat.c
index efc09edb2a..0f38a20564 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 <fenv_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-float.h>
 
diff --git a/math/w_acosl_compat.c b/math/w_acosl_compat.c
index d630a10a40..e24fb03b5f 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 <fenv_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-ldouble.h>
 
diff --git a/math/w_asin_compat.c b/math/w_asin_compat.c
index c55913d304..43ea34a7dc 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 <fenv_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-double.h>
 
diff --git a/math/w_asinf_compat.c b/math/w_asinf_compat.c
index 1fc18c2e91..58c6dcaf27 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 <fenv_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-float.h>
 
diff --git a/math/w_asinl_compat.c b/math/w_asinl_compat.c
index 6741138f74..c7ea8358af 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 <fenv_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-ldouble.h>
 
diff --git a/math/w_ilogb_template.c b/math/w_ilogb_template.c
index 3e45f33b9c..fd41dc2627 100644
--- a/math/w_ilogb_template.c
+++ b/math/w_ilogb_template.c
@@ -20,6 +20,7 @@
 #include <errno.h>
 #include <limits.h>
 #include <math_private.h>
+#include <fenv_private.h>
 
 /* wrapper ilogb */
 int
diff --git a/math/w_j0_compat.c b/math/w_j0_compat.c
index a298353ac4..f8ce3f8d3c 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 <fenv_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-double.h>
 
diff --git a/math/w_j0f_compat.c b/math/w_j0f_compat.c
index 41d3a10147..0bee2fb011 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 <fenv_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-float.h>
 
diff --git a/math/w_j0l_compat.c b/math/w_j0l_compat.c
index e436cb278b..9d2c5d46a4 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 <fenv_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-ldouble.h>
 
diff --git a/math/w_j1_compat.c b/math/w_j1_compat.c
index 3b014b8cfa..11a56889f1 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 <fenv_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-double.h>
 
diff --git a/math/w_j1f_compat.c b/math/w_j1f_compat.c
index 5cfb6b9cd5..e59d954626 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 <fenv_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-float.h>
 
diff --git a/math/w_j1l_compat.c b/math/w_j1l_compat.c
index fb0adc68cb..400040a0a0 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 <fenv_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-ldouble.h>
 
diff --git a/math/w_jn_compat.c b/math/w_jn_compat.c
index 8b546ba4a2..a169c7b210 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 <fenv_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-double.h>
 
diff --git a/math/w_jnf_compat.c b/math/w_jnf_compat.c
index 86386700de..11769e2e26 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 <fenv_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-float.h>
 
diff --git a/math/w_llogb_template.c b/math/w_llogb_template.c
index 8315ccd072..76f2557677 100644
--- a/math/w_llogb_template.c
+++ b/math/w_llogb_template.c
@@ -20,6 +20,7 @@
 #include <errno.h>
 #include <limits.h>
 #include <math_private.h>
+#include <fenv_private.h>
 
 long int
 M_DECL_FUNC (__llogb) (FLOAT x)
diff --git a/math/w_log10_compat.c b/math/w_log10_compat.c
index 87c155d256..996139dc7c 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 <fenv_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-double.h>
 
diff --git a/math/w_log10f_compat.c b/math/w_log10f_compat.c
index fd1861a6ab..9cee2185d2 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 <fenv_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-float.h>
 
diff --git a/math/w_log10l_compat.c b/math/w_log10l_compat.c
index d2387c225a..b4b404822e 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 <fenv_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-ldouble.h>
 
diff --git a/math/w_log2_compat.c b/math/w_log2_compat.c
index 61e7170ae1..7b34a991e6 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 <fenv_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-double.h>
 
diff --git a/math/w_log2f_compat.c b/math/w_log2f_compat.c
index 7b4b545c81..c9d99be07a 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 <fenv_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-float.h>
 
diff --git a/math/w_log2l_compat.c b/math/w_log2l_compat.c
index ba74ed2576..c40016532d 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 <fenv_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-ldouble.h>
 
diff --git a/math/w_log_compat.c b/math/w_log_compat.c
index 5413b8e8df..4ed4eea6e8 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 <fenv_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-double.h>
 
diff --git a/math/w_logf_compat.c b/math/w_logf_compat.c
index 9810d30c52..7e8c124c4d 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 <fenv_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-float.h>
 
diff --git a/math/w_logl_compat.c b/math/w_logl_compat.c
index 991251a7c5..f47d792a16 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 <fenv_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-ldouble.h>