diff options
author | Joseph Myers <joseph@codesourcery.com> | 2015-09-15 22:12:40 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2015-09-15 22:12:40 +0000 |
commit | de20571d405bfb873f63a8645f143aef2b1455a9 (patch) | |
tree | c66dd93199826738cb3d89433bacb763f451818f /conform | |
parent | dfa0f62011b50cc36107df5fad4130c5368b11e1 (diff) | |
download | glibc-de20571d405bfb873f63a8645f143aef2b1455a9.tar.gz |
Fix math.h, tgmath.h XSI POSIX namespace (gamma, isnan, scalb) (bug 18967).
math.h incorrectly declares various functions for XSI POSIX 2001 and
2008 editions. gamma was removed in the 2001 edition but is still
declared, along with gammaf and gammal which were never standard
functions. isnan is still declared as a function, along with isnanf
and isnanl which were never standard functions, although in 2001 the
function was replaced by the type-generic macro. scalbf and scalbl
are declared although never standard, and scalb was removed in the
2008 edition but is still declared. The scalb type-generic macro in
tgmath.h shouldn't be present for any POSIX version, since POSIX never
had such a type-generic macro.
This patch disables all those declarations in the relevant cases (as a
minimal fix, it leaves them enabled for __USE_MISC). For the matter
of declaring scalb but not scalbf or scalbl for the 2001 edition, a
new macro __MATH_DECLARING_DOUBLE is added, defined by math.h around
includes of bits/mathcalls.h, for bits/mathcalls.h to use to test
which type's functions are being declared.
Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by the patch).
[BZ #18967]
* math/math.h (__MATH_DECLARING_DOUBLE): New macro. Define and
undefine around includes of <bits/mathcalls.h>.
* math/bits/mathcalls.h [!__USE_MISC && __USE_XOPEN2K] (isnan): Do
not declare function.
[!__USE_MISC && __USE_XOPEN2K] (gamma): Likewise.
[!__USE_MISC && (!__MATH_DECLARING_DOUBLE || __USE_XOPEN2K8)]
(scalb): Likewise.
* math/tgmath.h [!__USE_MISC && __USE_XOPEN_EXTENDED] (scalb): Do
not define macro.
* conform/Makefile (test-xfail-XOPEN2K/math.h/conform): Remove
variable.
(test-xfail-XOPEN2K/tgmath.h/conform): Likewise.
(test-xfail-XOPEN2K8/math.h/conform): Likewise.
(test-xfail-XOPEN2K8/tgmath.h/conform): Likewise.
Diffstat (limited to 'conform')
-rw-r--r-- | conform/Makefile | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/conform/Makefile b/conform/Makefile index 7d0a3dd92e..1a763691c7 100644 --- a/conform/Makefile +++ b/conform/Makefile @@ -217,7 +217,6 @@ test-xfail-UNIX98/utmpx.h/conform = yes test-xfail-XOPEN2K/aio.h/conform = yes test-xfail-XOPEN2K/fcntl.h/conform = yes test-xfail-XOPEN2K/langinfo.h/conform = yes -test-xfail-XOPEN2K/math.h/conform = yes test-xfail-XOPEN2K/mqueue.h/conform = yes test-xfail-XOPEN2K/semaphore.h/conform = yes test-xfail-XOPEN2K/signal.h/conform = yes @@ -225,7 +224,6 @@ test-xfail-XOPEN2K/stdarg.h/conform = yes test-xfail-XOPEN2K/stdio.h/conform = yes test-xfail-XOPEN2K/sys/wait.h/conform = yes test-xfail-XOPEN2K/termios.h/conform = yes -test-xfail-XOPEN2K/tgmath.h/conform = yes test-xfail-XOPEN2K/ucontext.h/conform = yes test-xfail-POSIX2008/arpa/inet.h/conform = yes test-xfail-POSIX2008/netdb.h/conform = yes @@ -234,12 +232,10 @@ test-xfail-POSIX2008/signal.h/conform = yes test-xfail-POSIX2008/sys/socket.h/conform = yes test-xfail-POSIX2008/sys/wait.h/conform = yes test-xfail-XOPEN2K8/limits.h/conform = yes -test-xfail-XOPEN2K8/math.h/conform = yes test-xfail-XOPEN2K8/signal.h/conform = yes test-xfail-XOPEN2K8/stdio.h/conform = yes test-xfail-XOPEN2K8/sys/wait.h/conform = yes test-xfail-XOPEN2K8/termios.h/conform = yes -test-xfail-XOPEN2K8/tgmath.h/conform = yes conformtest-cc-flags = -I../include $(+sysdep-includes) $(sysincludes) -I.. $(conformtest-header-tests): $(objpfx)%/conform.out: \ |