mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 20:40:05 +00:00
Add _DEFAULT_SOURCE feature test macro.
This patch adds a feature test macro _DEFAULT_SOURCE to enable the default set of header declarations. The intention is: if _DEFAULT_SOURCE is not used there is no change to the set of __USE_* macros glibc defines; if it's used on its own, and without compiler options such as -std=c99 that define __STRICT_ANSI__, again, there is no change; if it's used together with the macros it approximately (i.e., apart from __USE_POSIX_IMPLICITLY) implies (-D_BSD_SOURCE -D_SVID_SOURCE -D_POSIX_C_SOURCE=200809L), again, there is no change. Otherwise, it causes the relevant features to be enabled, even if __STRICT_ANSI__, or another feature test macro, would cause them to be disabled. This macro deliberately bundles the POSIX.1-2008 (non-X/Open) functionality with the BSD/SVID/"misc" functionality, rather than defining a macro that gives just the latter, as many of the header cleanups resulting from removing _BSD_SOURCE and _SVID_SOURCE support are only possible when BSD/SVID/"misc" is always bundled with POSIX.1-2008. Tested x86_64. * include/features.h: Update comment documenting feature test macros. Mention _DEFAULT_SOURCE in comment. [_GNU_SOURCE] (_DEFAULT_SOURCE): Undefine and redefine. [_DEFAULT_SOURCE]: Undefine and redefine _DEFAULT_SOURCE, _BSD_SOURCE and _SVID_SOURCE. [!__STRICT_ANSI__ && !_ISOC99_SOURCE && !_POSIX_SOURCE && !_POSIX_C_SOURCE && !_XOPEN_SOURCE && !_BSD_SOURCE && !_SVID_SOURCE]: Likewise. [_DEFAULT_SOURCE && !_POSIX_SOURCE && !_POSIX_C_SOURCE] (__USE_POSIX_IMPLICITLY): Define. [_DEFAULT_SOURCE && !_POSIX_SOURCE && !_POSIX_C_SOURCE] (_POSIX_SOURCE): Undefine and redefine. [_DEFAULT_SOURCE && !_POSIX_SOURCE && !_POSIX_C_SOURCE] (_POSIX_C_SOURCE): Likewise. * manual/creature.texi (_DEFAULT_SOURCE): Document. (Feature Test Macros): Update documentation of default features.
This commit is contained in:
parent
9f6e964c3a
commit
c688b41960
19
ChangeLog
19
ChangeLog
@ -1,3 +1,22 @@
|
||||
2013-12-19 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* include/features.h: Update comment documenting feature test
|
||||
macros. Mention _DEFAULT_SOURCE in comment.
|
||||
[_GNU_SOURCE] (_DEFAULT_SOURCE): Undefine and redefine.
|
||||
[_DEFAULT_SOURCE]: Undefine and redefine _DEFAULT_SOURCE,
|
||||
_BSD_SOURCE and _SVID_SOURCE.
|
||||
[!__STRICT_ANSI__ && !_ISOC99_SOURCE && !_POSIX_SOURCE &&
|
||||
!_POSIX_C_SOURCE && !_XOPEN_SOURCE && !_BSD_SOURCE &&
|
||||
!_SVID_SOURCE]: Likewise.
|
||||
[_DEFAULT_SOURCE && !_POSIX_SOURCE && !_POSIX_C_SOURCE]
|
||||
(__USE_POSIX_IMPLICITLY): Define.
|
||||
[_DEFAULT_SOURCE && !_POSIX_SOURCE && !_POSIX_C_SOURCE]
|
||||
(_POSIX_SOURCE): Undefine and redefine.
|
||||
[_DEFAULT_SOURCE && !_POSIX_SOURCE && !_POSIX_C_SOURCE]
|
||||
(_POSIX_C_SOURCE): Likewise.
|
||||
* manual/creature.texi (_DEFAULT_SOURCE): Document.
|
||||
(Feature Test Macros): Update documentation of default features.
|
||||
|
||||
2013-12-19 Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com>
|
||||
|
||||
* benchtests/Makefile: Add bench-strtok.
|
||||
|
5
NEWS
5
NEWS
@ -101,6 +101,11 @@ Version 2.19
|
||||
|
||||
* Support for STT_GNU_IFUNC symbols added for ppc32/power4+ and ppc64.
|
||||
|
||||
* A new feature test macro _DEFAULT_SOURCE is available to enable the same
|
||||
set of header declarations that are enabled by default, even when other
|
||||
feature test macros or compiler options such as -std=c99 would otherwise
|
||||
disable some of those declarations.
|
||||
|
||||
* The _BSD_SOURCE feature test macro no longer enables BSD interfaces that
|
||||
conflict with POSIX. The libbsd-compat library (which was a dummy library
|
||||
that did nothing) has also been removed.
|
||||
|
@ -41,17 +41,21 @@
|
||||
_SVID_SOURCE ISO C, POSIX, and SVID things.
|
||||
_ATFILE_SOURCE Additional *at interfaces.
|
||||
_GNU_SOURCE All of the above, plus GNU extensions.
|
||||
_DEFAULT_SOURCE The default set of features (taking precedence over
|
||||
__STRICT_ANSI__).
|
||||
_REENTRANT Select additionally reentrant object.
|
||||
_THREAD_SAFE Same as _REENTRANT, often used by other systems.
|
||||
_FORTIFY_SOURCE If set to numeric value > 0 additional security
|
||||
measures are defined, according to level.
|
||||
|
||||
The `-ansi' switch to the GNU C compiler defines __STRICT_ANSI__.
|
||||
If none of these are defined, the default is to have _SVID_SOURCE,
|
||||
_BSD_SOURCE, and _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
|
||||
200112L. If more than one of these are defined, they accumulate.
|
||||
For example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE
|
||||
together give you ISO C, 1003.1, and 1003.2, but nothing else.
|
||||
The `-ansi' switch to the GNU C compiler, and standards conformance
|
||||
options such as `-std=c99', define __STRICT_ANSI__. If none of
|
||||
these are defined, or if _DEFAULT_SOURCE is defined, the default is
|
||||
to have _SVID_SOURCE, _BSD_SOURCE, and _POSIX_SOURCE set to one and
|
||||
_POSIX_C_SOURCE set to 200809L. If more than one of these are
|
||||
defined, they accumulate. For example __STRICT_ANSI__,
|
||||
_POSIX_SOURCE and _POSIX_C_SOURCE together give you ISO C, 1003.1,
|
||||
and 1003.2, but nothing else.
|
||||
|
||||
These are defined by this file and are used by the
|
||||
header files to decide what to declare or define:
|
||||
@ -160,6 +164,8 @@
|
||||
# define _XOPEN_SOURCE_EXTENDED 1
|
||||
# undef _LARGEFILE64_SOURCE
|
||||
# define _LARGEFILE64_SOURCE 1
|
||||
# undef _DEFAULT_SOURCE
|
||||
# define _DEFAULT_SOURCE 1
|
||||
# undef _BSD_SOURCE
|
||||
# define _BSD_SOURCE 1
|
||||
# undef _SVID_SOURCE
|
||||
@ -168,12 +174,19 @@
|
||||
# define _ATFILE_SOURCE 1
|
||||
#endif
|
||||
|
||||
/* If nothing (other than _GNU_SOURCE) is defined,
|
||||
define _BSD_SOURCE and _SVID_SOURCE. */
|
||||
#if (!defined __STRICT_ANSI__ && !defined _ISOC99_SOURCE && \
|
||||
!defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE && \
|
||||
!defined _XOPEN_SOURCE && !defined _BSD_SOURCE && !defined _SVID_SOURCE)
|
||||
/* If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
|
||||
define _DEFAULT_SOURCE, _BSD_SOURCE and _SVID_SOURCE. */
|
||||
#if (defined _DEFAULT_SOURCE \
|
||||
|| (!defined __STRICT_ANSI__ \
|
||||
&& !defined _ISOC99_SOURCE \
|
||||
&& !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE \
|
||||
&& !defined _XOPEN_SOURCE \
|
||||
&& !defined _BSD_SOURCE && !defined _SVID_SOURCE))
|
||||
# undef _DEFAULT_SOURCE
|
||||
# define _DEFAULT_SOURCE 1
|
||||
# undef _BSD_SOURCE
|
||||
# define _BSD_SOURCE 1
|
||||
# undef _SVID_SOURCE
|
||||
# define _SVID_SOURCE 1
|
||||
#endif
|
||||
|
||||
@ -204,8 +217,18 @@
|
||||
# define __USE_ISOCXX11 1
|
||||
#endif
|
||||
|
||||
/* If none of the ANSI/POSIX macros are defined, use POSIX.1 and POSIX.2
|
||||
(and IEEE Std 1003.1b-1993 unless _XOPEN_SOURCE is defined). */
|
||||
/* If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
|
||||
is defined, use POSIX.1-2008 (or another version depending on
|
||||
_XOPEN_SOURCE). */
|
||||
#ifdef _DEFAULT_SOURCE
|
||||
# if !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE
|
||||
# define __USE_POSIX_IMPLICITLY 1
|
||||
# endif
|
||||
# undef _POSIX_SOURCE
|
||||
# define _POSIX_SOURCE 1
|
||||
# undef _POSIX_C_SOURCE
|
||||
# define _POSIX_C_SOURCE 200809L
|
||||
#endif
|
||||
#if ((!defined __STRICT_ANSI__ || (_XOPEN_SOURCE - 0) >= 500) && \
|
||||
!defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE)
|
||||
# define _POSIX_SOURCE 1
|
||||
|
@ -188,6 +188,21 @@ the cases where POSIX.1 conflicts with BSD, the POSIX definitions take
|
||||
precedence.
|
||||
@end defvr
|
||||
|
||||
@comment (none)
|
||||
@comment GNU
|
||||
@defvr Macro _DEFAULT_SOURCE
|
||||
If you define this macro, most features are included apart from
|
||||
X/Open, LFS and GNU extensions; the effect is similar to defining
|
||||
@code{_POSIX_C_SOURCE} to @code{200809L} and @code{_POSIX_SOURCE},
|
||||
@code{_SVID_SOURCE}, and @code{_BSD_SOURCE} to 1. Defining this
|
||||
macro, on its own and without using compiler options such as
|
||||
@option{-ansi} or @option{-std=c99}, has the same effect as not
|
||||
defining any feature test macros; defining it together with other
|
||||
feature test macros, or when options such as @option{-ansi} are used,
|
||||
enables those features even when the other options would otherwise
|
||||
cause them to be disabled.
|
||||
@end defvr
|
||||
|
||||
@comment (none)
|
||||
@comment GNU
|
||||
@defvr Macro _REENTRANT
|
||||
@ -204,10 +219,10 @@ it must have been specified to compile as thread safe.
|
||||
@end defvr
|
||||
|
||||
We recommend you use @code{_GNU_SOURCE} in new programs. If you don't
|
||||
specify the @samp{-ansi} option to GCC and don't define any of these
|
||||
macros explicitly, the effect is the same as defining
|
||||
@code{_POSIX_C_SOURCE} to 2 and @code{_POSIX_SOURCE},
|
||||
@code{_SVID_SOURCE}, and @code{_BSD_SOURCE} to 1.
|
||||
specify the @samp{-ansi} option to GCC, or other conformance options
|
||||
such as @option{-std=c99}, and don't define any of these macros
|
||||
explicitly, the effect is the same as defining @code{_DEFAULT_SOURCE}
|
||||
to 1.
|
||||
|
||||
When you define a feature test macro to request a larger class of features,
|
||||
it is harmless to define in addition a feature test macro for a subset of
|
||||
|
Loading…
Reference in New Issue
Block a user