aboutsummaryrefslogtreecommitdiff
path: root/ChangeLog
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-11-05 00:48:57 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-11-05 00:48:57 +0000
commit3bfee8beb8caa939020d942dfa405a3d98975749 (patch)
treef62482f0febbd4a944cd60b8d96c4be378d29789 /ChangeLog
parent9f9f27248bf464b465fd4f05112a5b479503e83a (diff)
downloadglibc-3bfee8beb8caa939020d942dfa405a3d98975749.zip
glibc-3bfee8beb8caa939020d942dfa405a3d98975749.tar.gz
glibc-3bfee8beb8caa939020d942dfa405a3d98975749.tar.bz2
Make bits/math-finite.h conditions match other headers (bug 19205).
bits/math-finite.h declares -ffinite-math-only variants of various functions under conditions not matching those under which the normal versions are declared. * math.h only ever includes bits/mathcalls.h to declare float and long double functions if __USE_ISOC99, but bits/math-finite.h declares some float functions regardless (long double ones are conditioned on __MATH_DECLARE_LDOUBLE). (For C90 functions this isn't a conformance bug because C90 reserves the float and long double names, but is still contrary to good glibc practice. For some other functions in older XSI standards it *is* a conformance bug.) * Some functions are defined as inlines using lgamma_r functions under conditions where those lgamma_r functions are not themselves declared. * hypot is declared under __USE_XOPEN || __USE_ISOC99 in bits/mathcalls.h, __USE_ISOC99 only in bits/math-finite.h. * float and long double versions of Bessel functions should be limited to __USE_MISC (as in bug 18977). * gamma should not be declared for __USE_XOPEN2K (as in bug 18967). * remainder should be restricted to __USE_XOPEN_EXTENDED || __USE_ISOC99, not unconditional. * scalb should not be declared for __USE_XOPEN2K8, and scalbf and scalbl are non-POSIX (as in bug 18967). This patch fixes all these issues (it doesn't seem worth splitting them into separate patches or bugs). I put __USE_ISOC99 conditionals, where needed, around both float and long double declarations, even though formally redundant around the long double declarations because __MATH_DECLARE_LDOUBLE isn't defined without __USE_ISOC99; it seemed clearer that way. The missing declarations of lgamma_r functions are dealt with by directly using declarations of __lgamma*_r_finite, in the implementation namespace, rather than having the inlines rely on asm redirection of lgamma*_r. After this patch, there are some apparently redundant nested __USE_ISOC99 conditionals in lgamma / gamma definitions. These actually reflect a separate bug (the correct condition for the lgamma inline functions to set signgam is __USE_MISC || __USE_XOPEN, the condition under which signgam is declared, rather than disabling setting it if __USE_ISOC99, which includes XSI POSIX versions for which signgam *should* be set). They'll be fixed as part of a fix for that bug, which will also add tests for these inlines. I've put a note about more general conform/ test coverage for -ffinite-math-only on <https://sourceware.org/glibc/wiki/Development_Todo/Master#conformtest_improvements>, alongside other options for which this is also relevant (some of which have also had such bugs in the past relating to mismatched conditionals). I also intend to enable the main libm-test.inc tests for the math-finite.h functions, but some other bugs in __*_finite need fixing first. [BZ #19205] * math/bits/math-finite.h (acosf): Condition declaration on [__USE_ISOC99]. (acosl): Likewise. (acoshf): Likewise. (acoshl): Likewise. (asinf): Likewise. (asinl): Likewise. (atan2f): Likewise. (atan2l): Likewise. (atanhf): Likewise. (atanhl): Likewise. (coshf): Likewise. (coshl): Likewise. (expf): Likewise. (expl): Likewise. (fmodf): Likewise. (fmodl): Likewise. (hypot): Change condition to [__USE_XOPEN || __USE_ISOC99]. (j0f): Change condition to [__USE_MISC && __USE_ISOC99]. (j0l): Likewise. (y0f): Likewise. (y0l): Likewise. (j1f): Likewise. (j1l): Likewise. (y1f): Likewise. (y1l): Likewise. (jnf): Likewise. (jnl): Likewise. (ynf): Likewise. (ynl): Likewise. (lgammaf_r): Condition declaration on [__USE_ISOC99]. (lgammal_r): Likewise. (__lgamma_r_finite): New declaration. (__lgammaf_r_finite): Likewise. (__lgammal_r_finite): Likewise. (lgamma): Use __lgamma_r_finite. (lgammaf): Condition definition on [__USE_ISOC99]. Use __lgammaf_r_finite. (lgammal): Condition definition on [__USE_ISOC99]. Use __lgammal_r_finite. (gamma): Do not define for [!__USE_MISC && __USE_XOPEN2K]. Use __lgamma_r_finite. (gammaf): Condition definition on [__USE_ISOC99]. Use __lgammaf_r_finite. (gammal): Condition definition on [__USE_ISOC99]. Use __lgammal_r_finite. (logf): Condition declaration on [__USE_ISOC99]. (logl): Likewise. (log10f): Likewise. (log10l): Likewise. (ldexpf): Likewise. (ldexpl): Likewise. (powf): Likewise. (powl): Likewise. (remainder): Condition declaration on [__USE_XOPEN_EXTENDED || __USE_ISOC99]. (remainderf): Condition declaration on [__USE_ISOC99]. (remainderl): Likewise. (scalb): Do not declare for [!__USE_MISC && __USE_XOPEN2K8]. (scalbf): Change condition to [__USE_MISC && __USE_ISOC99]. (scalbl): Likewise. (sinhf): Condition declaration on [__USE_ISOC99]. (sinhl): Likewise. (sqrtf): Likewise. (sqrtl): Likewise.
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog69
1 files changed, 69 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 4c0c0c2..90a4bb1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,72 @@
+2015-11-05 Joseph Myers <joseph@codesourcery.com>
+
+ [BZ #19205]
+ * math/bits/math-finite.h (acosf): Condition declaration on
+ [__USE_ISOC99].
+ (acosl): Likewise.
+ (acoshf): Likewise.
+ (acoshl): Likewise.
+ (asinf): Likewise.
+ (asinl): Likewise.
+ (atan2f): Likewise.
+ (atan2l): Likewise.
+ (atanhf): Likewise.
+ (atanhl): Likewise.
+ (coshf): Likewise.
+ (coshl): Likewise.
+ (expf): Likewise.
+ (expl): Likewise.
+ (fmodf): Likewise.
+ (fmodl): Likewise.
+ (hypot): Change condition to [__USE_XOPEN || __USE_ISOC99].
+ (j0f): Change condition to [__USE_MISC && __USE_ISOC99].
+ (j0l): Likewise.
+ (y0f): Likewise.
+ (y0l): Likewise.
+ (j1f): Likewise.
+ (j1l): Likewise.
+ (y1f): Likewise.
+ (y1l): Likewise.
+ (jnf): Likewise.
+ (jnl): Likewise.
+ (ynf): Likewise.
+ (ynl): Likewise.
+ (lgammaf_r): Condition declaration on [__USE_ISOC99].
+ (lgammal_r): Likewise.
+ (__lgamma_r_finite): New declaration.
+ (__lgammaf_r_finite): Likewise.
+ (__lgammal_r_finite): Likewise.
+ (lgamma): Use __lgamma_r_finite.
+ (lgammaf): Condition definition on [__USE_ISOC99]. Use
+ __lgammaf_r_finite.
+ (lgammal): Condition definition on [__USE_ISOC99]. Use
+ __lgammal_r_finite.
+ (gamma): Do not define for [!__USE_MISC && __USE_XOPEN2K]. Use
+ __lgamma_r_finite.
+ (gammaf): Condition definition on [__USE_ISOC99]. Use
+ __lgammaf_r_finite.
+ (gammal): Condition definition on [__USE_ISOC99]. Use
+ __lgammal_r_finite.
+ (logf): Condition declaration on [__USE_ISOC99].
+ (logl): Likewise.
+ (log10f): Likewise.
+ (log10l): Likewise.
+ (ldexpf): Likewise.
+ (ldexpl): Likewise.
+ (powf): Likewise.
+ (powl): Likewise.
+ (remainder): Condition declaration on [__USE_XOPEN_EXTENDED ||
+ __USE_ISOC99].
+ (remainderf): Condition declaration on [__USE_ISOC99].
+ (remainderl): Likewise.
+ (scalb): Do not declare for [!__USE_MISC && __USE_XOPEN2K8].
+ (scalbf): Change condition to [__USE_MISC && __USE_ISOC99].
+ (scalbl): Likewise.
+ (sinhf): Condition declaration on [__USE_ISOC99].
+ (sinhl): Likewise.
+ (sqrtf): Likewise.
+ (sqrtl): Likewise.
+
2015-11-04 Joseph Myers <joseph@codesourcery.com>
* sysdeps/arm/atomic-machine.h