summaryrefslogtreecommitdiff
path: root/sysdeps/unix/make-syscalls.sh
diff options
context:
space:
mode:
authorRoland McGrath <roland@hack.frob.com>2012-08-01 10:25:11 -0700
committerRoland McGrath <roland@hack.frob.com>2012-08-01 10:25:11 -0700
commit09c0ee5f8c2e52ff64347c39a586e8a23b9421e5 (patch)
treeaf4c6dff0a190939c50333f2d20c4cd1d4ec6b40 /sysdeps/unix/make-syscalls.sh
parent7e66ee5142deda977163d0a858c3d2883cae3f07 (diff)
downloadglibc-09c0ee5f8c2e52ff64347c39a586e8a23b9421e5.tar.gz
BZ#14138: Move getrlimit (ugetrlimit) syscall to syscalls.list.
Diffstat (limited to 'sysdeps/unix/make-syscalls.sh')
-rw-r--r--sysdeps/unix/make-syscalls.sh27
1 files changed, 20 insertions, 7 deletions
diff --git a/sysdeps/unix/make-syscalls.sh b/sysdeps/unix/make-syscalls.sh
index 2bc7cc02a8..7e7de65f3a 100644
--- a/sysdeps/unix/make-syscalls.sh
+++ b/sysdeps/unix/make-syscalls.sh
@@ -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