Remove _BSD_SOURCE and _SVID_SOURCE.

This is a minimal patch to remove _BSD_SOURCE and _SVID_SOURCE from
the documented user API, making them into aliases for _DEFAULT_SOURCE
with a #warning given, but keeping most of the features.h logic using
those macros and all the exising __USE_* conditionals, on the basis
that all the consequent cleanups will go in followup patches.

Tested x86_64.

	* include/features.h: Update comment documenting feature test
	macros.
	[_BSD_SOURCE || _SVID_SOURCE]: Give #warning.  Define
	_DEFAULT_SOURCE.
	* manual/creature.texi (_BSD_SOURCE): Remove documentation.
	(_SVID_SOURCE): Likewise.
	(_DEFAULT_SOURCE): Update description of default features.
	(Feature Test Macros): Don't mention _SVID_SOURCE in conjunction
	with _GNU_SOURCE.
	* manual/filesys.texi (__ftw_func_t): Do not refer to _BSD_SOURCE.
	(S_ISVTX): Likewise.
	* manual/math.texi (Mathematical Constants): Likewise.
	* manual/signal.texi (Interrupted Primitives): Likewise.
	* manual/startup.texi (putenv): Do not refer to _SVID_SOURCE.
	* math/test-matherr.c (_SVID_SOURCE): Do not define.
	* sysvipc/sys/ipc.h [__USE_SVID && !__USE_XOPEN && __GNUC__ >= 2]:
	Don't refer to _SVID_SOURCE in warning text.
This commit is contained in:
Joseph Myers 2014-02-11 23:40:07 +00:00
parent e8d8d7ec98
commit c941736c92
10 changed files with 51 additions and 43 deletions

View File

@ -1,5 +1,23 @@
2014-02-11 Joseph Myers <joseph@codesourcery.com>
* include/features.h: Update comment documenting feature test
macros.
[_BSD_SOURCE || _SVID_SOURCE]: Give #warning. Define
_DEFAULT_SOURCE.
* manual/creature.texi (_BSD_SOURCE): Remove documentation.
(_SVID_SOURCE): Likewise.
(_DEFAULT_SOURCE): Update description of default features.
(Feature Test Macros): Don't mention _SVID_SOURCE in conjunction
with _GNU_SOURCE.
* manual/filesys.texi (__ftw_func_t): Do not refer to _BSD_SOURCE.
(S_ISVTX): Likewise.
* manual/math.texi (Mathematical Constants): Likewise.
* manual/signal.texi (Interrupted Primitives): Likewise.
* manual/startup.texi (putenv): Do not refer to _SVID_SOURCE.
* math/test-matherr.c (_SVID_SOURCE): Do not define.
* sysvipc/sys/ipc.h [__USE_SVID && !__USE_XOPEN && __GNUC__ >= 2]:
Don't refer to _SVID_SOURCE in warning text.
* sysdeps/x86_64/fpu/libm-test-ulps: Update.
* elf/dl-lookup.c (ELF_MACHINE_SYM_NO_MATCH): Define if not

8
NEWS
View File

@ -13,6 +13,14 @@ Version 2.20
* The am33 port, which had not worked for several years, has been removed
from ports.
* The _BSD_SOURCE and _SVID_SOURCE feature test macros are no longer
supported; they now act the same as _DEFAULT_SOURCE (but generate a
warning). Except for cases where _BSD_SOURCE enabled BSD interfaces that
conflicted with POSIX (support for which was removed in 2.19), the
interfaces those macros enabled remain available when compiling with
_GNU_SOURCE defined, with _DEFAULT_SOURCE defined, or without any feature
test macros defined.
Version 2.19

View File

@ -37,8 +37,6 @@
_LARGEFILE_SOURCE Some more functions for correct standard I/O.
_LARGEFILE64_SOURCE Additional functionality from LFS for large files.
_FILE_OFFSET_BITS=N Select default filesystem interface.
_BSD_SOURCE ISO C, POSIX, and 4.3BSD things.
_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
@ -51,11 +49,11 @@
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.
to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
200809L, as well as enabling miscellaneous functions from BSD and
SVID. 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:
@ -145,6 +143,13 @@
# define __GNUC_PREREQ(maj, min) 0
#endif
/* _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
_DEFAULT_SOURCE. */
#if defined _BSD_SOURCE || defined _SVID_SOURCE
# warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
# undef _DEFAULT_SOURCE
# define _DEFAULT_SOURCE 1
#endif
/* If _GNU_SOURCE was defined by the user, turn on all the other features. */
#ifdef _GNU_SOURCE

View File

