From eed3e1eb79bcfa9b52609fd875fa2d522e2d6bce Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Mon, 14 Dec 2015 22:52:15 +0000 Subject: Make obsolete syscall wrappers into compat symbols (bug 18472). Various Linux kernel syscalls have become obsolete over time. Specifically, the following are obsolete in all kernel versions supported by glibc, are not present for architectures more recently added to the kernel, and as such, the wrapper functions for them should be compat symbols, not in static libc and not available for new links with shared libc. * bdflush: in Linux 2.6, does nothing if present. * create_module get_kernel_syms query_module: Linux 2.4 module interface, syscalls not present in Linux 2.6. * uselib: part of the mechanism for loading a.out shared libraries, irrelevant with ELF. This patch adds support for syscalls.list to list syscall aliases of the form NAME@VERSION:OBSOLETED, with SHLIB_COMPAT conditionals being generated for such aliases. Those five syscalls are then made into compat symbols (obsoleted in glibc 2.23, so future ports won't have these symbols at all), with the header declaring bdflush being removed. When we move to 3.2 as minimum kernel version, the same can be done for nfsservctl (removed in Linux 3.1) as well. Tested for x86_64 and x86 (testsuite, as well as checking that the symbols in question indeed become compat symbols, that they are indeed omitted from static libc, and that the generated SHLIB_COMPAT conditionals look right). [BZ #18472] * sysdeps/unix/Makefile ($(objpfx)stub-syscalls.c): Handle entries for the form NAME@VERSION:OBSOLETED and generate SHLIB_COMPAT conditionals for them. * sysdeps/unix/make-syscalls.sh (emit_weak_aliases): Likewise. * sysdeps/unix/sysv/linux/sys/kdaemon.h: Remove file. * sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Remove sys/kdaemon.h. * sysdeps/unix/sysv/linux/syscalls.list (bdflush): Make into compat-only syscall, obsoleted in glibc 2.23. (create_module): Likewise. (get_kernel_syms): Likewise. (query_module): Likewise. (uselib): Likewise. * manual/sysinfo.texi (System Parameters): Do not mention bdflush. --- sysdeps/unix/sysv/linux/syscalls.list | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'sysdeps/unix/sysv/linux/syscalls.list') diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index 62bb3cc36d..caa6ccfbb1 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list +++ b/sysdeps/unix/sysv/linux/syscalls.list @@ -2,12 +2,12 @@ adjtimex adjtime adjtimex i:p __adjtimex adjtimex ntp_adjtime alarm - alarm i:i alarm -bdflush EXTRA bdflush i:ii bdflush +bdflush EXTRA bdflush i:ii __compat_bdflush bdflush@GLIBC_2.0:GLIBC_2.23 capget EXTRA capget i:pp capget capset EXTRA capset i:pp capset clock_adjtime EXTRA clock_adjtime i:ip clock_adjtime creat - creat Ci:si creat -create_module EXTRA create_module 3 create_module +create_module EXTRA create_module 3 __compat_create_module create_module@GLIBC_2.0:GLIBC_2.23 delete_module EXTRA delete_module 3 delete_module epoll_create EXTRA epoll_create i:i epoll_create epoll_create1 EXTRA epoll_create1 i:i epoll_create1 @@ -16,7 +16,7 @@ epoll_wait EXTRA epoll_wait Ci:ipii epoll_wait execve - execve i:spp __execve execve fdatasync - fdatasync Ci:i fdatasync flock - flock i:ii __flock flock -get_kernel_syms EXTRA get_kernel_syms i:p get_kernel_syms +get_kernel_syms EXTRA get_kernel_syms i:p __compat_get_kernel_syms get_kernel_syms@GLIBC_2.0:GLIBC_2.23 getegid - getegid Ei: __getegid getegid geteuid - geteuid Ei: __geteuid geteuid getpgid - getpgid i:i __getpgid getpgid @@ -53,7 +53,7 @@ pivot_root EXTRA pivot_root i:ss pivot_root poll - poll Ci:pii __libc_poll __poll poll prctl EXTRA prctl i:iiiii __prctl prctl putpmsg - putpmsg i:ippii putpmsg -query_module EXTRA query_module i:sipip query_module +query_module EXTRA query_module i:sipip __compat_query_module query_module@GLIBC_2.0:GLIBC_2.23 quotactl EXTRA quotactl i:isip quotactl remap_file_pages - remap_file_pages i:piiii __remap_file_pages remap_file_pages sched_getp - sched_getparam i:ip __sched_getparam sched_getparam @@ -78,7 +78,7 @@ swapon - swapon i:si __swapon swapon swapoff - swapoff i:s __swapoff swapoff tee EXTRA tee Ci:iiii tee unshare EXTRA unshare i:i unshare -uselib EXTRA uselib i:s uselib +uselib EXTRA uselib i:s __compat_uselib uselib@GLIBC_2.0:GLIBC_2.23 utime - utime i:sP utime vmsplice EXTRA vmsplice Ci:iPii vmsplice wait4 - wait4 i:iWiP __wait4 wait4 -- cgit 1.4.1