aboutsummaryrefslogtreecommitdiff
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.zip
glibc-70e2ba332f887760f56700baf7adcf441ff50ba9.tar.gz
glibc-70e2ba332f887760f56700baf7adcf441ff50ba9.tar.bz2
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 9d102a6..718a512 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 c4065e8..242b22c 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 5fdab1e..766681a 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 5f95e92..4581852 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 95f28c2..ad599d6 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 ab11c25..bd9247c 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 bd12922..7b1dd9a 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 a4d28d7..b3a86aea 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 079fdb2..ff6d163 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 efc09ed..0f38a20 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 d630a10..e24fb03 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 c55913d..43ea34a 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 1fc18c2..58c6dca 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 6741138..c7ea835 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 3e45f33..fd41dc2 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 a298353..f8ce3f8 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 41d3a10..0bee2fb 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 e436cb2..9d2c5d4 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 3b014b8..11a5688 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 5cfb6b9..e59d954 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 fb0adc6..400040a 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 8b546ba..a169c7b 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 8638670..11769e2 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 8315ccd..76f2557 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 87c155d..996139d 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 fd1861a..9cee218 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 d2387c2..b4b4048 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 61e7170..7b34a99 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 7b4b545..c9d99be 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 ba74ed2..c400165 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 5413b8e..4ed4eea 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 9810d30..7e8c124 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 991251a..f47d792 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>