@ -72,20 +72,6 @@ or equal to @code{199506L}, then the functionality from the 1996
edition is made available.
@end defvr
@comment (none)
@comment GNU
@defvr Macro _BSD_SOURCE
If you define this macro, functionality derived from 4.3 BSD Unix is
included as well as the @w{ISO C}, POSIX.1, and POSIX.2 material.
@end defvr
@comment (none)
@comment GNU
@defvr Macro _SVID_SOURCE
If you define this macro, functionality derived from SVID is
included as well as the @w{ISO C}, POSIX.1, POSIX.2, and X/Open material.
@end defvr
@comment (none)
@comment X/Open
@defvr Macro _XOPEN_SOURCE
@ -192,9 +178,9 @@ precedence.
@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
X/Open, LFS and GNU extensions: the effect is to enable features from
the 2008 edition of POSIX, as well as certain BSD and SVID features
without a separate feature test macro to control them. 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
@ -229,4 +215,4 @@ it is harmless to define in addition a feature test macro for a subset of
those features. For example, if you define @code{_POSIX_C_SOURCE}, then
defining @code{_POSIX_SOURCE} as well has no effect. Likewise, if you
define @code{_GNU_SOURCE}, then defining either @code{_POSIX_SOURCE} or
@code{_POSIX_C_SOURCE} or @code{_SVID_SOURCE} as well has no effect.
@code{_POSIX_C_SOURCE} as well has no effect.

View File

@ -893,7 +893,7 @@ seeing this value in a @code{ftw} callback function means the referenced
file does not exist. The situation for @code{nftw} is different.
This value is only available if the program is compiled with
@code{_BSD_SOURCE} or @code{_XOPEN_EXTENDED} defined before including
@code{_XOPEN_EXTENDED} defined before including
the first header. The original SVID systems do not have symbolic links.
@end vtable
@ -2553,8 +2553,9 @@ the file's modification time onto disk reliably (the idea being that
no-one cares for a swap file).
This bit is only available on BSD systems (and those derived from
them). Therefore one has to use the @code{_BSD_SOURCE} feature select
macro to get the definition (@pxref{Feature Test Macros}).
them). Therefore one has to use the @code{_GNU_SOURCE} feature select
macro, or not define any feature test macros, to get the definition
(@pxref{Feature Test Macros}).
@end table
The actual bit values of the symbols are listed in the table above

View File

@ -106,7 +106,7 @@ The reciprocal of the square root of two (also the square root of 1/2).
@end vtable
These constants come from the Unix98 standard and were also available in
4.4BSD; therefore they are only defined if @code{_BSD_SOURCE} or
4.4BSD; therefore they are only defined if
@code{_XOPEN_SOURCE=500}, or a more general feature select macro, is
defined. The default set of features includes these constants.
@xref{Feature Test Macros}.

View File

@ -2141,16 +2141,9 @@ that handler will cause @code{EINTR}. @xref{Flags for Sigaction}.
Another way to specify the choice is with the @code{siginterrupt}
function. @xref{BSD Handler}.
@c !!! not true now about _BSD_SOURCE
When you don't specify with @code{sigaction} or @code{siginterrupt} what
a particular handler should do, it uses a default choice. The default
choice in @theglibc{} depends on the feature test macros you have
defined. If you define @code{_BSD_SOURCE} or @code{_GNU_SOURCE} before
calling @code{signal}, the default is to resume primitives; otherwise,
the default is to make them fail with @code{EINTR}. (The library
contains alternate versions of the @code{signal} function, and the
feature test macros determine which one you really call.) @xref{Feature
Test Macros}.
choice in @theglibc{} is to make primitives fail with @code{EINTR}.
@cindex EINTR, and restarting interrupted primitives
@cindex restarting interrupted primitives
@cindex interrupting primitives

View File

@ -379,9 +379,8 @@ reflect automatically in the environment. This also requires that
variable is removed from the environment. The same applies of course to
dynamically allocated variables which are freed later.
This function is part of the extended Unix interface. Since it was also
available in old SVID libraries you should define either
@var{_XOPEN_SOURCE} or @var{_SVID_SOURCE} before including any header.
This function is part of the extended Unix interface. You should define
@var{_XOPEN_SOURCE} before including any header.
@end deftypefun

View File

@ -1,5 +1,3 @@
#undef _SVID_SOURCE
#define _SVID_SOURCE
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

View File

@ -21,7 +21,7 @@
#include <features.h>
#if !defined __USE_SVID && !defined __USE_XOPEN && __GNUC__ >= 2
# warning "Files using this header must be compiled with _SVID_SOURCE or _XOPEN_SOURCE"
# warning "Files using this header must be compiled with _GNU_SOURCE or _XOPEN_SOURCE"
#endif
/* Get system dependent definition of `struct ipc_perm' and more. */