[BZ #19239] Don't include sys/sysmacros.h from sys/types.h.

This completes the deprecation and removal of this inclusion, which
was begun in the 2.25 release.

	* posix/sys/types.h: Don't include sys/sysmacros.h.
	* misc/sys/sysmacros.h: Remove the conditional deprecation
	warnings for the macros defined by this header.
This commit is contained in:
Zack Weinberg 2018-02-07 15:45:58 -05:00
parent de800d8305
commit e16deca62e
4 changed files with 21 additions and 58 deletions

View File

@ -1,3 +1,10 @@
2018-02-12 Zack Weinberg <zackw@panix.com>
[BZ #19239]
* posix/sys/types.h: Don't include sys/sysmacros.h.
* misc/sys/sysmacros.h: Remove the conditional deprecation
warnings for the macros defined by this header.
2018-02-12 Szabolcs Nagy <szabolcs.nagy@arm.com>
* manual/probes.texi: Remove slowexp probes.

11
NEWS
View File

@ -28,6 +28,17 @@ Deprecated and removed features, and other changes affecting compatibility:
investigate using (f)getc_unlocked and (f)putc_unlocked, and, if
necessary, flockfile and funlockfile.
* The macros 'major', 'minor', and 'makedev' are now only available from
the header <sys/sysmacros.h>; not from <sys/types.h> or various other
headers that happen to include <sys/types.h>. These macros are rarely
used, not part of POSIX nor XSI, and their names frequently collide with
user code; see https://sourceware.org/bugzilla/show_bug.cgi?id=19239 for
further explanation.
<sys/sysmacros.h> is a GNU extension. Portable programs that require
these macros should first include <sys/types.h>, and then include
<sys/sysmacros.h> if __GNU_LIBRARY__ is defined.
Changes to build and runtime requirements:
[Add changes to build and runtime requirements here]

View File

@ -16,23 +16,6 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#ifndef _SYS_SYSMACROS_H_OUTER
#ifndef __SYSMACROS_DEPRECATED_INCLUSION
# define _SYS_SYSMACROS_H_OUTER 1
#endif
/* If <sys/sysmacros.h> is included after <sys/types.h>, these macros
will already be defined, and we need to redefine them without the
deprecation warnings. (If they are included in the opposite order,
the outer #ifndef will suppress this entire file and the macros
will be usable without warnings.) */
#undef major
#undef minor
#undef makedev
/* This is the macro that must be defined to satisfy the misuse check
in bits/sysmacros.h. */
#ifndef _SYS_SYSMACROS_H
#define _SYS_SYSMACROS_H 1
@ -40,27 +23,6 @@
#include <bits/types.h>
#include <bits/sysmacros.h>
/* Caution: The text of this deprecation message is unquoted, so that
#symbol can be substituted. (It is converted to a string by
__SYSMACROS_DM1.) This means the message must be a sequence of
complete pp-tokens; in particular, English contractions (it's,
can't) cannot be used.
The message has been manually word-wrapped to fit in 80 columns
when output by GCC 5 and 6. The first line is shorter to leave
some room for the "foo.c:23: warning:" annotation. */
#define __SYSMACROS_DM(symbol) __SYSMACROS_DM1 \
(In the GNU C Library, #symbol is defined\n\
by <sys/sysmacros.h>. For historical compatibility, it is\n\
currently defined by <sys/types.h> as well, but we plan to\n\
remove this soon. To use #symbol, include <sys/sysmacros.h>\n\
directly. If you did not intend to use a system-defined macro\n\
#symbol, you should undefine it after including <sys/types.h>.)
/* This macro is variadic because the deprecation message above
contains commas. */
#define __SYSMACROS_DM1(...) __glibc_macro_warning (#__VA_ARGS__)
#define __SYSMACROS_DECL_TEMPL(rtype, name, proto) \
extern rtype gnu_dev_##name proto __THROW __attribute_const__;
@ -84,8 +46,6 @@ __SYSMACROS_DEFINE_MAKEDEV (__SYSMACROS_IMPL_TEMPL)
__END_DECLS
#endif /* _SYS_SYSMACROS_H */
#ifndef __SYSMACROS_NEED_IMPLEMENTATION
# undef __SYSMACROS_DECL_TEMPL
# undef __SYSMACROS_IMPL_TEMPL
@ -97,14 +57,8 @@ __END_DECLS
# undef __SYSMACROS_DEFINE_MAKEDEV
#endif
#ifdef __SYSMACROS_DEPRECATED_INCLUSION
# define major(dev) __SYSMACROS_DM (major) gnu_dev_major (dev)
# define minor(dev) __SYSMACROS_DM (minor) gnu_dev_minor (dev)
# define makedev(maj, min) __SYSMACROS_DM (makedev) gnu_dev_makedev (maj, min)
#else
# define major(dev) gnu_dev_major (dev)
# define minor(dev) gnu_dev_minor (dev)
# define makedev(maj, min) gnu_dev_makedev (maj, min)
#endif
#define major(dev) gnu_dev_major (dev)
#define minor(dev) gnu_dev_minor (dev)
#define makedev(maj, min) gnu_dev_makedev (maj, min)
#endif /* sys/sysmacros.h */

View File

@ -194,15 +194,6 @@ typedef int register_t __attribute__ ((__mode__ (__word__)));
/* It also defines `fd_set' and the FD_* macros for `select'. */
# include <sys/select.h>
/* BSD defines `major', `minor', and `makedev' in this header.
However, these symbols are likely to collide with user code, so we are
going to stop defining them here in an upcoming release. Code that needs
these macros should include <sys/sysmacros.h> directly. Code that does
not need these macros should #undef them after including this header. */
# define __SYSMACROS_DEPRECATED_INCLUSION
# include <sys/sysmacros.h>
# undef __SYSMACROS_DEPRECATED_INCLUSION
#endif /* Use misc. */