aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/unix/Makefile14
-rw-r--r--sysdeps/unix/make-syscalls.sh21
-rw-r--r--sysdeps/unix/sysv/linux/Makefile2
-rw-r--r--sysdeps/unix/sysv/linux/sys/kdaemon.h32
-rw-r--r--sysdeps/unix/sysv/linux/syscalls.list10
5 files changed, 33 insertions, 46 deletions
diff --git a/sysdeps/unix/Makefile b/sysdeps/unix/Makefile
index 1770d1df98..48f5ec591f 100644
--- a/sysdeps/unix/Makefile
+++ b/sysdeps/unix/Makefile
@@ -59,8 +59,20 @@ $(objpfx)stub-syscalls.c: $(common-objpfx)sysd-syscalls \
*@*) \
ver=$${call##*@}; call=$${call%%@*}; \
ver=`echo "$$ver" | sed 's/\./_/g'`; \
+ case $$ver in \
+ *:*) \
+ compat_ver=$${ver#*:}; \
+ ver=$${ver%%:*}; \
+ compat_cond="SHLIB_COMPAT (libc, $$ver, $$compat_ver)"; \
+ ;; \
+ *) \
+ compat_cond=""; \
+ ;; \
+ esac; \
+ if [ -n "$$compat_cond" ]; then echo "#if $$compat_cond"; fi; \
echo "strong_alias (_no_syscall, __$${call}_$${ver})"; \
- echo "compat_symbol (libc, __$${call}_$${ver}, $$call, $$ver);" \
+ echo "compat_symbol (libc, __$${call}_$${ver}, $$call, $$ver);"; \
+ if [ -n "$$compat_cond" ]; then echo "#endif"; fi; \
;; \
*) echo "weak_alias (_no_syscall, $$call)"; \
echo "stub_warning ($$call)"; \
diff --git a/sysdeps/unix/make-syscalls.sh b/sysdeps/unix/make-syscalls.sh
index fbf96605e0..bbef3eb360 100644
--- a/sysdeps/unix/make-syscalls.sh
+++ b/sysdeps/unix/make-syscalls.sh
@@ -81,12 +81,9 @@ emit_weak_aliases()
# We use the <shlib-compat.h> macros to generate the versioned aliases
# so that the version sets can be mapped to the configuration's
- # minimum version set as per shlib-versions DEFAULT lines. But note
- # we don't generate any "#if SHLIB_COMPAT (...)" conditionals. To do
- # that we'd need to change the syscalls.list format so that it can
- # list the "obsoleted" version set too. If it ever arises that we
- # have a syscall entry point that is obsoleted by a newer version set,
- # we'll have to revamp all this.
+ # minimum version set as per shlib-versions DEFAULT lines. If an
+ # entry point is specified in the form NAME@VERSION:OBSOLETED, a
+ # SHLIB_COMPAT conditional is generated.
if [ $any_versioned = t ]; then
echo " echo '#include <shlib-compat.h>'; \\"
fi
@@ -113,7 +110,17 @@ emit_weak_aliases()
*@*)
base=`echo $name | sed 's/@.*//'`
ver=`echo $name | sed 's/.*@//;s/\./_/g'`
- echo " echo '#if defined SHARED && IS_IN (libc)'; \\"
+ case $ver in
+ *:*)
+ compat_ver=${ver#*:}
+ ver=${ver%%:*}
+ compat_cond=" && SHLIB_COMPAT (libc, $ver, $compat_ver)"
+ ;;
+ *)
+ compat_cond=
+ ;;
+ esac
+ echo " echo '#if defined SHARED && IS_IN (libc)$compat_cond'; \\"
if test -z "$vcount" ; then
source=$strong
vcount=1
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index 3eb4a7d4f9..f6269ea3d8 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -29,7 +29,7 @@ CFLAGS-tst-writev.c += "-DARTIFICIAL_LIMIT=0x80000000-__getpagesize()"
# here and in any non-Linux configuration that uses it; other
# configurations will not install the file.
sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h \
- sys/klog.h sys/kdaemon.h \
+ sys/klog.h \
sys/user.h sys/prctl.h \
sys/kd.h sys/soundcard.h sys/vt.h \
sys/quota.h sys/fsuid.h \
diff --git a/sysdeps/unix/sysv/linux/sys/kdaemon.h b/sysdeps/unix/sysv/linux/sys/kdaemon.h
deleted file mode 100644
index 67ab6d38e0..0000000000
--- a/sysdeps/unix/sysv/linux/sys/kdaemon.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Copyright (C) 1996-2015 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-/* Interfaces to control the various kernel daemons. */
-
-#ifndef _SYS_KDAEMON_H
-
-#define _SYS_KDAEMON_H 1
-#include <features.h>
-
-__BEGIN_DECLS
-
-/* Start, flush, or tune the kernel's buffer flushing daemon. */
-extern int bdflush (int __func, long int __data) __THROW;
-
-__END_DECLS
-
-#endif /* _SYS_KDAEMON_H */
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