BZ#14138: Move getrlimit (ugetrlimit) syscall to syscalls.list.

This commit is contained in:
Roland McGrath 2012-08-01 10:25:11 -07:00
parent 7e66ee5142
commit 09c0ee5f8c
13 changed files with 63 additions and 57 deletions

View File

@ -1,3 +1,17 @@
2012-08-01 Roland McGrath <roland@hack.frob.com>
[BZ #14138]
* sysdeps/unix/sysv/linux/syscalls.list: Add getrlimit/ugetrlimit line.
* sysdeps/unix/sysv/linux/i386/getrlimit.c: File removed.
* sysdeps/unix/sysv/linux/powerpc/getrlimit.c: File removed.
* sysdeps/unix/sysv/linux/sh/getrlimit.c: File removed.
* sysdeps/unix/make-syscalls.sh: Emit uses of the versioned_symbol and
compat_symbol macros from <shlib-compat.h> rather than the underlying
default_symbol_version and symbol_version macros, so that DEFAULT
lines in shlib-versions are respected.
* sysdeps/unix/Makefile ($(objpfx)stub-syscalls.c): Likewise.
2012-08-01 Florian Weimer <fweimer@redhat.com>
* posix/unistd.h (setuid, setreuid, seteuid, setresuid):

View File

@ -1,3 +1,8 @@
2012-08-01 Roland McGrath <roland@hack.frob.com>
[BZ #14138]
* sysdeps/unix/sysv/linux/am33/getrlimit.c: File removed.
2012-03-09 Paul Eggert <eggert@cs.ucla.edu>
[BZ #13673]

View File

@ -1,3 +1,8 @@
2012-08-01 Roland McGrath <roland@hack.frob.com>
[BZ #14138]
* sysdeps/unix/sysv/linux/arm/getrlimit.c: File removed.
2012-07-30 Roland McGrath <roland@hack.frob.com>
* sysdeps/arm/preconfigure: Don't refuse configurations with

View File

@ -1,3 +1,8 @@
2012-08-01 Roland McGrath <roland@hack.frob.com>
[BZ #14138]
* sysdeps/unix/sysv/linux/m68k/getrlimit.c: File removed.
2012-08-01 Andreas Schwab <schwab@linux-m68k.org>
* sysdeps/m68k/m680x0/fpu/libm-test-ulps: Update.

View File

@ -1 +0,0 @@
#include <sysdeps/unix/sysv/linux/i386/getrlimit.c>

View File

@ -1 +0,0 @@
#include <sysdeps/unix/sysv/linux/i386/getrlimit.c>

View File

@ -1 +0,0 @@
#include <sysdeps/unix/sysv/linux/i386/getrlimit.c>

View File

@ -37,23 +37,29 @@ $(objpfx)stub-syscalls.c: $(common-objpfx)sysd-syscalls \
$(..)sysdeps/unix/Makefile
$(make-target-directory)
(for call in $(unix-stub-syscalls); do \
call=$${call%%@*}; \
echo "#define $$call RENAMED_$$call"; \
done; \
echo '#include <errno.h>'; \
echo '#include <shlib-compat.h>'; \
for call in $(unix-stub-syscalls); do \
call=$${call%%@*}; \
echo "#undef $$call"; \
done; \
echo 'long int _no_syscall (void)'; \
echo '{ __set_errno (ENOSYS); return -1L; }'; \
for call in $(unix-stub-syscalls); do \
case $$call in \
*@@*) ver=$${call##*@}; call=$${call%%*@}; \
echo "strong_alias (_no_syscall, $${call}_$${ver})"; \
echo "default_symbol_version \
($${call}_$${ver}, $$call, $$ver);" ;; \
*@*) ver=$${call##*@}; call=$${call%%*@}; \
echo "strong_alias (_no_syscall, $${call}_$${ver})"; \
echo "symbol_version ($${call}_$${ver}, $$call, $$ver);" ;; \
*@@*) \
ver=$${call##*@}; call=$${call%%@*}; ver=$${ver//./_}; \
echo "strong_alias (_no_syscall, __$${call}_$${ver})"; \
echo "versioned_symbol (libc, __$${call}_$${ver}, $$call, $$ver);"\
;; \
*@*) \
ver=$${call##*@}; call=$${call%%@*}; ver=$${ver//./_}; \
echo "strong_alias (_no_syscall, __$${call}_$${ver})"; \
echo "compat_symbol (libc, __$${call}_$${ver}, $$call, $$ver);" \
;; \
*) echo "weak_alias (_no_syscall, $$call)"; \
echo "stub_warning ($$call)"; \
echo "weak_alias (_no_syscall, __GI_$$call)" ;; \

View File

@ -64,18 +64,30 @@ done`
# Any calls left?
test -n "$calls" || exit 0
# This uses variables $weak and $strong.
# This uses variables $weak, $strong, and $any_versioned.
emit_weak_aliases()
{
# A shortcoming in the current gas is that it will only allow one
# version-alias per symbol. So we create new strong aliases as needed.
vcount=""
# 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.
if [ $any_versioned = t ]; then
echo " echo '#include <shlib-compat.h>'; \\"
fi
for name in $weak; do
case $name in
*@@*)
base=`echo $name | sed 's/@@.*//'`
ver=`echo $name | sed 's/.*@@//'`
ver=`echo $name | sed 's/.*@@//;s/\./_/g'`
echo " echo '#ifndef NOT_IN_libc'; \\"
if test -z "$vcount" ; then
source=$strong
@ -85,14 +97,14 @@ emit_weak_aliases()
vcount=`expr $vcount + 1`
echo " echo 'strong_alias ($strong, $source)'; \\"
fi
echo " echo 'default_symbol_version($source, $base, $ver)'; \\"
echo " echo 'versioned_symbol (libc, $source, $base, $ver)'; \\"
echo " echo '#else'; \\"
echo " echo 'strong_alias ($strong, $base)'; \\"
echo " echo '#endif'; \\"
;;
*@*)
base=`echo $name | sed 's/@.*//'`
ver=`echo $name | sed 's/.*@//'`
ver=`echo $name | sed 's/.*@//;s/\./_/g'`
echo " echo '#ifndef NOT_IN_libc'; \\"
if test -z "$vcount" ; then
source=$strong
@ -102,7 +114,7 @@ emit_weak_aliases()
vcount=`expr $vcount + 1`
echo " echo 'strong_alias ($strong, $source)'; \\"
fi
echo " echo 'symbol_version ($source, $base, $ver)'; \\"
echo " echo 'compat_symbol (libc, $source, $base, $ver)'; \\"
echo " echo '#endif'; \\"
;;
!*)
@ -175,10 +187,11 @@ while read file srcfile caller syscall args strong weak; do
# If there are versioned aliases the entry is only generated for the
# shared library, unless it is a default version.
any_versioned=f
shared_only=f
case $weak in
*@@*) ;;
*@*) shared_only=t;;
*@@*) any_versioned=t ;;
*@*) any_versioned=t shared_only=t ;;
esac
case x$srcfile"$callnum" in

View File

@ -1,38 +0,0 @@
/* Copyright (C) 1999-2012 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/>. */
#include <errno.h>
#include <sys/resource.h>
#include <sysdep.h>
#include <sys/syscall.h>
#include <shlib-compat.h>
#include <bp-checks.h>
extern int __new_getrlimit (enum __rlimit_resource resource,
struct rlimit *__unbounded rlimits);
/* Consider moving to syscalls.list. */
int
__new_getrlimit (enum __rlimit_resource resource, struct rlimit *rlimits)
{
return INLINE_SYSCALL (ugetrlimit, 2, resource, CHECK_1 (rlimits));
}
weak_alias (__new_getrlimit, __getrlimit);
versioned_symbol (libc, __new_getrlimit, getrlimit, GLIBC_2_2);

View File

@ -1 +0,0 @@
#include <sysdeps/unix/sysv/linux/i386/getrlimit.c>

View File

@ -1 +0,0 @@
#include <sysdeps/unix/sysv/linux/i386/getrlimit.c>

View File

@ -25,6 +25,7 @@ getpmsg - getpmsg i:ipppp getpmsg
getppid - getppid Ei: __getppid getppid
getresuid - getresuid i:ppp getresuid
getresgid - getresgid i:ppp getresgid
getrlimit - ugetrlimit i:ip __new_getrlimit __getrlimit getrlimit@@GLIBC_2.2
getsid - getsid i:i getsid
init_module EXTRA init_module 5 init_module
inotify_add_watch EXTRA inotify_add_watch i:isi inotify_add_watch