mirror of git://sourceware.org/git/glibc.git
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. |
||
---|---|---|
.. | ||
bits | ||
Implies | ||
Makefile | ||
Versions | ||
____longjmp_chk.S | ||
__longjmp.S | ||
__start_context.S | ||
brk.S | ||
bsd-_setjmp.S | ||
bsd-setjmp.S | ||
c++-types.data | ||
clone.S | ||
configure | ||
configure.ac | ||
dl-brk.S | ||
dl-cache.h | ||
dl-fxstatat64.c | ||
fxstat.c | ||
fxstatat.c | ||
get_clockfreq.c | ||
getcontext.S | ||
ipc_priv.h | ||
jmp_buf-macros.h | ||
kernel_stat.h | ||
ld.abilist | ||
libBrokenLocale.abilist | ||
libanl.abilist | ||
libc.abilist | ||
libcrypt.abilist | ||
libdl.abilist | ||
libm.abilist | ||
libnsl.abilist | ||
libpthread.abilist | ||
libresolv.abilist | ||
librt.abilist | ||
libthread_db.abilist | ||
libutil.abilist | ||
localplt.data | ||
longjmp.S | ||
lxstat.c | ||
makecontext.c | ||
personality.c | ||
pipe.S | ||
profil-counter.h | ||
register-dump.h | ||
setcontext.S | ||
setjmp.S | ||
shlib-versions | ||
sigaction.c | ||
sigcontextinfo.h | ||
sigjmp.S | ||
sigprocmask.c | ||
sizes.h | ||
swapcontext.c | ||
syscall.S | ||
syscalls.list | ||
sysdep.h | ||
time.c | ||
timer_create.c | ||
timer_delete.c | ||
timer_getoverr.c | ||
timer_gettime.c | ||
timer_settime.c | ||
ucontext_i.h | ||
vfork.S | ||
wordexp.c | ||
xstat.c | ||
xstatconv.c |