diff options
author | Joseph Myers <joseph@codesourcery.com> | 2018-11-01 16:30:15 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2018-11-01 16:30:15 +0000 |
commit | daea71c2e4234e8c7ed78ce3d980b25f63744a14 (patch) | |
tree | e2a820704e0271309433832435959e17837ea169 /ChangeLog | |
parent | 8e3c00db16fcedea0ea47d93c2acb6d7d5ba9164 (diff) | |
download | glibc-daea71c2e4234e8c7ed78ce3d980b25f63744a14.tar.gz glibc-daea71c2e4234e8c7ed78ce3d980b25f63744a14.tar.xz glibc-daea71c2e4234e8c7ed78ce3d980b25f63744a14.zip |
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.
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index 67abf144c9..96f6ce52d8 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 |