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.19-65-gbc688c1


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  bc688c10296cb416c082e44aa8bf881505aec64a (commit)
      from  0e31b18ca280c6056d41d0235b85d6890367ff46 (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=bc688c10296cb416c082e44aa8bf881505aec64a

commit bc688c10296cb416c082e44aa8bf881505aec64a
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Thu Feb 20 17:55:35 2014 +0000

    Fix __ASSUME_SENDMMSG issues (bug 16611).
    
    Similar to the issues for accept4 and recvmmsg, __ASSUME_SENDMMSG is
    also confused about whether it relates to function availability or
    socketcall operation availability, and the conditions for the
    definition are always wrong (sendmmsg appeared in Linux kernel 3.0,
    not 2.6.39); this is now bug 16611.
    
    This patch splits the macro into separate macros like those for
    accept4 and recvmmsg, defining them for appropriate kernel versions.
    
    Tested x86_64, including that disassembly of the installed shared
    libraries is unchanged by this patch.
    
    	[BZ #16611]
    	* sysdeps/unix/sysv/linux/kernel-features.h
    	[__LINUX_KERNEL_VERSION >= 0x030000 && __ASSUME_SOCKETCALL]
    	(__ASSUME_SENDMMSG_SOCKETCALL): Define.
    	[__LINUX_KERNEL_VERSION >= 0x030000 && (__i386__ || __x86_64__ ||
    	__powerpc__ || __sh__ || __sparc__)] (__ASSUME_SENDMMSG_SYSCALL):
    	Likewise.
    	[__i386__ || __powerpc__ || __sh__ || __sparc__]
    	(__ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL): Likewise.
    	[__ASSUME_SENDMMSG_SOCKETCALL || __ASSUME_SENDMMSG_SYSCALL]
    	(__ASSUME_SENDMMSG): Define instead of using previous
    	[__LINUX_KERNEL_VERSION >= 0x020627] condition.
    	* sysdeps/unix/sysv/linux/aarch64/kernel-features.h
    	(__ASSUME_SENDMMSG_SYSCALL): Define.
    	* sysdeps/unix/sysv/linux/alpha/kernel-features.h
    	[__LINUX_KERNEL_VERSION >= 0x030200] (__ASSUME_SENDMMSG_SYSCALL):
    	Likewise.
    	* sysdeps/unix/sysv/linux/arm/kernel-features.h
    	[__LINUX_KERNEL_VERSION >= 0x030000] (__ASSUME_SENDMMSG_SYSCALL):
    	Likewise.
    	* sysdeps/unix/sysv/linux/ia64/kernel-features.h
    	[__LINUX_KERNEL_VERSION >= 0x030000] (__ASSUME_SENDMMSG_SYSCALL):
    	Likewise.
    	* sysdeps/unix/sysv/linux/internal_sendmmsg.S [__ASSUME_SOCKETCALL
    	&& !__ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL &&
    	!__ASSUME_SENDMMSG_SYSCALL] (__NR_sendmmsg): Undefine.
    	[__ASSUME_SENDMMSG]: Change conditionals to
    	[__ASSUME_SENDMMSG_SOCKETCALL].
    	* sysdeps/unix/sysv/linux/microblaze/kernel-features.h
    	[__LINUX_KERNEL_VERSION >= 0x030300] (__ASSUME_SENDMMSG_SYSCALL):
    	Define.
    	* sysdeps/unix/sysv/linux/mips/kernel-features.h
    	[__LINUX_KERNEL_VERSION >= 0x030100] (__ASSUME_SENDMMSG_SYSCALL):
    	Likewise.
    	* sysdeps/unix/sysv/linux/sendmmsg.c [__ASSUME_SOCKETCALL &&
    	!__ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL &&
    	!__ASSUME_SENDMMSG_SYSCALL] (__NR_sendmmsg): Undefine.
    	[!__ASSUME_SENDMMSG]: Change conditional to
    	[!__ASSUME_SENDMMSG_SOCKETCALL].
    	* sysdeps/unix/sysv/linux/tile/kernel-features.h
    	[__LINUX_KERNEL_VERSION >= 0x030000] (__ASSUME_SENDMMSG_SYSCALL):
    	Define.
    
    	* sysdeps/unix/sysv/linux/hppa/kernel-features.h
    	[__LINUX_KERNEL_VERSION >= 0x030100] (__ASSUME_SENDMMSG_SYSCALL):
    	Define.

diff --git a/ChangeLog b/ChangeLog
index 73f614b..4ad0fe6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,48 @@
 2014-02-20  Joseph Myers  <joseph@codesourcery.com>
 
+	[BZ #16611]
+	* sysdeps/unix/sysv/linux/kernel-features.h
+	[__LINUX_KERNEL_VERSION >= 0x030000 && __ASSUME_SOCKETCALL]
+	(__ASSUME_SENDMMSG_SOCKETCALL): Define.
+	[__LINUX_KERNEL_VERSION >= 0x030000 && (__i386__ || __x86_64__ ||
+	__powerpc__ || __sh__ || __sparc__)] (__ASSUME_SENDMMSG_SYSCALL):
+	Likewise.
+	[__i386__ || __powerpc__ || __sh__ || __sparc__]
+	(__ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL): Likewise.
+	[__ASSUME_SENDMMSG_SOCKETCALL || __ASSUME_SENDMMSG_SYSCALL]
+	(__ASSUME_SENDMMSG): Define instead of using previous
+	[__LINUX_KERNEL_VERSION >= 0x020627] condition.
+	* sysdeps/unix/sysv/linux/aarch64/kernel-features.h
+	(__ASSUME_SENDMMSG_SYSCALL): Define.
+	* sysdeps/unix/sysv/linux/alpha/kernel-features.h
+	[__LINUX_KERNEL_VERSION >= 0x030200] (__ASSUME_SENDMMSG_SYSCALL):
+	Likewise.
+	* sysdeps/unix/sysv/linux/arm/kernel-features.h
+	[__LINUX_KERNEL_VERSION >= 0x030000] (__ASSUME_SENDMMSG_SYSCALL):
+	Likewise.
+	* sysdeps/unix/sysv/linux/ia64/kernel-features.h
+	[__LINUX_KERNEL_VERSION >= 0x030000] (__ASSUME_SENDMMSG_SYSCALL):
+	Likewise.
+	* sysdeps/unix/sysv/linux/internal_sendmmsg.S [__ASSUME_SOCKETCALL
+	&& !__ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL &&
+	!__ASSUME_SENDMMSG_SYSCALL] (__NR_sendmmsg): Undefine.
+	[__ASSUME_SENDMMSG]: Change conditionals to
+	[__ASSUME_SENDMMSG_SOCKETCALL].
+	* sysdeps/unix/sysv/linux/microblaze/kernel-features.h
+	[__LINUX_KERNEL_VERSION >= 0x030300] (__ASSUME_SENDMMSG_SYSCALL):
+	Define.
+	* sysdeps/unix/sysv/linux/mips/kernel-features.h
+	[__LINUX_KERNEL_VERSION >= 0x030100] (__ASSUME_SENDMMSG_SYSCALL):
+	Likewise.
+	* sysdeps/unix/sysv/linux/sendmmsg.c [__ASSUME_SOCKETCALL &&
+	!__ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL &&
+	!__ASSUME_SENDMMSG_SYSCALL] (__NR_sendmmsg): Undefine.
+	[!__ASSUME_SENDMMSG]: Change conditional to
+	[!__ASSUME_SENDMMSG_SOCKETCALL].
+	* sysdeps/unix/sysv/linux/tile/kernel-features.h
+	[__LINUX_KERNEL_VERSION >= 0x030000] (__ASSUME_SENDMMSG_SYSCALL):
+	Define.
+
 	[BZ #16610]
 	* sysdeps/unix/sysv/linux/kernel-features.h
 	[__LINUX_KERNEL_VERSION >= 0x020621 && __ASSUME_SOCKETCALL]
diff --git a/NEWS b/NEWS
index 35da791..5a7aa73 100644
--- a/NEWS
+++ b/NEWS
@@ -9,7 +9,7 @@ Version 2.20
 
 * The following bugs are resolved with this release:
 
-  15894, 16447, 16545, 16574, 16609, 16610.
+  15894, 16447, 16545, 16574, 16609, 16610, 16611.
 
 * The am33 port, which had not worked for several years, has been removed
   from ports.
diff --git a/ports/ChangeLog.hppa b/ports/ChangeLog.hppa
index 5829e55..c8eb072 100644
--- a/ports/ChangeLog.hppa
+++ b/ports/ChangeLog.hppa
@@ -1,5 +1,10 @@
 2014-02-20  Joseph Myers  <joseph@codesourcery.com>
 
+	[BZ #16611]
+	* sysdeps/unix/sysv/linux/hppa/kernel-features.h
+	[__LINUX_KERNEL_VERSION >= 0x030100] (__ASSUME_SENDMMSG_SYSCALL):
+	Define.
+
 	[BZ #16610]
 	* sysdeps/unix/sysv/linux/hppa/kernel-features.h
 	[__LINUX_KERNEL_VERSION >= 0x020622] (__ASSUME_RECVMMSG_SYSCALL):
diff --git a/ports/sysdeps/unix/sysv/linux/hppa/kernel-features.h b/ports/sysdeps/unix/sysv/linux/hppa/kernel-features.h
index 75e1999..e869c14 100644
--- a/ports/sysdeps/unix/sysv/linux/hppa/kernel-features.h
+++ b/ports/sysdeps/unix/sysv/linux/hppa/kernel-features.h
@@ -36,4 +36,9 @@
 # define __ASSUME_RECVMMSG_SYSCALL	1
 #endif
 
+/* Support for the sendmmsg syscall was added in 3.1.  */
+#if __LINUX_KERNEL_VERSION >= 0x030100
+# define __ASSUME_SENDMMSG_SYSCALL	1
+#endif
+
 #include_next <kernel-features.h>
diff --git a/sysdeps/unix/sysv/linux/aarch64/kernel-features.h b/sysdeps/unix/sysv/linux/aarch64/kernel-features.h
index 3f9cd04..417f89b 100644
--- a/sysdeps/unix/sysv/linux/aarch64/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/aarch64/kernel-features.h
@@ -31,6 +31,7 @@
 #define __ASSUME_O_CLOEXEC              1
 #define __ASSUME_PIPE2                  1
 #define __ASSUME_RECVMMSG_SYSCALL       1
+#define __ASSUME_SENDMMSG_SYSCALL       1
 #define __ASSUME_SIGNALFD4		1
 #define __ASSUME_SOCK_CLOEXEC           1
 #define __ASSUME_UTIMES                 1
diff --git a/sysdeps/unix/sysv/linux/alpha/kernel-features.h b/sysdeps/unix/sysv/linux/alpha/kernel-features.h
index 6e4a515..e691bb0 100644
--- a/sysdeps/unix/sysv/linux/alpha/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/alpha/kernel-features.h
@@ -47,9 +47,10 @@
 # define __ASSUME_RECVMMSG_SYSCALL       1
 #endif
 
-/* Support for accept4 was added for alpha in 3.2.  */
+/* Support for accept4 and sendmmsg was added for alpha in 3.2.  */
 #if __LINUX_KERNEL_VERSION >= 0x030200
 # define __ASSUME_ACCEPT4_SYSCALL      1
+# define __ASSUME_SENDMMSG_SYSCALL     1
 #endif
 
 #include_next <kernel-features.h>
diff --git a/sysdeps/unix/sysv/linux/arm/kernel-features.h b/sysdeps/unix/sysv/linux/arm/kernel-features.h
index 7b43e36..401343b 100644
--- a/sysdeps/unix/sysv/linux/arm/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/arm/kernel-features.h
@@ -41,6 +41,11 @@
 # define __ASSUME_ACCEPT4_SYSCALL	1
 #endif
 
+/* Support for the sendmmsg syscall was added in 3.0.  */
+#if __LINUX_KERNEL_VERSION >= 0x030000
+# define __ASSUME_SENDMMSG_SYSCALL	1
+#endif
+
 #include_next <kernel-features.h>
 
 /* Support for pselect6, ppoll and epoll_pwait was added in 2.6.32.  */
diff --git a/sysdeps/unix/sysv/linux/ia64/kernel-features.h b/sysdeps/unix/sysv/linux/ia64/kernel-features.h
index b4955d9..dd4de39 100644
--- a/sysdeps/unix/sysv/linux/ia64/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/ia64/kernel-features.h
@@ -52,6 +52,11 @@
 # define __ASSUME_RECVMMSG_SYSCALL	1
 #endif
 
+/* Support for the sendmmsg syscall was added in 3.0.  */
+#if __LINUX_KERNEL_VERSION >= 0x030000
+# define __ASSUME_SENDMMSG_SYSCALL	1
+#endif
+
 /* Support for the accept4 syscall was added in 3.3.  */
 #if __LINUX_KERNEL_VERSION >= 0x030300
 # define __ASSUME_ACCEPT4_SYSCALL	1
diff --git a/sysdeps/unix/sysv/linux/internal_sendmmsg.S b/sysdeps/unix/sysv/linux/internal_sendmmsg.S
index e6681f0..4d903ea 100644
--- a/sysdeps/unix/sysv/linux/internal_sendmmsg.S
+++ b/sysdeps/unix/sysv/linux/internal_sendmmsg.S
@@ -1,15 +1,25 @@
 #include <kernel-features.h>
 #include <sys/syscall.h>
+
+/* Do not use the sendmmsg syscall on socketcall architectures unless
+   it was added at the same time as the socketcall support or can be
+   assumed to be present.  */
+#if defined __ASSUME_SOCKETCALL \
+    && !defined __ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL \
+    && !defined __ASSUME_SENDMMSG_SYSCALL
+# undef __NR_sendmmsg
+#endif
+
 #if !defined __NR_sendmmsg && defined __NR_socketcall
 # define socket	sendmmsg
-# ifndef __ASSUME_SENDMMSG
+# ifndef __ASSUME_SENDMMSG_SOCKETCALL
 #  define __socket __internal_sendmmsg
 #  define NO_WEAK_ALIAS
 # endif
 # define NARGS 4
 # define NEED_CANCELLATION
 # include <socket.S>
-# ifdef __ASSUME_SENDMMSG
+# ifdef __ASSUME_SENDMMSG_SOCKETCALL
 libc_hidden_def (__sendmmsg)
 # endif
 #endif
diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h
index 034257e..555b82c 100644
--- a/sysdeps/unix/sysv/linux/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/kernel-features.h
@@ -271,8 +271,25 @@
 # define __ASSUME_PRLIMIT64	1
 #endif
 
-/* sendmmsg is available in 2.6.39.  */
-#if __LINUX_KERNEL_VERSION >= 0x020627
+/* Support for sendmmsg functionality was added in 3.0.  The macros
+   defined correspond to those for accept4 and recvmmsg.  */
+#if __LINUX_KERNEL_VERSION >= 0x030000 && defined __ASSUME_SOCKETCALL
+# define __ASSUME_SENDMMSG_SOCKETCALL	1
+#endif
+
+/* The sendmmsg syscall was added for i386, x86_64, PowerPC, SH and
+   SPARC in 3.0.  */
+#if __LINUX_KERNEL_VERSION >= 0x030000					\
+    && (defined __i386__ || defined __x86_64__ || defined __powerpc__	\
+	|| defined __sh__ || defined __sparc__)
+# define __ASSUME_SENDMMSG_SYSCALL	1
+#endif
+#if defined __i386__ || defined __powerpc__ || defined __sh__ \
+    || defined __sparc__
+# define __ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL	1
+#endif
+
+#if defined __ASSUME_SENDMMSG_SOCKETCALL || defined __ASSUME_SENDMMSG_SYSCALL
 # define __ASSUME_SENDMMSG	1
 #endif
 
diff --git a/sysdeps/unix/sysv/linux/microblaze/kernel-features.h b/sysdeps/unix/sysv/linux/microblaze/kernel-features.h
index 7266e96..1e9aba5 100644
--- a/sysdeps/unix/sysv/linux/microblaze/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/microblaze/kernel-features.h
@@ -36,4 +36,9 @@
 #endif
 #define __ASSUME_RECVMMSG_SYSCALL_WITH_SOCKETCALL      1
 
+/* Support for the sendmmsg syscall was added in 3.3.  */
+#if __LINUX_KERNEL_VERSION >= 0x030300
+# define __ASSUME_SENDMMSG_SYSCALL       1
+#endif
+
 #include_next <kernel-features.h>
diff --git a/sysdeps/unix/sysv/linux/mips/kernel-features.h b/sysdeps/unix/sysv/linux/mips/kernel-features.h
index 22064d9..52cbf3a 100644
--- a/sysdeps/unix/sysv/linux/mips/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/mips/kernel-features.h
@@ -41,6 +41,11 @@
 # define __ASSUME_RECVMMSG_SYSCALL	1
 #endif
 
+/* Support for the sendmmsg syscall was added in 3.1.  */
+#if __LINUX_KERNEL_VERSION >= 0x030100
+# define __ASSUME_SENDMMSG_SYSCALL	1
+#endif
+
 #include_next <kernel-features.h>
 
 /* The n32 syscall ABI did not have a getdents64 syscall until
diff --git a/sysdeps/unix/sysv/linux/sendmmsg.c b/sysdeps/unix/sysv/linux/sendmmsg.c
index f8494be..3074066 100644
--- a/sysdeps/unix/sysv/linux/sendmmsg.c
+++ b/sysdeps/unix/sysv/linux/sendmmsg.c
@@ -23,6 +23,14 @@
 #include <sys/syscall.h>
 #include <kernel-features.h>
 
+/* Do not use the sendmmsg syscall on socketcall architectures unless
+   it was added at the same time as the socketcall support or can be
+   assumed to be present.  */
+#if defined __ASSUME_SOCKETCALL \
+    && !defined __ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL \
+    && !defined __ASSUME_SENDMMSG_SYSCALL
+# undef __NR_sendmmsg
+#endif
 
 #ifdef __NR_sendmmsg
 int
@@ -42,7 +50,7 @@ __sendmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags)
 libc_hidden_def (__sendmmsg)
 weak_alias (__sendmmsg, sendmmsg)
 #elif defined __NR_socketcall
-# ifndef __ASSUME_SENDMMSG
+# ifndef __ASSUME_SENDMMSG_SOCKETCALL
 extern int __internal_sendmmsg (int fd, struct mmsghdr *vmessages,
 				unsigned int vlen, int flags)
      attribute_hidden;
@@ -86,7 +94,8 @@ __sendmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags)
 libc_hidden_def (__sendmmsg)
 weak_alias (__sendmmsg, sendmmsg)
 # else
-/* When __ASSUME_SENDMMSG sendmmsg is defined in internal_sendmmsg.S.  */
+/* When __ASSUME_SENDMMSG_SOCKETCALL sendmmsg is defined in
+   internal_sendmmsg.S.  */
 # endif
 #else
 # include <socket/sendmmsg.c>
diff --git a/sysdeps/unix/sysv/linux/tile/kernel-features.h b/sysdeps/unix/sysv/linux/tile/kernel-features.h
index b415d8f..bf7bddc 100644
--- a/sysdeps/unix/sysv/linux/tile/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/tile/kernel-features.h
@@ -29,6 +29,11 @@
 #define __ASSUME_DUP3			1
 #define __ASSUME_RECVMMSG_SYSCALL	1
 
+/* Support for the sendmmsg syscall was added in 3.0.  */
+#if __LINUX_KERNEL_VERSION >= 0x030000
+# define __ASSUME_SENDMMSG_SYSCALL	1
+#endif
+
 #include_next <kernel-features.h>
 
 /* Define this if your 32-bit syscall API requires 64-bit register

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

Summary of changes:
 ChangeLog                                          |   43 ++++++++++++++++++++
 NEWS                                               |    2 +-
 ports/ChangeLog.hppa                               |    5 ++
 .../sysdeps/unix/sysv/linux/hppa/kernel-features.h |    5 ++
 sysdeps/unix/sysv/linux/aarch64/kernel-features.h  |    1 +
 sysdeps/unix/sysv/linux/alpha/kernel-features.h    |    3 +-
 sysdeps/unix/sysv/linux/arm/kernel-features.h      |    5 ++
 sysdeps/unix/sysv/linux/ia64/kernel-features.h     |    5 ++
 sysdeps/unix/sysv/linux/internal_sendmmsg.S        |   14 +++++-
 sysdeps/unix/sysv/linux/kernel-features.h          |   21 +++++++++-
 .../unix/sysv/linux/microblaze/kernel-features.h   |    5 ++
 sysdeps/unix/sysv/linux/mips/kernel-features.h     |    5 ++
 sysdeps/unix/sysv/linux/sendmmsg.c                 |   13 +++++-
 sysdeps/unix/sysv/linux/tile/kernel-features.h     |    5 ++
 14 files changed, 124 insertions(+), 8 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]