mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-11 11:50:06 +00:00
bf91be88ea
This patch implements support for the __STDC_WANT_IEC_60559_BFP_EXT__ feature test macro from ISO/IEC 18661-1:2014, following the __GLIBC_USE approach now used for __STDC_WANT_LIB_EXT2__. For this macro, the relevant consideration is whether it is defined or undefined when an affected header is included (not what its value is if defined, and not whether it's defined or undefined when any other unaffected system header is included). Currently this macro only affects the issignaling macro and the nextup and nextdown functions (so they can be enabled by defining this macro, not just by defining _GNU_SOURCE as previously). Any further features from this TS added in future would also be conditioned on this macro. Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch). * bits/libc-header-start.h (__GLIBC_USE_IEC_60559_BFP_EXT): New macro. * include/features.h (__STDC_WANT_IEC_60559_BFP_EXT__): Document. * manual/arith.texi (issignaling): Document as ISO from TS 18661-1:2014. (nextup): Likewise. (nextupf): Likewise. (nextupl): Likewise. (nextdown): Likewise. (nextdownf): Likewise. (nextdownl): Likewise. * manual/creature.texi (__STDC_WANT_IEC_60559_BFP_EXT__): Document macro. * math/math.h: Define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION and include <bits/libc-header-start.h> instead of including <features.h>. (issignaling): Define if [__GLIBC_USE (IEC_60559_BFP_EXT)], not [__USE_GNU]. * math/bits/mathcalls.h (nextdown): Declare if [__GLIBC_USE (IEC_60559_BFP_EXT)], not [__USE_GNU]. (nextup): Likewise. (__issignaling): Likewise.
53 lines
2.0 KiB
C
53 lines
2.0 KiB
C
/* Handle feature test macros at the start of a header.
|
|
Copyright (C) 2016 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/>. */
|
|
|
|
/* This header is internal to glibc and should not be included outside
|
|
of glibc headers. Headers including it must define
|
|
__GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header
|
|
cannot have multiple include guards because ISO C feature test
|
|
macros depend on the definition of the macro when an affected
|
|
header is included, not when the first system header is
|
|
included. */
|
|
|
|
#ifndef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
|
|
# error "Never include <bits/libc-header-start.h> directly."
|
|
#endif
|
|
|
|
#undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
|
|
|
|
#include <features.h>
|
|
|
|
/* ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__
|
|
macro. */
|
|
#undef __GLIBC_USE_LIB_EXT2
|
|
#if (defined __USE_GNU \
|
|
|| (defined __STDC_WANT_LIB_EXT2__ && __STDC_WANT_LIB_EXT2__ > 0))
|
|
# define __GLIBC_USE_LIB_EXT2 1
|
|
#else
|
|
# define __GLIBC_USE_LIB_EXT2 0
|
|
#endif
|
|
|
|
/* ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__
|
|
macro. */
|
|
#undef __GLIBC_USE_IEC_60559_BFP_EXT
|
|
#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_BFP_EXT__
|
|
# define __GLIBC_USE_IEC_60559_BFP_EXT 1
|
|
#else
|
|
# define __GLIBC_USE_IEC_60559_BFP_EXT 0
|
|
#endif
|