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.28.9000-249-gdaea71c


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  daea71c2e4234e8c7ed78ce3d980b25f63744a14 (commit)
      from  8e3c00db16fcedea0ea47d93c2acb6d7d5ba9164 (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=daea71c2e4234e8c7ed78ce3d980b25f63744a14

commit daea71c2e4234e8c7ed78ce3d980b25f63744a14
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Thu Nov 1 16:30:15 2018 +0000

    Update and correct SPARC configuration for supported socket syscalls (bug 23848).
    
    Looking at kernel-features.h files, I saw that SPARC was missing full
    information on when it gained separate socket syscalls.
    
    This patch adds such information to the SPARC kernel-features.h.  It
    also corrects what appear to be bugs in the existing code (that would
    cause syscalls to be assumed to be present when not actually present).
    Various __ASSUME_* macros, defined by default, were not undefined for
    32-bit despite those syscalls only being added for 32-bit in Linux
    4.4.  Some syscalls were used in the SPARC64 syscalls.list but only
    added in 4.4; this was harmless before the __NR_* macros were defined
    at all, but once the macros were defined it means a build with
    post-4.4 headers would assume the syscalls to be present regardless of
    --enable-kernel version.  Then, various __ASSUME_* macros were
    previously not defined in cases where they could be defined (this part
    of the patch is just an optimization, not a bug fix).
    
    Note the observation in a comment in the patch that even the latest
    Linux kernel for SPARC does not have getpeername and getsockname
    syscalls in the compat syscall table for 32-bit binaries on 64-bit
    kernels (so glibc can't assume those syscalls to be present for 32-bit
    at all, although the 32-bit syscall table gained them in 4.4).
    
    Tested (compilation only) for SPARC with build-many-glibcs.py.
    
    	[BZ #23848]
    	* sysdeps/unix/sysv/linux/sparc/kernel-features.h [!__arch64__ &&
    	__LINUX_KERNEL_VERSION < 0x040400] (__ASSUME_SENDMSG_SYSCALL):
    	Undefine.
    	[!__arch64__ && __LINUX_KERNEL_VERSION < 0x040400]
    	(__ASSUME_RECVMSG_SYSCALL): Likewise.
    	[!__arch64__ && __LINUX_KERNEL_VERSION < 0x040400]
    	(__ASSUME_SENDTO_SYSCALL): Likewise.
    	[!__arch64__ && __LINUX_KERNEL_VERSION < 0x040400]
    	(__ASSUME_ACCEPT_SYSCALL): Undefine under this condition, not just
    	[!__arch64__].
    	[!__arch64__ && __LINUX_KERNEL_VERSION < 0x040400]
    	(__ASSUME_CONNECT_SYSCALL): Likewise.
    	[!__arch64__ && __LINUX_KERNEL_VERSION < 0x040400]
    	(__ASSUME_RECVFROM_SYSCALL): Likewise.
    	[__LINUX_KERNEL_VERSION >= 0x040400] (__ASSUME_BIND_SYSCALL):
    	Define.
    	[__LINUX_KERNEL_VERSION >= 0x040400] (__ASSUME_LISTEN_SYSCALL):
    	Likewise.
    	[__LINUX_KERNEL_VERSION >= 0x040400]
    	(__ASSUME_SETSOCKOPT_SYSCALL): Likewise.
    	* sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list (bind):
    	Remove.
    	(listen): Likewise.
    	(setsockopt): Likewise.

diff --git a/ChangeLog b/ChangeLog
index 67abf14..96f6ce5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,31 @@
+2018-11-01  Joseph Myers  <joseph@codesourcery.com>
+
+	[BZ #23848]
+	* sysdeps/unix/sysv/linux/sparc/kernel-features.h [!__arch64__ &&
+	__LINUX_KERNEL_VERSION < 0x040400] (__ASSUME_SENDMSG_SYSCALL):
+	Undefine.
+	[!__arch64__ && __LINUX_KERNEL_VERSION < 0x040400]
+	(__ASSUME_RECVMSG_SYSCALL): Likewise.
+	[!__arch64__ && __LINUX_KERNEL_VERSION < 0x040400]
+	(__ASSUME_SENDTO_SYSCALL): Likewise.
+	[!__arch64__ && __LINUX_KERNEL_VERSION < 0x040400]
+	(__ASSUME_ACCEPT_SYSCALL): Undefine under this condition, not just
+	[!__arch64__].
+	[!__arch64__ && __LINUX_KERNEL_VERSION < 0x040400]
+	(__ASSUME_CONNECT_SYSCALL): Likewise.
+	[!__arch64__ && __LINUX_KERNEL_VERSION < 0x040400]
+	(__ASSUME_RECVFROM_SYSCALL): Likewise.
+	[__LINUX_KERNEL_VERSION >= 0x040400] (__ASSUME_BIND_SYSCALL):
+	Define.
+	[__LINUX_KERNEL_VERSION >= 0x040400] (__ASSUME_LISTEN_SYSCALL):
+	Likewise.
+	[__LINUX_KERNEL_VERSION >= 0x040400]
+	(__ASSUME_SETSOCKOPT_SYSCALL): Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list (bind):
+	Remove.
+	(listen): Likewise.
+	(setsockopt): Likewise.
+
 2018-11-01  Fredrik Noring  <noring@nocrew.org>
 
 	* sysdeps/mips/sys/tas.h (_test_and_set): Handle the R5900 CPU
diff --git a/sysdeps/unix/sysv/linux/sparc/kernel-features.h b/sysdeps/unix/sysv/linux/sparc/kernel-features.h
index 91990a7..fd48081 100644
--- a/sysdeps/unix/sysv/linux/sparc/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/sparc/kernel-features.h
@@ -28,11 +28,34 @@
 # undef __ASSUME_SET_ROBUST_LIST
 #endif
 
-#if !defined __arch64__
+/* These syscalls were added for 32-bit in 4.4 (but present for 64-bit
+   in all supported kernel versions); the architecture-independent
+   kernel-features.h assumes some of them to be present by default.
+   getpeername and getsockname syscalls were also added for 32-bit in
+   4.4, but only for 32-bit kernels, not in the compat syscall table
+   for 64-bit kernels.  */
+#if !defined __arch64__ && __LINUX_KERNEL_VERSION < 0x040400
+# undef __ASSUME_SENDMSG_SYSCALL
+# undef __ASSUME_RECVMSG_SYSCALL
 # undef __ASSUME_ACCEPT_SYSCALL
 # undef __ASSUME_CONNECT_SYSCALL
 # undef __ASSUME_RECVFROM_SYSCALL
+# undef __ASSUME_SENDTO_SYSCALL
 #else
+# define __ASSUME_SOCKET_SYSCALL             1
+# define __ASSUME_SOCKETPAIR_SYSCALL         1
+# define __ASSUME_GETSOCKOPT_SYSCALL         1
+# define __ASSUME_SHUTDOWN_SYSCALL           1
+#endif
+
+/* These syscalls were added for both 32-bit and 64-bit in 4.4.  */
+#if __LINUX_KERNEL_VERSION >= 0x040400
+# define __ASSUME_BIND_SYSCALL               1
+# define __ASSUME_LISTEN_SYSCALL             1
+# define __ASSUME_SETSOCKOPT_SYSCALL         1
+#endif
+
+#ifdef __arch64__
 /* sparc64 defines __NR_pause,  however it is not supported (ENOSYS).
    Undefine so pause.c can use a correct alternative.  */
 # undef __NR_pause
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list b/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
index 33082f3..d30d7f2 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
@@ -1,10 +1,7 @@
 # File name	Caller	Syscall name	# args	Strong name	Weak names
 
-bind		-	bind		3	__bind		bind
 getpeername	-	getpeername	3	__getpeername	getpeername
 getsockname	-	getsockname	3	__getsockname	getsockname
 getsockopt	-	getsockopt	5	__getsockopt	getsockopt
-listen		-	listen		2	__listen	listen
-setsockopt	-	setsockopt	5	__setsockopt	setsockopt
 shutdown	-	shutdown	2	__shutdown	shutdown
 socketpair	-	socketpair	4	__socketpair	socketpair

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

Summary of changes:
 ChangeLog                                          |   28 ++++++++++++++++++++
 sysdeps/unix/sysv/linux/sparc/kernel-features.h    |   25 +++++++++++++++++-
 .../unix/sysv/linux/sparc/sparc64/syscalls.list    |    3 --
 3 files changed, 52 insertions(+), 4 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]