This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
Re: A patch to add --with-oldest-abi=ABI.
- To: Ulrich Drepper <drepper at cygnus dot com>
- Subject: Re: A patch to add --with-oldest-abi=ABI.
- From: "H . J . Lu" <hjl at valinux dot com>
- Date: Fri, 1 Dec 2000 15:15:52 -0800
- Cc: GNU C Library <libc-alpha at sourceware dot cygnus dot com>
- References: <20001130132922.A11034@valinux.com> <20001130172636.A19978@valinux.com> <m33dg8gl3x.fsf@otr.mynet.cygnus.com> <20001201095155.A7499@valinux.com>
On Fri, Dec 01, 2000 at 09:51:55AM -0800, H . J . Lu wrote:
> On Fri, Dec 01, 2000 at 08:30:26AM -0800, Ulrich Drepper wrote:
>
> >
> > Also, there are lots of symbols not caught at all (getrlimit to name
> > only one).
> >
>
> getrlimit is a system call generated on the fly during the glibc build.
> It doesn't include shlib-compat.h. I looked at it. I guess I had to
Here is the patch to add the shlib-compat.h support to the system
calls.
H.J.
----
2000-12-01 H.J. Lu <hjl@gnu.org>
* sysdeps/unix/make-syscalls.sh: Support the obsoleting
version.
* sysdeps/unix/sysv/linux/alpha/syscalls.list: Add the
obsoleting version for the older version.
* sysdeps/unix/sysv/linux/arm/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/i386/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/m68k/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/powerpc/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/s390/syscalls.list: Likewise.
Index: sysdeps/unix/make-syscalls.sh
===================================================================
RCS file: /work/cvs/gnu/glibc/sysdeps/unix/make-syscalls.sh,v
retrieving revision 1.1.1.8
diff -u -p -r1.1.1.8 make-syscalls.sh
--- sysdeps/unix/make-syscalls.sh 2000/09/08 16:01:44 1.1.1.8
+++ sysdeps/unix/make-syscalls.sh 2000/12/01 21:43:42
@@ -113,6 +113,7 @@ while read file srcfile caller syscall a
test x$caller = x- || echo "unix-extra-syscalls += $file"
# Emit a compilation rule for this syscall.
+ shlib_compat=no
case $weak in
*@*)
# The versioned symbols are only in the shared library.
@@ -125,9 +126,41 @@ shared-only-routines += $file
\$(foreach o,\$(object-suffixes),\$(objpfx)$file\$o): \\"
;;
esac
- echo " \$(common-objpfx)s-proto.d
- (echo '#include <sysdep.h>'; \\
- echo 'PSEUDO ($strong, $syscall, $nargs)'; \\
+ echo " \$(common-objpfx)s-proto.d"
+ case $weak in
+ *@@*)
+ echo " (echo '#include <sysdep.h>'; \\"
+ ;;
+ *@*)
+ oldintr=
+ oldobs=
+ shlib_compat=yes
+ for name in $weak; do
+ intr=`echo $name | sed 's/.*@//;s/,.*$//;s/[.]/_/g'`
+ obs=`echo $name | sed 's/.*,//;s/[.]/_/g'`
+ if test -z "$oldintr"; then
+ oldintr=$intr
+ oldobs=$obs
+ else
+ if test "$oldintr" != "$intr" || test "$oldobs" != "$obs"; then
+ shlib_compat=no
+ break
+ fi
+ fi
+ done
+ if test $shlib_compat = yes; then
+ echo " (echo '#include <shlib-compat.h>'; \\
+ echo '#if SHLIB_COMPAT (libc, $intr, $obs)'; \\
+ echo '#include <sysdep.h>'; \\"
+ else
+ echo " (echo '#include <sysdep.h>'; \\"
+ fi
+ ;;
+ *)
+ echo " (echo '#include <sysdep.h>'; \\"
+ ;;
+ esac
+ echo " echo 'PSEUDO ($strong, $syscall, $nargs)'; \\
echo ' ret'; \\
echo 'PSEUDO_END($strong)'; \\"
@@ -154,7 +187,7 @@ shared-only-routines += $file
;;
*@*)
base=`echo $name | sed 's/@.*//'`
- ver=`echo $name | sed 's/.*@//'`
+ ver=`echo $name | sed 's/.*@//;s/,.*$//'`
if test -z "$vcount" ; then
source=$strong
vcount=1
@@ -162,14 +195,21 @@ shared-only-routines += $file
source="${strong}_${vcount}"
vcount=`expr $vcount + 1`
echo " echo 'strong_alias ($strong, $source)'; \\"
+ fi
+ if test $shlib_compat = yes; then
+ echo " echo 'compat_symbol (libc, $source, $base, $ver)'; \\"
+ else
+ echo " echo 'symbol_version($source, $base, $ver)'; \\"
fi
- echo " echo 'symbol_version($source, $base, $ver)'; \\"
;;
*)
echo " echo 'weak_alias ($strong, $name)'; \\"
;;
esac
done
+ if test $shlib_compat = yes; then
+ echo " echo '#endif'; \\"
+ fi
# And finally, pipe this all into the compiler.
echo ' ) | $(COMPILE.S) -x assembler-with-cpp -o $@ -'
Index: sysdeps/unix/sysv/linux/alpha/syscalls.list
===================================================================
RCS file: /work/cvs/gnu/glibc/sysdeps/unix/sysv/linux/alpha/syscalls.list,v
retrieving revision 1.1.1.2
diff -u -p -r1.1.1.2 syscalls.list
--- sysdeps/unix/sysv/linux/alpha/syscalls.list 2000/08/24 06:52:23 1.1.1.2
+++ sysdeps/unix/sysv/linux/alpha/syscalls.list 2000/12/01 21:41:10
@@ -1,16 +1,16 @@
# File name Caller Syscall name # args Strong name Weak names
-oldmsgctl EXTRA msgctl 3 __old_msgctl msgctl@GLIBC_2.0
+oldmsgctl EXTRA msgctl 3 __old_msgctl msgctl@GLIBC_2.0,GLIBC_2.2
msgget - msgget 2 __msgget msgget
msgrcv - msgrcv 5 __msgrcv msgrcv
msgsnd - msgsnd 4 __msgsnd msgsnd
shmat - osf_shmat 3 __shmat shmat
-oldshmctl EXTRA shmctl 3 __old_shmctl shmctl@GLIBC_2.0
+oldshmctl EXTRA shmctl 3 __old_shmctl shmctl@GLIBC_2.0,GLIBC_2.2
shmdt - shmdt 1 __shmdt shmdt
shmget - shmget 3 __shmget shmget
semop - semop 3 __semop semop
semget - semget 3 __semget semget
-oldsemctl EXTRA semctl 4 __old_semctl semctl@GLIBC_2.0
+oldsemctl EXTRA semctl 4 __old_semctl semctl@GLIBC_2.0,GLIBC_2.2
osf_sigprocmask - osf_sigprocmask 2 __osf_sigprocmask
sigstack - sigstack 2 sigstack
@@ -65,15 +65,15 @@ pciconfig_iobase EXTRA pciconfig_iobase
adjtimex - syscall_adjtimex 1 __syscall_adjtimex syscall_adjtimex
# support old timeval32 entry points
-osf_select - osf_select 5 __select_tv32 __select@GLIBC_2.0 select@GLIBC_2.0
-osf_gettimeofday - osf_gettimeofday 2 __gettimeofday_tv32 __gettimeofday@GLIBC_2.0 gettimeofday@GLIBC_2.0
-osf_settimeofday - osf_settimeofday 2 __settimeofday_tv32 settimeofday@GLIBC_2.0
-osf_getitimer - osf_getitimer 2 __getitimer_tv32 getitimer@GLIBC_2.0
-osf_setitimer - osf_setitimer 3 __setitimer_tv32 setitimer@GLIBC_2.0
-osf_utimes - osf_utimes 2 __utimes_tv32 utimes@GLIBC_2.0
-osf_getrusage - osf_getrusage 2 __getrusage_tv32 getrusage@GLIBC_2.0
-osf_wait4 - osf_wait4 2 __wait4_tv32 wait4@GLIBC_2.0
-old_adjtimex - old_adjtimex 1 __adjtimex_tv32 __adjtimex@GLIBC_2.0 adjtimex@GLIBC_2.0
+osf_select - osf_select 5 __select_tv32 __select@GLIBC_2.0,GLIBC_2.1 select@GLIBC_2.0,GLIBC_2.1
+osf_gettimeofday - osf_gettimeofday 2 __gettimeofday_tv32 __gettimeofday@GLIBC_2.0,GLIBC_2.1 gettimeofday@GLIBC_2.0,GLIBC_2.1
+osf_settimeofday - osf_settimeofday 2 __settimeofday_tv32 settimeofday@GLIBC_2.0,GLIBC_2.1
+osf_getitimer - osf_getitimer 2 __getitimer_tv32 getitimer@GLIBC_2.0,GLIBC_2.1
+osf_setitimer - osf_setitimer 3 __setitimer_tv32 setitimer@GLIBC_2.0,GLIBC_2.1
+osf_utimes - osf_utimes 2 __utimes_tv32 utimes@GLIBC_2.0,GLIBC_2.1
+osf_getrusage - osf_getrusage 2 __getrusage_tv32 getrusage@GLIBC_2.0,GLIBC_2.1
+osf_wait4 - osf_wait4 2 __wait4_tv32 wait4@GLIBC_2.0,GLIBC_2.2
+old_adjtimex - old_adjtimex 1 __adjtimex_tv32 __adjtimex@GLIBC_2.0,GLIBC_2.1 adjtimex@GLIBC_2.0,GLIBC_2.1
# and one for timeval64 entry points
adjtimex adjtime adjtimex 1 __syscall_adjtimex_tv64
Index: sysdeps/unix/sysv/linux/arm/syscalls.list
===================================================================
RCS file: /work/cvs/gnu/glibc/sysdeps/unix/sysv/linux/arm/syscalls.list,v
retrieving revision 1.1.1.2
diff -u -p -r1.1.1.2 syscalls.list
--- sysdeps/unix/sysv/linux/arm/syscalls.list 2000/08/03 00:33:51 1.1.1.2
+++ sysdeps/unix/sysv/linux/arm/syscalls.list 2000/12/01 21:41:35
@@ -12,5 +12,5 @@ s_setresuid setresuid setresuid 3 __sysc
s_setreuid setreuid setreuid 2 __syscall_setreuid
s_setuid setuid setuid 1 __syscall_setuid
syscall - syscall 7 syscall
-oldgetrlimit EXTRA getrlimit i:ip __old_getrlimit getrlimit@GLIBC_2.0
-oldsetrlimit EXTRA setrlimit i:ip __old_setrlimit setrlimit@GLIBC_2.0
+oldgetrlimit EXTRA getrlimit i:ip __old_getrlimit getrlimit@GLIBC_2.0,GLIBC_2.2
+oldsetrlimit EXTRA setrlimit i:ip __old_setrlimit setrlimit@GLIBC_2.0,GLIBC_2.2
Index: sysdeps/unix/sysv/linux/i386/syscalls.list
===================================================================
RCS file: /work/cvs/gnu/glibc/sysdeps/unix/sysv/linux/i386/syscalls.list,v
retrieving revision 1.1.1.2
diff -u -p -r1.1.1.2 syscalls.list
--- sysdeps/unix/sysv/linux/i386/syscalls.list 2000/06/13 16:55:47 1.1.1.2
+++ sysdeps/unix/sysv/linux/i386/syscalls.list 2000/12/01 21:45:27
@@ -2,5 +2,5 @@
modify_ldt EXTRA modify_ldt i:ipi __modify_ldt modify_ldt
vm86 - vm86 i:p __vm86 vm86
-oldgetrlimit EXTRA getrlimit i:ip __old_getrlimit getrlimit@GLIBC_2.0
-oldsetrlimit EXTRA setrlimit i:ip __old_setrlimit setrlimit@GLIBC_2.0
+oldgetrlimit EXTRA getrlimit i:ip __old_getrlimit getrlimit@GLIBC_2.0,GLIBC_2.2
+oldsetrlimit EXTRA setrlimit i:ip __old_setrlimit setrlimit@GLIBC_2.0,GLIBC_2.2
Index: sysdeps/unix/sysv/linux/m68k/syscalls.list
===================================================================
RCS file: /work/cvs/gnu/glibc/sysdeps/unix/sysv/linux/m68k/syscalls.list,v
retrieving revision 1.1.1.3
diff -u -p -r1.1.1.3 syscalls.list
--- sysdeps/unix/sysv/linux/m68k/syscalls.list 2000/10/19 02:40:09 1.1.1.3
+++ sysdeps/unix/sysv/linux/m68k/syscalls.list 2000/12/01 21:45:34
@@ -1,5 +1,5 @@
# File name Caller Syscall name Args Strong name Weak names
cacheflush EXTRA cacheflush i:iiii __cacheflush cacheflush
-oldgetrlimit EXTRA getrlimit i:ip __old_getrlimit getrlimit@GLIBC_2.0
-oldsetrlimit EXTRA setrlimit i:ip __old_setrlimit setrlimit@GLIBC_2.0
+oldgetrlimit EXTRA getrlimit i:ip __old_getrlimit getrlimit@GLIBC_2.0,GLIBC_2.2
+oldsetrlimit EXTRA setrlimit i:ip __old_setrlimit setrlimit@GLIBC_2.0,GLIBC_2.2
Index: sysdeps/unix/sysv/linux/powerpc/syscalls.list
===================================================================
RCS file: /work/cvs/gnu/glibc/sysdeps/unix/sysv/linux/powerpc/syscalls.list,v
retrieving revision 1.1.1.8
diff -u -p -r1.1.1.8 syscalls.list
--- sysdeps/unix/sysv/linux/powerpc/syscalls.list 2000/11/07 01:29:34 1.1.1.8
+++ sysdeps/unix/sysv/linux/powerpc/syscalls.list 2000/12/01 21:45:41
@@ -49,5 +49,5 @@ sys_mknod xmknod mknod i:pii __syscall_
sys_readv readv readv i:ipi __syscall_readv
sys_stat xstat stat i:sp __syscall_stat
sys_writev writev writev i:ipi __syscall_writev
-oldgetrlimit EXTRA getrlimit i:ip __old_getrlimit getrlimit@GLIBC_2.0
-oldsetrlimit EXTRA setrlimit i:ip __old_setrlimit setrlimit@GLIBC_2.0
+oldgetrlimit EXTRA getrlimit i:ip __old_getrlimit getrlimit@GLIBC_2.0,GLIBC_2.2
+oldsetrlimit EXTRA setrlimit i:ip __old_setrlimit setrlimit@GLIBC_2.0,GLIBC_2.2
Index: sysdeps/unix/sysv/linux/s390/syscalls.list
===================================================================
RCS file: /work/cvs/gnu/glibc/sysdeps/unix/sysv/linux/s390/syscalls.list,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 syscalls.list
--- sysdeps/unix/sysv/linux/s390/syscalls.list 2000/08/28 20:47:26 1.1.1.1
+++ sysdeps/unix/sysv/linux/s390/syscalls.list 2000/12/01 21:45:48
@@ -1,4 +1,4 @@
# File name Caller Syscall name Args Strong name Weak names
-oldgetrlimit EXTRA getrlimit i:ip __old_getrlimit getrlimit@GLIBC_2.0
-oldsetrlimit EXTRA setrlimit i:ip __old_setrlimit setrlimit@GLIBC_2.0
+oldgetrlimit EXTRA getrlimit i:ip __old_getrlimit getrlimit@GLIBC_2.0,GLIBC_2.2
+oldsetrlimit EXTRA setrlimit i:ip __old_setrlimit setrlimit@GLIBC_2.0,GLIBC_2.2