This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: A patch to add --with-oldest-abi=ABI.


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]