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.24-28-gdbab657


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  dbab6577c6684c62bd2521c1c29dc25c3cac966f (commit)
       via  63eb8df85a17f7f966d4daa4cf44c8e956636a86 (commit)
       via  cab4d74b01320670f57dcf356ff89256f4d2fc12 (commit)
      from  bf91be88ea90c1ea888d5646270d66363389ce96 (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=dbab6577c6684c62bd2521c1c29dc25c3cac966f

commit dbab6577c6684c62bd2521c1c29dc25c3cac966f
Author: Zack Weinberg <zackw@panix.com>
Date:   Tue May 10 11:07:42 2016 -0400

    Deprecate inclusion of <sys/sysmacros.h> by <sys/types.h>
    
    The macros defined by <sys/sysmacros.h> are not part of POSIX nor XSI, and
    their names frequently collide with user code; see for instance glibc bug
    19239 and Red Hat bug 130601.  <stdlib.h> includes <sys/types.h> under
    _GNU_SOURCE, and C++ code presently cannot avoid being compiled under
    _GNU_SOURCE, exacerbating the problem.
    
    	* NEWS: Inclusion of <sys/sysmacros.h> by <sys/types.h> is deprecated.
    	* misc/sys/sysmacros.h: If __SYSMACROS_DEPRECATED_INCLUSION is defined,
    	define major, minor, and makedev to issue deprecation warnings on use.
    	If __SYSMACROS_DEPRECATED_INCLUSION is *not* defined, suppress
    	previously-activated deprecation warnings for these macros and prevent
    	subsequent inclusions of this header from having any effect.
    	* posix/sys/types.h: Define __SYSMACROS_DEPRECATED_INCLUSION before
    	including <sys/sysmacros.h>, and undefine it again afterward.

diff --git a/ChangeLog b/ChangeLog
index d6a3078..a261ada 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
 2016-08-03  Zack Weinberg  <zackw@panix.com>
 
+	[BZ #19239]
+	* NEWS: Inclusion of <sys/sysmacros.h> by <sys/types.h> is deprecated.
+	* misc/sys/sysmacros.h: If __SYSMACROS_DEPRECATED_INCLUSION is defined,
+	define major, minor, and makedev to issue deprecation warnings on use.
+	If __SYSMACROS_DEPRECATED_INCLUSION is *not* defined, suppress
+	previously-activated deprecation warnings for these macros and prevent
+	subsequent inclusions of this header from having any effect.
+	* posix/sys/types.h: Define __SYSMACROS_DEPRECATED_INCLUSION before
+	including <sys/sysmacros.h>, and undefine it again afterward.
+
+2016-08-03  Zack Weinberg  <zackw@panix.com>
+
 	* sysdeps/generic/sys/sysmacros.h: Delete file.
 	* sysdeps/unix/sysv/linux/makedev.c: Delete file.
 	* sysdeps/unix/sysv/linux/sys/sysmacros.h: Move file ...
diff --git a/NEWS b/NEWS
index 495bde0..25c771d 100644
--- a/NEWS
+++ b/NEWS
@@ -17,6 +17,16 @@ Version 2.25
   from that TS.  Note that most features from that TS are not supported by
   the GNU C Library.
 
+* The inclusion of <sys/sysmacros.h> by <sys/types.h> is deprecated.  This
+  means that in a future release, the macros â??majorâ??, â??minorâ??, and â??makedevâ??
+  will only be available from <sys/sysmacros.h>.
+
+  These macros are not part of POSIX nor XSI, and their names frequently
+  collide with user code; see for instance glibc bug 19239 and Red Hat bug
+  130601.  <stdlib.h> includes <sys/types.h> under _GNU_SOURCE, and C++ code
+  presently cannot avoid being compiled under _GNU_SOURCE, exacerbating the
+  problem.
+
 Security related changes:
 
   [Add security related changes here]
diff --git a/misc/sys/sysmacros.h b/misc/sys/sysmacros.h
index dc2eb83..086e9af 100644
--- a/misc/sys/sysmacros.h
+++ b/misc/sys/sysmacros.h
@@ -16,6 +16,23 @@
    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
 
@@ -23,32 +40,65 @@
 #include <bits/types.h>
 #include <bits/sysmacros.h>
 
+/* The extra "\n " moves gcc's [-Wdeprecated-declarations] annotation
+   onto the next line.  */
+#define __SYSMACROS_DEPRECATION_MSG(symbol)				     \
+  "\n  In the GNU C Library, `" #symbol "' is defined by <sys/sysmacros.h>." \
+  "\n  For historical compatibility, it is currently defined by"	     \
+  "\n  <sys/types.h> as well, but we plan to remove this soon."		     \
+  "\n  To use `" #symbol "', include <sys/sysmacros.h> directly."	     \
+  "\n  If you did not intend to use a system-defined macro `" #symbol "',"   \
+  "\n  you should #undef it after including <sys/types.h>."		     \
+  "\n "
+
 #define __SYSMACROS_DECL_TEMPL(rtype, name, proto)			     \
   extern rtype gnu_dev_##name proto __THROW __attribute_const__;
 
+#define __SYSMACROS_FST_DECL_TEMPL(rtype, name, proto)			     \
+  extern rtype __REDIRECT_NTH (__##name##_from_sys_types, proto,	     \
+			       gnu_dev_##name)				     \
+       __attribute_const__						     \
+       __attribute_deprecated_msg__ (__SYSMACROS_DEPRECATION_MSG (name));
+
 #define __SYSMACROS_IMPL_TEMPL(rtype, name, proto)			     \
   __extension__ __extern_inline __attribute_const__ rtype		     \
   __NTH (gnu_dev_##name proto)
 
+#define __SYSMACROS_FST_IMPL_TEMPL(rtype, name, proto)			     \
+  __extension__ __extern_inline __attribute_const__ rtype		     \
+  __NTH (__##name##_from_sys_types proto)
+
 __BEGIN_DECLS
 
 __SYSMACROS_DECLARE_MAJOR (__SYSMACROS_DECL_TEMPL)
 __SYSMACROS_DECLARE_MINOR (__SYSMACROS_DECL_TEMPL)
 __SYSMACROS_DECLARE_MAKEDEV (__SYSMACROS_DECL_TEMPL)
 
+__SYSMACROS_DECLARE_MAJOR (__SYSMACROS_FST_DECL_TEMPL)
+__SYSMACROS_DECLARE_MINOR (__SYSMACROS_FST_DECL_TEMPL)
+__SYSMACROS_DECLARE_MAKEDEV (__SYSMACROS_FST_DECL_TEMPL)
+
 #ifdef __USE_EXTERN_INLINES
 
 __SYSMACROS_DEFINE_MAJOR (__SYSMACROS_IMPL_TEMPL)
 __SYSMACROS_DEFINE_MINOR (__SYSMACROS_IMPL_TEMPL)
 __SYSMACROS_DEFINE_MAKEDEV (__SYSMACROS_IMPL_TEMPL)
 
+__SYSMACROS_DEFINE_MAJOR (__SYSMACROS_FST_IMPL_TEMPL)
+__SYSMACROS_DEFINE_MINOR (__SYSMACROS_FST_IMPL_TEMPL)
+__SYSMACROS_DEFINE_MAKEDEV (__SYSMACROS_FST_IMPL_TEMPL)
+
 #endif
 
 __END_DECLS
 
+#endif /* _SYS_SYSMACROS_H */
+
 #ifndef __SYSMACROS_NEED_IMPLEMENTATION
 # undef __SYSMACROS_DECL_TEMPL
+# undef __SYSMACROS_FST_DECL_TEMPL
 # undef __SYSMACROS_IMPL_TEMPL
+# undef __SYSMACROS_FST_IMPL_TEMPL
 # undef __SYSMACROS_DECLARE_MAJOR
 # undef __SYSMACROS_DECLARE_MINOR
 # undef __SYSMACROS_DECLARE_MAKEDEV
@@ -57,8 +107,14 @@ __END_DECLS
 # undef __SYSMACROS_DEFINE_MAKEDEV
 #endif
 
-#define major(dev) gnu_dev_major (dev)
-#define minor(dev) gnu_dev_minor (dev)
-#define makedev(maj, min) gnu_dev_makedev (maj, min)
+#ifdef __SYSMACROS_DEPRECATED_INCLUSION
+# define major(dev) __major_from_sys_types (dev)
+# define minor(dev) __minor_from_sys_types (dev)
+# define makedev(maj, min) __makedev_from_sys_types (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
 
 #endif /* sys/sysmacros.h */
diff --git a/posix/sys/types.h b/posix/sys/types.h
index a728567..83dadcd 100644
--- a/posix/sys/types.h
+++ b/posix/sys/types.h
@@ -218,8 +218,14 @@ typedef int register_t __attribute__ ((__mode__ (__word__)));
 /* It also defines `fd_set' and the FD_* macros for `select'.  */
 # include <sys/select.h>
 
-/* BSD defines these symbols, so we follow.  */
+/* 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.  */
 
 

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=63eb8df85a17f7f966d4daa4cf44c8e956636a86

commit 63eb8df85a17f7f966d4daa4cf44c8e956636a86
Author: Zack Weinberg <zackw@panix.com>
Date:   Thu Apr 28 12:29:55 2016 -0400

    Minimize sysdeps code involved in defining major/minor/makedev.
    
    Presently sys/sysmacros.h is entirely defined in sysdeps.  This would
    mean that the deprecation logic coming up in the next patch would have
    to be written twice (in generic/ and unix/sysv/linux/).  To avoid that,
    hoist all but the unavoidably system-dependent logic to misc/, leaving a
    bits/ header behind.  This also promotes the Linux-specific encoding of
    dev_t, which accommodates 32-bit major and minor numbers in a 64-bit dev_t,
    to generic, as glibc's dev_t is always 64 bits wide.
    
    The former Linux implementation used inline functions to avoid evaluating
    arguments more than once.  After this change, all platforms use inline
    functions, which means that three new symbols are added to the generic ABI.
    (These symbols are in the user namespace, which is how they have always
    been on Linux.  They begin with "gnu_dev_", so collisions with user code
    are pretty unlikely.)
    
    New ports henceforth need only provide a bits/sysmacros.h defining
    internal macros __SYSMACROS_{DECLARE,DEFINE}_{MAJOR,MINOR,MAKEDEV}.
    This is only necessary if the kernel encoding is incompatible with
    the now-generic encoding (for instance, it would be necessary for
    FreeBSD).
    
    While I was at it, I added a basic round-trip test for these functions.
    
    	* sysdeps/generic/sys/sysmacros.h: Delete file.
    	* sysdeps/unix/sysv/linux/makedev.c: Delete file.
    	* sysdeps/unix/sysv/linux/sys/sysmacros.h: Move file ...
    	* bits/sysmacros.h: ... here; this encoding is now the generic
    	encoding.  Now defines only the following macros:
    	__SYSMACROS_DECLARE_MAJOR, __SYSMACROS_DEFINE_MAJOR,
    	__SYSMACROS_DECLARE_MINOR, __SYSMACROS_DEFINE_MINOR,
    	__SYSMACROS_DECLARE_MAKEDEV, __SYSMACROS_DEFINE_MAKEDEV.
    
    	* misc/sys/sysmacros.h, misc/makedev.c: New files that use
    	bits/sysmacros.h and the above new macros to generate the
    	public implementations of major, minor, and makedev.
    	* misc/tst-makedev.c: New test.
    	* include/sys/sysmacros.h: New wrapper.
    
    	* misc/Makefile (headers): Add sys/sysmacros.h, bits/sysmacros.h.
    	(routines): Add makedev.
    	(tests): Add tst-makedev.
    	* misc/Versions [GLIBC_2.25]: Add gnu_dev_major, gnu_dev_minor,
    	gnu_dev_makedev.
    	* posix/Makefile (headers): Remove sys/sysmacros.h.
    	* sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Remove makedev.
    
    	* sysdeps/arm/nacl/libc.abilist: Add GLIBC_2.25,
    	gnu_dev_major, gnu_dev_makedev, gnu_dev_minor.
    	* sysdeps/unix/sysv/linux/aarch64/libc.abilist
    	* sysdeps/unix/sysv/linux/alpha/libc.abilist
    	* sysdeps/unix/sysv/linux/arm/libc.abilist
    	* sysdeps/unix/sysv/linux/hppa/libc.abilist
    	* sysdeps/unix/sysv/linux/i386/libc.abilist
    	* sysdeps/unix/sysv/linux/ia64/libc.abilist
    	* sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
    	* sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
    	* sysdeps/unix/sysv/linux/microblaze/libc.abilist
    	* sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
    	* sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
    	* sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
    	* sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
    	* sysdeps/unix/sysv/linux/nios2/libc.abilist
    	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
    	* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
    	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist
    	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist
    	* sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
    	* sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
    	* sysdeps/unix/sysv/linux/sh/libc.abilist
    	* sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
    	* sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
    	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist
    	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist
    	* sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist
    	* sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
    	* sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist:
    	Add GLIBC_2.25.

diff --git a/ChangeLog b/ChangeLog
index ceb28b5..d6a3078 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,60 @@
 2016-08-03  Zack Weinberg  <zackw@panix.com>
 
+	* sysdeps/generic/sys/sysmacros.h: Delete file.
+	* sysdeps/unix/sysv/linux/makedev.c: Delete file.
+	* sysdeps/unix/sysv/linux/sys/sysmacros.h: Move file ...
+	* bits/sysmacros.h: ... here; this encoding is now the generic
+	encoding.  Now defines only the following macros:
+	__SYSMACROS_DECLARE_MAJOR, __SYSMACROS_DEFINE_MAJOR,
+	__SYSMACROS_DECLARE_MINOR, __SYSMACROS_DEFINE_MINOR,
+	__SYSMACROS_DECLARE_MAKEDEV, __SYSMACROS_DEFINE_MAKEDEV.
+
+	* misc/sys/sysmacros.h, misc/makedev.c: New files that use
+	bits/sysmacros.h and the above new macros to generate the
+	public implementations of major, minor, and makedev.
+	* misc/tst-makedev.c: New test.
+	* include/sys/sysmacros.h: New wrapper.
+
+	* misc/Makefile (headers): Add sys/sysmacros.h, bits/sysmacros.h.
+	(routines): Add makedev.
+	(tests): Add tst-makedev.
+	* misc/Versions [GLIBC_2.25]: Add gnu_dev_major, gnu_dev_minor,
+	gnu_dev_makedev.
+	* posix/Makefile (headers): Remove sys/sysmacros.h.
+	* sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Remove makedev.
+
+	* sysdeps/arm/nacl/libc.abilist: Add GLIBC_2.25,
+	gnu_dev_major, gnu_dev_makedev, gnu_dev_minor.
+	* sysdeps/unix/sysv/linux/aarch64/libc.abilist
+	* sysdeps/unix/sysv/linux/alpha/libc.abilist
+	* sysdeps/unix/sysv/linux/arm/libc.abilist
+	* sysdeps/unix/sysv/linux/hppa/libc.abilist
+	* sysdeps/unix/sysv/linux/i386/libc.abilist
+	* sysdeps/unix/sysv/linux/ia64/libc.abilist
+	* sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+	* sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+	* sysdeps/unix/sysv/linux/microblaze/libc.abilist
+	* sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+	* sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+	* sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+	* sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+	* sysdeps/unix/sysv/linux/nios2/libc.abilist
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist
+	* sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+	* sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+	* sysdeps/unix/sysv/linux/sh/libc.abilist
+	* sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+	* sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist
+	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist
+	* sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist
+	* sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+	* sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist:
+	Add GLIBC_2.25.
+
 	* include/features.h (__glibc_clang_prereq): New macro.
 	* misc/sys/cdefs.h (__glibc_clang_has_extension)
 	(__attribute_deprecated_msg__): New macros.
diff --git a/bits/sysmacros.h b/bits/sysmacros.h
new file mode 100644
index 0000000..e2c0bc2
--- /dev/null
+++ b/bits/sysmacros.h
@@ -0,0 +1,74 @@
+/* Definitions of macros to access `dev_t' values.
+   Copyright (C) 1996-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/>.  */
+
+#ifndef _BITS_SYSMACROS_H
+#define _BITS_SYSMACROS_H 1
+
+#ifndef _SYS_SYSMACROS_H
+# error "Never include <bits/sysmacros.h> directly; use <sys/sysmacros.h> instead."
+#endif
+
+/* dev_t in glibc is a 64-bit quantity, with 32-bit major and minor numbers.
+   Our default encoding is MMMM Mmmm mmmM MMmm, where M is a hex digit of
+   the major number and m is a hex digit of the minor number.  This is
+   downward compatible with legacy systems where dev_t is 16 bits wide,
+   encoded as MMmm.  It is also downward compatible with the Linux kernel,
+   which (as of 2016) uses 32-bit dev_t, encoded as mmmM MMmm.
+
+   Systems that use an incompatible encoding for dev_t should override this
+   file in the appropriate sysdeps subdirectory.  */
+
+#define __SYSMACROS_DECLARE_MAJOR(DECL_TEMPL)			\
+  DECL_TEMPL(unsigned int, major, (__dev_t __dev))
+
+#define __SYSMACROS_DEFINE_MAJOR(DECL_TEMPL)			\
+  __SYSMACROS_DECLARE_MAJOR (DECL_TEMPL)			\
+  {								\
+    unsigned int __major;					\
+    __major  = ((__dev & (__dev_t) 0x00000000000fff00u) >>  8); \
+    __major |= ((__dev & (__dev_t) 0xfffff00000000000u) >> 32); \
+    return __major;						\
+  }
+
+#define __SYSMACROS_DECLARE_MINOR(DECL_TEMPL)			\
+  DECL_TEMPL(unsigned int, minor, (__dev_t __dev))
+
+#define __SYSMACROS_DEFINE_MINOR(DECL_TEMPL)			\
+  __SYSMACROS_DECLARE_MINOR (DECL_TEMPL)			\
+  {								\
+    unsigned int __minor;					\
+    __minor  = ((__dev & (__dev_t) 0x00000000000000ffu) >>  0); \
+    __minor |= ((__dev & (__dev_t) 0x00000ffffff00000u) >> 12); \
+    return __minor;						\
+  }
+
+#define __SYSMACROS_DECLARE_MAKEDEV(DECL_TEMPL)			\
+  DECL_TEMPL(__dev_t, makedev, (unsigned int __major, unsigned int __minor))
+
+#define __SYSMACROS_DEFINE_MAKEDEV(DECL_TEMPL)			\
+  __SYSMACROS_DECLARE_MAKEDEV (DECL_TEMPL)			\
+  {								\
+    __dev_t __dev;						\
+    __dev  = (((__dev_t) (__major & 0x00000fffu)) <<  8);	\
+    __dev |= (((__dev_t) (__major & 0xfffff000u)) << 32);	\
+    __dev |= (((__dev_t) (__minor & 0x000000ffu)) <<  0);	\
+    __dev |= (((__dev_t) (__minor & 0xffffff00u)) << 12);	\
+    return __dev;						\
+  }
+
+#endif /* bits/sysmacros.h */
diff --git a/include/sys/sysmacros.h b/include/sys/sysmacros.h
new file mode 100644
index 0000000..87813c5
--- /dev/null
+++ b/include/sys/sysmacros.h
@@ -0,0 +1 @@
+#include <misc/sys/sysmacros.h>
diff --git a/misc/Makefile b/misc/Makefile
index 56e20ce..3d2ebb8 100644
--- a/misc/Makefile
+++ b/misc/Makefile
@@ -34,7 +34,8 @@ headers	:= sys/uio.h bits/uio.h sys/ioctl.h bits/ioctls.h bits/ioctl-types.h \
 	   regexp.h bits/select.h bits/mman.h sys/xattr.h \
 	   syslog.h sys/syslog.h \
 	   bits/syslog.h bits/syslog-ldbl.h bits/syslog-path.h bits/error.h \
-	   bits/select2.h bits/hwcap.h sys/auxv.h
+	   bits/select2.h bits/hwcap.h sys/auxv.h \
+	   sys/sysmacros.h bits/sysmacros.h
 
 routines := brk sbrk sstk ioctl \
 	    readv writev preadv preadv64 pwritev pwritev64 \
@@ -67,7 +68,7 @@ routines := brk sbrk sstk ioctl \
 	    getloadavg getclktck \
 	    fgetxattr flistxattr fremovexattr fsetxattr getxattr \
 	    listxattr lgetxattr llistxattr lremovexattr lsetxattr \
-	    removexattr setxattr getauxval ifunc-impl-list
+	    removexattr setxattr getauxval ifunc-impl-list makedev
 
 generated += tst-error1.mtrace tst-error1-mem.out
 
@@ -78,7 +79,7 @@ gpl2lgpl := error.c error.h
 tests := tst-dirname tst-tsearch tst-fdset tst-efgcvt tst-mntent tst-hsearch \
 	 tst-error1 tst-pselect tst-insremque tst-mntent2 bug-hsearch1 \
 	 tst-mntent-blank-corrupt tst-mntent-blank-passno bug18240 \
-	 tst-preadvwritev tst-preadvwritev64
+	 tst-preadvwritev tst-preadvwritev64 tst-makedev
 ifeq ($(run-built-tests),yes)
 tests-special += $(objpfx)tst-error1-mem.out
 endif
diff --git a/misc/Versions b/misc/Versions
index 671f487..f2c90ff 100644
--- a/misc/Versions
+++ b/misc/Versions
@@ -152,6 +152,9 @@ libc {
   GLIBC_2.23 {
     # SHLIB_COMPAT(GLIBC_2_0, GLIBC_2_23) used in regexp.c
   }
+  GLIBC_2.25 {
+    gnu_dev_major; gnu_dev_minor; gnu_dev_makedev;
+  }
   GLIBC_PRIVATE {
     __madvise;
     __mktemp;
diff --git a/sysdeps/unix/sysv/linux/makedev.c b/misc/makedev.c
similarity index 62%
rename from sysdeps/unix/sysv/linux/makedev.c
rename to misc/makedev.c
index 68c18ca..7303fb6 100644
--- a/sysdeps/unix/sysv/linux/makedev.c
+++ b/misc/makedev.c
@@ -16,25 +16,15 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <endian.h>
-#include <sys/sysmacros.h>
+#include <features.h>
 
-unsigned int
-gnu_dev_major (unsigned long long int dev)
-{
-  return ((dev >> 8) & 0xfff) | ((unsigned int) (dev >> 32) & ~0xfff);
-}
+#undef __USE_EXTERN_INLINES
+#define __SYSMACROS_NEED_IMPLEMENTATION
+#include <sys/sysmacros.h>
 
-unsigned int
-gnu_dev_minor (unsigned long long int dev)
-{
-  return (dev & 0xff) | ((unsigned int) (dev >> 12) & ~0xff);
-}
+#define OUT_OF_LINE_IMPL_TEMPL(rtype, name, proto) \
+  rtype gnu_dev_##name proto
 
-unsigned long long int
-gnu_dev_makedev (unsigned int major, unsigned int minor)
-{
-  return ((minor & 0xff) | ((major & 0xfff) << 8)
-	  | (((unsigned long long int) (minor & ~0xff)) << 12)
-	  | (((unsigned long long int) (major & ~0xfff)) << 32));
-}
+__SYSMACROS_DEFINE_MAJOR(OUT_OF_LINE_IMPL_TEMPL)
+__SYSMACROS_DEFINE_MINOR(OUT_OF_LINE_IMPL_TEMPL)
+__SYSMACROS_DEFINE_MAKEDEV(OUT_OF_LINE_IMPL_TEMPL)
diff --git a/misc/sys/sysmacros.h b/misc/sys/sysmacros.h
new file mode 100644
index 0000000..dc2eb83
--- /dev/null
+++ b/misc/sys/sysmacros.h
@@ -0,0 +1,64 @@
+/* Definitions of macros to access `dev_t' values.
+   Copyright (C) 1996-2015 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/>.  */
+
+#ifndef _SYS_SYSMACROS_H
+#define _SYS_SYSMACROS_H 1
+
+#include <features.h>
+#include <bits/types.h>
+#include <bits/sysmacros.h>
+
+#define __SYSMACROS_DECL_TEMPL(rtype, name, proto)			     \
+  extern rtype gnu_dev_##name proto __THROW __attribute_const__;
+
+#define __SYSMACROS_IMPL_TEMPL(rtype, name, proto)			     \
+  __extension__ __extern_inline __attribute_const__ rtype		     \
+  __NTH (gnu_dev_##name proto)
+
+__BEGIN_DECLS
+
+__SYSMACROS_DECLARE_MAJOR (__SYSMACROS_DECL_TEMPL)
+__SYSMACROS_DECLARE_MINOR (__SYSMACROS_DECL_TEMPL)
+__SYSMACROS_DECLARE_MAKEDEV (__SYSMACROS_DECL_TEMPL)
+
+#ifdef __USE_EXTERN_INLINES
+
+__SYSMACROS_DEFINE_MAJOR (__SYSMACROS_IMPL_TEMPL)
+__SYSMACROS_DEFINE_MINOR (__SYSMACROS_IMPL_TEMPL)
+__SYSMACROS_DEFINE_MAKEDEV (__SYSMACROS_IMPL_TEMPL)
+
+#endif
+
+__END_DECLS
+
+#ifndef __SYSMACROS_NEED_IMPLEMENTATION
+# undef __SYSMACROS_DECL_TEMPL
+# undef __SYSMACROS_IMPL_TEMPL
+# undef __SYSMACROS_DECLARE_MAJOR
+# undef __SYSMACROS_DECLARE_MINOR
+# undef __SYSMACROS_DECLARE_MAKEDEV
+# undef __SYSMACROS_DEFINE_MAJOR
+# undef __SYSMACROS_DEFINE_MINOR
+# undef __SYSMACROS_DEFINE_MAKEDEV
+#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/misc/tst-makedev.c b/misc/tst-makedev.c
new file mode 100644
index 0000000..b330b5a
--- /dev/null
+++ b/misc/tst-makedev.c
@@ -0,0 +1,104 @@
+/* Tests of functions to access `dev_t' values.
+   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/>.  */
+
+#include <sys/types.h>
+#include <sys/sysmacros.h>
+#include <stdio.h>
+#include <inttypes.h>
+
+/* Confirm that makedev (major (d), minor (d)) == d.  */
+static int
+do_test_split_combine (dev_t d1)
+{
+  unsigned int maj = major (d1);
+  unsigned int min = minor (d1);
+  dev_t d2 = makedev (maj, min);
+  if (d1 != d2)
+    {
+      printf ("FAIL: %016" PRIx64 " != %016" PRIx64 " (maj %08x min %08x)\n",
+	      (uint64_t)d2, (uint64_t)d1, maj, min);
+      return 1;
+    }
+  else
+    return 0;
+}
+
+/* Confirm that major (makedev (maj, min)) == maj and
+   minor (makedev (maj, min)) == min.  */
+static int
+do_test_combine_split (unsigned int maj1, unsigned int min1)
+{
+  dev_t d = makedev (maj1, min1);
+  unsigned int maj2 = major (d);
+  unsigned int min2 = minor (d);
+  if (maj1 != maj2 && min1 != min2)
+    {
+      printf ("FAIL: %08x != %08x, %08x != %08x (dev %016" PRIx64 ")\n",
+	      maj2, maj1, min2, min1, (uint64_t)d);
+      return 1;
+    }
+  else if (maj1 != maj2)
+    {
+      printf ("FAIL: %08x != %08x, %08x == %08x (dev %016" PRIx64 ")\n",
+	      maj2, maj1, min2, min1, (uint64_t)d);
+      return 1;
+    }
+  else if (min1 != min2)
+    {
+      printf ("FAIL: %08x == %08x, %08x != %08x (dev %016" PRIx64 ")\n",
+	      maj2, maj1, min2, min1, (uint64_t)d);
+      return 1;
+    }
+  else
+    return 0;
+}
+
+static int
+do_test (void)
+{
+  dev_t d;
+  unsigned int maj, min;
+  int status = 0;
+
+  /* Test the traditional range (16-bit dev_t, 8-bit each maj/min)
+     exhaustively.  */
+  for (d = 0; d <= 0xFFFF; d++)
+    status |= do_test_split_combine (d);
+
+  for (maj = 0; maj <= 0xFF; maj++)
+    for (min = 0; min <= 0xFF; min++)
+      status |= do_test_combine_split (maj, min);
+
+  /* Test glibc's expanded range (64-bit dev_t, 32-bit each maj/min).
+     Exhaustive testing would take much too long, instead we shift a
+     pair of 1-bits over each range.  */
+  {
+    unsigned int a, b;
+    for (a = 0; a <= 63; a++)
+      do_test_split_combine (((dev_t) 0x03) << a);
+
+    for (a = 0; a < 31; a++)
+      for (b = 0; b <= 31; b++)
+	do_test_combine_split (0x03u << a, 0x03u << b);
+  }
+
+  return status;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/posix/Makefile b/posix/Makefile
index 5b0e298..3a7719e 100644
--- a/posix/Makefile
+++ b/posix/Makefile
@@ -29,7 +29,7 @@ headers	:= sys/utsname.h sys/times.h sys/wait.h sys/types.h unistd.h	      \
 	   bits/local_lim.h tar.h bits/utsname.h bits/confname.h	      \
 	   bits/waitflags.h bits/waitstatus.h sys/unistd.h sched.h	      \
 	   bits/sched.h re_comp.h wait.h bits/environments.h cpio.h	      \
-	   sys/sysmacros.h spawn.h bits/unistd.h
+	   spawn.h bits/unistd.h
 
 routines :=								      \
 	uname								      \
diff --git a/sysdeps/arm/nacl/libc.abilist b/sysdeps/arm/nacl/libc.abilist
index 2f7751d..4d3b0b9 100644
--- a/sysdeps/arm/nacl/libc.abilist
+++ b/sysdeps/arm/nacl/libc.abilist
@@ -1840,4 +1840,9 @@ GLIBC_2.23 fts64_close F
 GLIBC_2.23 fts64_open F
 GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
+GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 gnu_dev_major F
+GLIBC_2.25 gnu_dev_makedev F
+GLIBC_2.25 gnu_dev_minor F
diff --git a/sysdeps/generic/sys/sysmacros.h b/sysdeps/generic/sys/sysmacros.h
deleted file mode 100644
index 4cc5961..0000000
--- a/sysdeps/generic/sys/sysmacros.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Definitions of macros to access `dev_t' values.
-   Copyright (C) 1996-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/>.  */
-
-#ifndef _SYS_SYSMACROS_H
-#define _SYS_SYSMACROS_H	1
-
-/* For compatibility we provide alternative names.
-
-   The problem here is that compilers other than GCC probably don't
-   have the `long long' type and so `dev_t' is actually an array.  */
-#define major(dev) ((int)(((unsigned int) (dev) >> 8) & 0xff))
-#define minor(dev) ((int)((dev) & 0xff))
-#define makedev(major, minor) (((major) << 8) | (minor))
-
-#endif /* sys/sysmacros.h */
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index 35e1ed4..f0b052d 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -15,7 +15,7 @@ ifeq ($(subdir),misc)
 include $(firstword $(wildcard $(sysdirs:=/sysctl.mk)))
 
 sysdep_routines += clone llseek umount umount2 readahead \
-		   setfsuid setfsgid makedev epoll_pwait signalfd \
+		   setfsuid setfsgid epoll_pwait signalfd \
 		   eventfd eventfd_read eventfd_write prlimit \
 		   personality
 
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 9cdb623..2c2f49e 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -2089,3 +2089,4 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index f3f3c70..8afba47 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2000,6 +2000,7 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
 GLIBC_2.3 GLIBC_2.3 A
 GLIBC_2.3 __ctype_b_loc F
 GLIBC_2.3 __ctype_tolower_loc F
diff --git a/sysdeps/unix/sysv/linux/arm/libc.abilist b/sysdeps/unix/sysv/linux/arm/libc.abilist
index a93803d..de3bdf4 100644
--- a/sysdeps/unix/sysv/linux/arm/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/libc.abilist
@@ -90,6 +90,7 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
 GLIBC_2.4 GLIBC_2.4 A
 GLIBC_2.4 _Exit F
 GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 58ed133..3261b93 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -1854,6 +1854,7 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
 GLIBC_2.3 GLIBC_2.3 A
 GLIBC_2.3 __ctype_b_loc F
 GLIBC_2.3 __ctype_tolower_loc F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 61cbae0..6465a55 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2012,6 +2012,7 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
 GLIBC_2.3 GLIBC_2.3 A
 GLIBC_2.3 __ctype_b_loc F
 GLIBC_2.3 __ctype_tolower_loc F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index d40d264..4536271 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -1876,6 +1876,7 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
 GLIBC_2.3 GLIBC_2.3 A
 GLIBC_2.3 __ctype_b_loc F
 GLIBC_2.3 __ctype_tolower_loc F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 64432ae..287d7a5 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -91,6 +91,7 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
 GLIBC_2.4 GLIBC_2.4 A
 GLIBC_2.4 _Exit F
 GLIBC_2.4 _IO_2_1_stderr_ D 0x98
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 8086c38..c9229fa 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -1968,6 +1968,7 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
 GLIBC_2.3 GLIBC_2.3 A
 GLIBC_2.3 __ctype_b_loc F
 GLIBC_2.3 __ctype_tolower_loc F
diff --git a/sysdeps/unix/sysv/linux/microblaze/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/libc.abilist
index 8c4c3bb..0409791 100644
--- a/sysdeps/unix/sysv/linux/microblaze/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/libc.abilist
@@ -2089,3 +2089,4 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index db014ed..f31653e 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -1943,6 +1943,7 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
 GLIBC_2.3 GLIBC_2.3 A
 GLIBC_2.3 __ctype_b_loc F
 GLIBC_2.3 __ctype_tolower_loc F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 33ac881..a56bd99 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -1941,6 +1941,7 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
 GLIBC_2.3 GLIBC_2.3 A
 GLIBC_2.3 __ctype_b_loc F
 GLIBC_2.3 __ctype_tolower_loc F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index b8b2c0e..44552df 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -1939,6 +1939,7 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
 GLIBC_2.3 GLIBC_2.3 A
 GLIBC_2.3 __ctype_b_loc F
 GLIBC_2.3 __ctype_tolower_loc F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 0741301..8d2a09d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -1934,6 +1934,7 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
 GLIBC_2.3 GLIBC_2.3 A
 GLIBC_2.3 __ctype_b_loc F
 GLIBC_2.3 __ctype_tolower_loc F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index fa04825..0443b92 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2130,3 +2130,4 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 3d633c0..ba9a29a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -1972,6 +1972,7 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
 GLIBC_2.3 GLIBC_2.3 A
 GLIBC_2.3 __ctype_b_loc F
 GLIBC_2.3 __ctype_tolower_loc F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index a6b164b..f19534c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -1977,6 +1977,7 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
 GLIBC_2.3 GLIBC_2.3 A
 GLIBC_2.3 __ctype_b_loc F
 GLIBC_2.3 __ctype_tolower_loc F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist
index 7200b76..f8de1ab 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist
@@ -2177,3 +2177,4 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist
index de62ecb..6819133 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist
@@ -91,6 +91,7 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
 GLIBC_2.3 GLIBC_2.3 A
 GLIBC_2.3 _Exit F
 GLIBC_2.3 _IO_2_1_stderr_ D 0xe0
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 8da0bc0..4cd5d85 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -1972,6 +1972,7 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
 GLIBC_2.3 GLIBC_2.3 A
 GLIBC_2.3 __ctype_b_loc F
 GLIBC_2.3 __ctype_tolower_loc F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 59066a9..8cdb9df 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -1873,6 +1873,7 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
 GLIBC_2.3 GLIBC_2.3 A
 GLIBC_2.3 __ctype_b_loc F
 GLIBC_2.3 __ctype_tolower_loc F
diff --git a/sysdeps/unix/sysv/linux/sh/libc.abilist b/sysdeps/unix/sysv/linux/sh/libc.abilist
index 01ca9e6..69791b4 100644
--- a/sysdeps/unix/sysv/linux/sh/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/libc.abilist
@@ -1858,6 +1858,7 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
 GLIBC_2.3 GLIBC_2.3 A
 GLIBC_2.3 __ctype_b_loc F
 GLIBC_2.3 __ctype_tolower_loc F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 245c1c6..fce58a8 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -1964,6 +1964,7 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
 GLIBC_2.3 GLIBC_2.3 A
 GLIBC_2.3 __ctype_b_loc F
 GLIBC_2.3 __ctype_tolower_loc F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 4478d13..16ce739 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -1902,6 +1902,7 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
 GLIBC_2.3 GLIBC_2.3 A
 GLIBC_2.3 __ctype_b_loc F
 GLIBC_2.3 __ctype_tolower_loc F
diff --git a/sysdeps/unix/sysv/linux/sys/sysmacros.h b/sysdeps/unix/sysv/linux/sys/sysmacros.h
deleted file mode 100644
index 4c4a697..0000000
--- a/sysdeps/unix/sysv/linux/sys/sysmacros.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* Definitions of macros to access `dev_t' values.
-   Copyright (C) 1996-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/>.  */
-
-#ifndef _SYS_SYSMACROS_H
-#define _SYS_SYSMACROS_H	1
-
-#include <features.h>
-
-__BEGIN_DECLS
-
-__extension__
-extern unsigned int gnu_dev_major (unsigned long long int __dev)
-     __THROW __attribute_const__;
-__extension__
-extern unsigned int gnu_dev_minor (unsigned long long int __dev)
-     __THROW __attribute_const__;
-__extension__
-extern unsigned long long int gnu_dev_makedev (unsigned int __major,
-					       unsigned int __minor)
-     __THROW __attribute_const__;
-
-#ifdef __USE_EXTERN_INLINES
-__extension__ __extern_inline __attribute_const__ unsigned int
-__NTH (gnu_dev_major (unsigned long long int __dev))
-{
-  return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
-}
-
-__extension__ __extern_inline __attribute_const__ unsigned int
-__NTH (gnu_dev_minor (unsigned long long int __dev))
-{
-  return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
-}
-
-__extension__ __extern_inline __attribute_const__ unsigned long long int
-__NTH (gnu_dev_makedev (unsigned int __major, unsigned int __minor))
-{
-  return ((__minor & 0xff) | ((__major & 0xfff) << 8)
-	  | (((unsigned long long int) (__minor & ~0xff)) << 12)
-	  | (((unsigned long long int) (__major & ~0xfff)) << 32));
-}
-#endif
-__END_DECLS
-
-/* Access the functions with their traditional names.  */
-#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/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist
index c1a2613..f99c298 100644
--- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist
@@ -2096,3 +2096,4 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist
index 35fbf8a..c601ab0 100644
--- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist
@@ -2096,3 +2096,4 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist
index c1a2613..f99c298 100644
--- a/sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist
@@ -2096,3 +2096,4 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index c1054ce..8e6fa57 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -1853,6 +1853,7 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A
 GLIBC_2.3 GLIBC_2.3 A
 GLIBC_2.3 __ctype_b_loc F
 GLIBC_2.3 __ctype_tolower_loc F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 2fd6d60..1e12f48 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2096,3 +2096,4 @@ GLIBC_2.23 fts64_read F
 GLIBC_2.23 fts64_set F
 GLIBC_2.24 GLIBC_2.24 A
 GLIBC_2.24 quick_exit F
+GLIBC_2.25 GLIBC_2.25 A

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

commit cab4d74b01320670f57dcf356ff89256f4d2fc12
Author: Zack Weinberg <zackw@panix.com>
Date:   Thu Apr 28 11:07:58 2016 -0400

    Add utility macros for clang detection, and deprecation with messages.
    
    There are three new macros added to features.h and sys/cdefs.h:
    
     * __glibc_clang_prereq: just like __GNUC_PREREQ, but for clang.
     * __glibc_clang_has_extension: wraps clang's intrinsic __has_extension.
       Writing "#if defined __clang__ && __has_extension (...)" doesn't work,
       because compilers other than clang will object to the unknown macro
       __has_extension even though they don't need to evaluate it.
       Instead, write "#if __glibc_clang_has_extension (...)".
    
     * __attribute_deprecated_msg__(msg): like __attribute_deprecated__, but
       if possible, prints a message.
    
    The first two are used to define the third.  The third will be used
    in subsequent patches.
    
    	* include/features.h (__glibc_clang_prereq): New macro.
    	* misc/sys/cdefs.h (__glibc_clang_has_extension)
    	(__attribute_deprecated_msg__): New macros.

diff --git a/ChangeLog b/ChangeLog
index bd751f2..ceb28b5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2016-08-03  Zack Weinberg  <zackw@panix.com>
+
+	* include/features.h (__glibc_clang_prereq): New macro.
+	* misc/sys/cdefs.h (__glibc_clang_has_extension)
+	(__attribute_deprecated_msg__): New macros.
+
 2016-08-03  Joseph Myers  <joseph@codesourcery.com>
 
 	* bits/libc-header-start.h (__GLIBC_USE_IEC_60559_BFP_EXT): New
diff --git a/include/features.h b/include/features.h
index f2cd148..554c5c8 100644
--- a/include/features.h
+++ b/include/features.h
@@ -138,13 +138,13 @@
 # define __KERNEL_STRICT_NAMES
 #endif
 
-/* Convenience macros to test the versions of glibc and gcc.
-   Use them like this:
+/* Convenience macro to test the version of gcc.
+   Use like this:
    #if __GNUC_PREREQ (2,8)
    ... code requiring gcc 2.8 or later ...
    #endif
-   Note - they won't work for gcc1 or glibc1, since the _MINOR macros
-   were not defined then.  */
+   Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
+   added in 2.0.  */
 #if defined __GNUC__ && defined __GNUC_MINOR__
 # define __GNUC_PREREQ(maj, min) \
 	((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
@@ -152,6 +152,17 @@
 # define __GNUC_PREREQ(maj, min) 0
 #endif
 
+/* Similarly for clang.  Features added to GCC after version 4.2 may
+   or may not also be available in clang, and clang's definitions of
+   __GNUC(_MINOR)__ are fixed at 4 and 2 respectively.  Not all such
+   features can be queried via __has_extension/__has_feature.  */
+#if defined __clang_major__ && defined __clang_minor__
+# define __glibc_clang_prereq(maj, min) \
+  ((__clang_major__ << 16) + __clang_minor__ >= ((maj) << 16) + (min))
+#else
+# define __glibc_clang_prereq(maj, min) 0
+#endif
+
 /* Whether to use feature set F.  */
 #define __GLIBC_USE(F)	__GLIBC_USE_ ## F
 
diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h
index a3c2429..6e9b840 100644
--- a/misc/sys/cdefs.h
+++ b/misc/sys/cdefs.h
@@ -77,6 +77,15 @@
 
 #endif	/* GCC.  */
 
+/* Compilers that are not clang may object to
+       #if defined __clang__ && __has_extension(...)
+   even though they do not need to evaluate the right-hand side of the &&.  */
+#if defined __clang__ && defined __has_extension
+# define __glibc_clang_has_extension(ext) __has_extension (ext)
+#else
+# define __glibc_clang_has_extension(ext) 0
+#endif
+
 /* These two macros are not used in glibc anymore.  They are kept here
    only because some other projects expect the macros to be defined.  */
 #define __P(args)	args
@@ -249,13 +258,24 @@
 # define __attribute_noinline__ /* Ignore */
 #endif
 
-/* gcc allows marking deprecated functions.  */
+/* Since version 3.2, gcc allows marking deprecated functions.  */
 #if __GNUC_PREREQ (3,2)
 # define __attribute_deprecated__ __attribute__ ((__deprecated__))
 #else
 # define __attribute_deprecated__ /* Ignore */
 #endif
 
+/* Since version 4.5, gcc also allows one to specify the message printed
+   when a deprecated function is used.  clang claims to be gcc 4.2, but
+   may also support this feature.  */
+#if __GNUC_PREREQ (4,5) || \
+    __glibc_clang_has_extension (__attribute_deprecated_with_message__)
+# define __attribute_deprecated_msg__(msg) \
+	 __attribute__ ((__deprecated__ (msg)))
+#else
+# define __attribute_deprecated_msg__(msg) __attribute_deprecated__
+#endif
+
 /* At some point during the gcc 2.8 development the `format_arg' attribute
    for functions was introduced.  We don't want to use it unconditionally
    (although this would be possible) since it generates warnings.

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

Summary of changes:
 ChangeLog                                          |   73 ++++++++++++
 NEWS                                               |   10 ++
 bits/sysmacros.h                                   |   74 ++++++++++++
 include/features.h                                 |   19 +++-
 include/sys/sysmacros.h                            |    1 +
 misc/Makefile                                      |    7 +-
 misc/Versions                                      |    3 +
 misc/makedev.c                                     |   30 +++++
 misc/sys/cdefs.h                                   |   22 ++++-
 misc/sys/sysmacros.h                               |  120 ++++++++++++++++++++
 misc/tst-makedev.c                                 |  104 +++++++++++++++++
 posix/Makefile                                     |    2 +-
 posix/sys/types.h                                  |    8 +-
 sysdeps/arm/nacl/libc.abilist                      |    5 +
 sysdeps/generic/sys/sysmacros.h                    |   30 -----
 sysdeps/unix/sysv/linux/Makefile                   |    2 +-
 sysdeps/unix/sysv/linux/aarch64/libc.abilist       |    1 +
 sysdeps/unix/sysv/linux/alpha/libc.abilist         |    1 +
 sysdeps/unix/sysv/linux/arm/libc.abilist           |    1 +
 sysdeps/unix/sysv/linux/hppa/libc.abilist          |    1 +
 sysdeps/unix/sysv/linux/i386/libc.abilist          |    1 +
 sysdeps/unix/sysv/linux/ia64/libc.abilist          |    1 +
 sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist |    1 +
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist   |    1 +
 sysdeps/unix/sysv/linux/makedev.c                  |   40 -------
 sysdeps/unix/sysv/linux/microblaze/libc.abilist    |    1 +
 .../unix/sysv/linux/mips/mips32/fpu/libc.abilist   |    1 +
 .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist |    1 +
 .../unix/sysv/linux/mips/mips64/n32/libc.abilist   |    1 +
 .../unix/sysv/linux/mips/mips64/n64/libc.abilist   |    1 +
 sysdeps/unix/sysv/linux/nios2/libc.abilist         |    1 +
 .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist  |    1 +
 .../linux/powerpc/powerpc32/nofpu/libc.abilist     |    1 +
 .../sysv/linux/powerpc/powerpc64/libc-le.abilist   |    1 +
 .../unix/sysv/linux/powerpc/powerpc64/libc.abilist |    1 +
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist  |    1 +
 sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist  |    1 +
 sysdeps/unix/sysv/linux/sh/libc.abilist            |    1 +
 sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist |    1 +
 sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist |    1 +
 sysdeps/unix/sysv/linux/sys/sysmacros.h            |   65 -----------
 .../sysv/linux/tile/tilegx/tilegx32/libc.abilist   |    1 +
 .../sysv/linux/tile/tilegx/tilegx64/libc.abilist   |    1 +
 sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist  |    1 +
 sysdeps/unix/sysv/linux/x86_64/64/libc.abilist     |    1 +
 sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist    |    1 +
 46 files changed, 497 insertions(+), 146 deletions(-)
 create mode 100644 bits/sysmacros.h
 create mode 100644 include/sys/sysmacros.h
 create mode 100644 misc/makedev.c
 create mode 100644 misc/sys/sysmacros.h
 create mode 100644 misc/tst-makedev.c
 delete mode 100644 sysdeps/generic/sys/sysmacros.h
 delete mode 100644 sysdeps/unix/sysv/linux/makedev.c
 delete mode 100644 sysdeps/unix/sysv/linux/sys/sysmacros.h


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]