This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.27.9000-65-ge16deca


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  e16deca62e16f645213dffd4ecd1153c37765f17 (commit)
      from  de800d83059dbedb7d151580f0a3bdc9eaf37340 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=e16deca62e16f645213dffd4ecd1153c37765f17

commit e16deca62e16f645213dffd4ecd1153c37765f17
Author: Zack Weinberg <zackw@panix.com>
Date:   Wed Feb 7 15:45:58 2018 -0500

    [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.

diff --git a/ChangeLog b/ChangeLog
index a6bbee5..4d78df2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/NEWS b/NEWS
index 5678031..60dd2f7 100644
--- a/NEWS
+++ b/NEWS
@@ -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]
diff --git a/misc/sys/sysmacros.h b/misc/sys/sysmacros.h
index ccc15e5..699e038 100644
--- a/misc/sys/sysmacros.h
+++ b/misc/sys/sysmacros.h
@@ -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 */
diff --git a/posix/sys/types.h b/posix/sys/types.h
index e8d51a1..db524d6 100644
--- a/posix/sys/types.h
+++ b/posix/sys/types.h
@@ -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.  */
 
 

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog            |    7 ++++++
 NEWS                 |   11 ++++++++++
 misc/sys/sysmacros.h |   52 ++-----------------------------------------------
 posix/sys/types.h    |    9 --------
 4 files changed, 21 insertions(+), 58 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]