summaryrefslogtreecommitdiff
path: root/sysdeps/unix/make-syscalls.sh
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/make-syscalls.sh')
-rw-r--r--sysdeps/unix/make-syscalls.sh23
1 files changed, 15 insertions, 8 deletions
diff --git a/sysdeps/unix/make-syscalls.sh b/sysdeps/unix/make-syscalls.sh
index fbf96605e0..58d165e015 100644
--- a/sysdeps/unix/make-syscalls.sh
+++ b/sysdeps/unix/make-syscalls.sh
@@ -1,4 +1,4 @@
-#! /bin/sh
+#!/bin/sh
# Usage: make-syscalls.sh ../sysdeps/unix/common
# Expects $sysdirs in environment.
@@ -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