This is the mail archive of the libc-hacker@sourceware.cygnus.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


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

Re: Some shlib-compat patches



This patch supercedes my previous one, which was broken.

The patch has been tested on i686.

Andreas

2000-03-29  Andreas Jaeger  <aj@suse.de>

	* sysdeps/unix/sysv/linux/msgctl.c: Use shlib-compat macros.
	* sysdeps/unix/sysv/linux/semctl.c: Likewise.
	* sysdeps/unix/sysv/linux/shmctl.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/getrlimit.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/getrlimit64.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/msgctl.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/oldgetrlimit64.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/semctl.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/setrlimit.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/shmctl.c: Likewise.
	* sysdeps/unix/sysv/linux/alpha/msgctl.c: Likewise.
	* sysdeps/unix/sysv/linux/alpha/semctl.c: Likewise.
	* sysdeps/unix/sysv/linux/alpha/shmctl.c: Likewise.
	* sysdeps/unix/sysv/linux/alpha/adjtime.c: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/chown.c: Likewise.

	* sysdeps/unix/sysv/linux/alpha/oldglob.c: Use shlib-compat
	macros, remove K&R prototypes.

============================================================
Index: sysdeps/unix/sysv/linux/alpha/oldglob.c
--- sysdeps/unix/sysv/linux/alpha/oldglob.c	1998/05/21 01:18:56	1.2
+++ sysdeps/unix/sysv/linux/alpha/oldglob.c	2000/03/29 09:31:39
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
 
    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public License as
@@ -19,8 +19,9 @@
    became necessary since the glob_t structure changed.  */
 #include <sys/types.h>
 #include <glob.h>
+#include <shlib-compat.h>
 
-#if defined PIC && DO_VERSIONING
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
 
 /* This is the old structure.  The difference is that the gl_pathc and
    gl_offs elements have type `int'.  */
@@ -33,11 +34,11 @@
 
     /* If the GLOB_ALTDIRFUNC flag is set, the following functions
        are used instead of the normal file access functions.  */
-    void (*gl_closedir) __P ((void *));
-    struct dirent *(*gl_readdir) __P ((void *));
-    __ptr_t (*gl_opendir) __P ((__const char *));
-    int (*gl_lstat) __P ((__const char *, struct stat *));
-    int (*gl_stat) __P ((__const char *, struct stat *));
+    void (*gl_closedir) (void *);
+    struct dirent *(*gl_readdir) (void *);
+    __ptr_t (*gl_opendir) (__const char *);
+    int (*gl_lstat) (__const char *, struct stat *);
+    int (*gl_stat) (__const char *, struct stat *);
   } old_glob_t;
 
 
@@ -75,7 +76,7 @@
 
   return result;
 }
-symbol_version(__old_glob, glob, GLIBC_2.0);
+compat_symbol (libc, __old_glob, glob, GLIBC_2_0);
 
 
 /* Free storage allocated in PGLOB by a previous `glob' call.  */
@@ -90,6 +91,6 @@
 
   globfree (&correct);
 }
-symbol_version(__old_globfree, globfree, GLIBC_2.0);
+compat_symbol (libc, __old_globfree, globfree, GLIBC_2_0);
 
 #endif
============================================================
Index: sysdeps/unix/sysv/linux/alpha/msgctl.c
--- sysdeps/unix/sysv/linux/alpha/msgctl.c	2000/03/26 20:30:58	1.2
+++ sysdeps/unix/sysv/linux/alpha/msgctl.c	2000/03/29 09:31:39
@@ -116,8 +116,6 @@
 #endif
 }
 
-#if defined PIC && DO_VERSIONING
-default_symbol_version (__new_msgctl, msgctl, GLIBC_2.2);
-#else
-weak_alias (__new_msgctl, msgctl);
-#endif
+#include <shlib-compat.h>
+versioned_symbol (libc, __new_msgctl, msgctl, GLIBC_2_2);
+
============================================================
Index: sysdeps/unix/sysv/linux/alpha/semctl.c
--- sysdeps/unix/sysv/linux/alpha/semctl.c	2000/02/11 21:00:16	1.1
+++ sysdeps/unix/sysv/linux/alpha/semctl.c	2000/03/29 09:31:39
@@ -125,8 +125,5 @@
 #endif
 }
 
-#if defined PIC && DO_VERSIONING
-default_symbol_version (__new_semctl, semctl, GLIBC_2.2);
-#else
-weak_alias (__new_semctl, semctl);
-#endif
+#include <shlib-compat.h>
+versioned_symbol (libc, __new_semctl, semctl, GLIBC_2_2);
============================================================
Index: sysdeps/unix/sysv/linux/alpha/shmctl.c
--- sysdeps/unix/sysv/linux/alpha/shmctl.c	2000/02/11 21:00:22	1.1
+++ sysdeps/unix/sysv/linux/alpha/shmctl.c	2000/03/29 09:31:39
@@ -130,8 +130,5 @@
 #endif
 }
 
-#if defined PIC && DO_VERSIONING
-default_symbol_version (__new_shmctl, shmctl, GLIBC_2.2);
-#else
-weak_alias (__new_shmctl, shmctl);
-#endif
+#include <shlib-compat.h>
+versioned_symbol (libc, __new_shmctl, shmctl, GLIBC_2_2);
============================================================
Index: sysdeps/unix/sysv/linux/alpha/adjtime.c
--- sysdeps/unix/sysv/linux/alpha/adjtime.c	1998/03/01 00:56:39	1.2
+++ sysdeps/unix/sysv/linux/alpha/adjtime.c	2000/03/29 09:31:39
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000 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
@@ -16,6 +16,8 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
+#include <shlib-compat.h>
+
 struct timeval32
 {
     int tv_sec, tv_usec;
@@ -54,7 +56,7 @@
 #define TIMEX		timex32
 #define ADJTIME		__adjtime_tv32
 #define ADJTIMEX(x)	__adjtimex_tv32 (x)
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
 #define LINKAGE
 #else
 #define LINKAGE		static
@@ -65,8 +67,8 @@
 
 #include <sysdeps/unix/sysv/linux/adjtime.c>
 
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-symbol_version (__adjtime_tv32, adjtime, GLIBC_2.0);
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
+compat_symbol (libc, __adjtime_tv32, adjtime, GLIBC_2.0);
 #endif
 
 #undef TIMEVAL
@@ -117,11 +119,7 @@
   return ret;
 }
 
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-default_symbol_version (__adjtime, adjtime, GLIBC_2.1);
-#else
-weak_alias (__adjtime, adjtime);
-#endif
+versioned_symbol (libc, __adjtime, adjtime, GLIBC_2_1);
 
 extern int __syscall_adjtimex_tv64 (struct timex *tx);
 
@@ -191,11 +189,6 @@
   return ret;
 }
 
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
 strong_alias (__adjtimex_tv64, __adjtimex_tv64p);
-default_symbol_version (__adjtimex_tv64, __adjtimex, GLIBC_2.1);
-default_symbol_version (__adjtimex_tv64p, adjtimex, GLIBC_2.1);
-#else
-weak_alias (__adjtimex_tv64, __adjtimex);
-weak_alias (__adjtimex_tv64, adjtimex);
-#endif
+versioned_symbol (libc, __adjtimex_tv64, __adjtimex, GLIBC_2_1);
+versioned_symbol (libc, __adjtimex_tv64p, adjtimex, GLIBC_2_1);
============================================================
Index: sysdeps/unix/sysv/linux/powerpc/chown.c
--- sysdeps/unix/sysv/linux/powerpc/chown.c	1998/08/24 16:42:37	1.1
+++ sysdeps/unix/sysv/linux/powerpc/chown.c	2000/03/29 09:31:39
@@ -1,5 +1,5 @@
 /* chown() compatibility.
-   Copyright (C) 1998 Free Software Foundation, Inc.
+   Copyright (C) 1998, 2000 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
@@ -124,8 +124,5 @@
    return -1;
 }
 
-#if defined PIC && defined DO_VERSIONING
-default_symbol_version (__chown, chown, GLIBC_2.1);
-#else
-weak_alias (__chown, chown)
-#endif
+#include <shlib-compat.h>
+versioned_symbol (libc, __chown, chown, GLIBC_2_1);
============================================================
Index: sysdeps/unix/sysv/linux/msgctl.c
--- sysdeps/unix/sysv/linux/msgctl.c	2000/01/24 12:28:24	1.5
+++ sysdeps/unix/sysv/linux/msgctl.c	2000/03/29 09:31:39
@@ -24,6 +24,7 @@
 #include <sysdep.h>
 #include <string.h>
 #include <sys/syscall.h>
+#include <shlib-compat.h>
 
 #include "kernel-features.h"
 
@@ -46,14 +47,19 @@
 
 /* Allows to control internal state and destruction of message queue
    objects.  */
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
 int __old_msgctl (int, int, struct __old_msqid_ds *);
+#endif
 int __new_msgctl (int, int, struct msqid_ds *);
 
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
 int
 __old_msgctl (int msqid, int cmd, struct __old_msqid_ds *buf)
 {
   return INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, msqid, cmd, 0, buf);
 }
+compat_symbol (libc, __old_msgctl, msgctl, GLIBC_2_0);
+#endif
 
 int
 __new_msgctl (int msqid, int cmd, struct msqid_ds *buf)
@@ -120,9 +126,4 @@
 #endif
 }
 
-#if defined PIC && DO_VERSIONING
-default_symbol_version (__new_msgctl, msgctl, GLIBC_2.2);
-symbol_version (__old_msgctl, msgctl, GLIBC_2.0);
-#else
-weak_alias (__new_msgctl, msgctl);
-#endif
+versioned_symbol (libc, __new_msgctl, msgctl, GLIBC_2_2);
============================================================
Index: sysdeps/unix/sysv/linux/semctl.c
--- sysdeps/unix/sysv/linux/semctl.c	2000/01/24 12:28:56	1.7
+++ sysdeps/unix/sysv/linux/semctl.c	2000/03/29 09:31:39
@@ -25,9 +25,11 @@
 #include <sysdep.h>
 #include <string.h>
 #include <sys/syscall.h>
+#include <shlib-compat.h>
 
 #include "kernel-features.h"
 
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
 struct __old_semid_ds
 {
   struct __old_ipc_perm sem_perm;	/* operation permission struct */
@@ -39,6 +41,7 @@
   struct sem_undo *__undo;		/* ondo requests on this array */
   unsigned short int sem_nsems;		/* number of semaphores in set */
 };
+#endif
 
 /* Define a `union semun' suitable for Linux here.  */
 union semun
@@ -52,9 +55,12 @@
 
 /* Return identifier for array of NSEMS semaphores associated with
    KEY.  */
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
 int __old_semctl (int semid, int semnum, int cmd, ...);
+#endif
 int __new_semctl (int semid, int semnum, int cmd, ...);
 
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
 int
 __old_semctl (int semid, int semnum, int cmd, ...)
 {
@@ -70,6 +76,8 @@
 
   return INLINE_SYSCALL (ipc, 5, IPCOP_semctl, semid, semnum, cmd, &arg);
 }
+compat_symbol (libc, __old_semctl, semctl, GLIBC_2_0);
+#endif
 
 int
 __new_semctl (int semid, int semnum, int cmd, ...)
@@ -142,9 +150,4 @@
 #endif
 }
 
-#if defined PIC && DO_VERSIONING
-default_symbol_version (__new_semctl, semctl, GLIBC_2.2);
-symbol_version (__old_semctl, semctl, GLIBC_2.0);
-#else
-weak_alias (__new_semctl, semctl);
-#endif
+versioned_symbol (libc, __new_semctl, semctl, GLIBC_2_2);
============================================================
Index: sysdeps/unix/sysv/linux/shmctl.c
--- sysdeps/unix/sysv/linux/shmctl.c	2000/01/24 12:29:30	1.5
+++ sysdeps/unix/sysv/linux/shmctl.c	2000/03/29 09:31:39
@@ -25,9 +25,11 @@
 #include <string.h>
 #include <sys/syscall.h>
 #include <bits/wordsize.h>
+#include <shlib-compat.h>
 
 #include "kernel-features.h"
 
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
 struct __old_shmid_ds
 {
   struct __old_ipc_perm shm_perm;	/* operation permission struct */
@@ -54,13 +56,17 @@
 
 /* Provide operations to control over shared memory segments.  */
 int __old_shmctl (int, int, struct __old_shmid_ds *);
+#endif
 int __new_shmctl (int, int, struct shmid_ds *);
 
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
 int
 __old_shmctl (int shmid, int cmd, struct __old_shmid_ds *buf)
 {
   return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0, buf);
 }
+compat_symbol (libc, __old_shmctl, shmctl, GLIBC_2_0);
+#endif
 
 int
 __new_shmctl (int shmid, int cmd, struct shmid_ds *buf)
@@ -141,9 +147,4 @@
 #endif
 }
 
-#if defined PIC && DO_VERSIONING
-default_symbol_version (__new_shmctl, shmctl, GLIBC_2.2);
-symbol_version (__old_shmctl, shmctl, GLIBC_2.0);
-#else
-weak_alias (__new_shmctl, shmctl);
-#endif
+versioned_symbol (libc, __new_shmctl, shmctl, GLIBC_2_2);
============================================================
Index: sysdeps/unix/sysv/linux/i386/getrlimit.c
--- sysdeps/unix/sysv/linux/i386/getrlimit.c	2000/01/29 12:02:56	1.7
+++ sysdeps/unix/sysv/linux/i386/getrlimit.c	2000/03/29 09:31:39
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000 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
@@ -21,7 +21,7 @@
 
 #include <sysdep.h>
 #include <sys/syscall.h>
-
+#include <shlib-compat.h>
 #include "kernel-features.h"
 
 extern int __syscall_ugetrlimit (unsigned int resource,
@@ -77,8 +77,4 @@
 }
 
 weak_alias (__new_getrlimit, __getrlimit);
-#if defined PIC && DO_VERSIONING
-default_symbol_version (__new_getrlimit, getrlimit, GLIBC_2.2);
-#else
-weak_alias (__new_getrlimit, getrlimit);
-#endif
+versioned_symbol (libc, __new_getrlimit, getrlimit, GLIBC_2_2);
============================================================
Index: sysdeps/unix/sysv/linux/i386/getrlimit64.c
--- sysdeps/unix/sysv/linux/i386/getrlimit64.c	2000/01/29 12:02:56	1.2
+++ sysdeps/unix/sysv/linux/i386/getrlimit64.c	2000/03/29 09:31:39
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000 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
@@ -21,8 +21,5 @@
 #include <sysdeps/generic/getrlimit64.c>
 
 #undef getrlimit64
-#if defined PIC && defined DO_VERSIONING
-default_symbol_version (__new_getrlimit64, getrlimit64, GLIBC_2.2);
-#else
-weak_alias (__new_getrlimit64, getrlimit64);
-#endif
+#include <shlib-compat.h>
+versioned_symbol (libc, __new_getrlimit64, getrlimit64, GLIBC_2_2);
============================================================
Index: sysdeps/unix/sysv/linux/i386/msgctl.c
--- sysdeps/unix/sysv/linux/i386/msgctl.c	2000/02/13 07:43:20	1.2
+++ sysdeps/unix/sysv/linux/i386/msgctl.c	2000/03/29 09:31:39
@@ -26,6 +26,7 @@
 #include <sys/syscall.h>
 
 #include "kernel-features.h"
+#include <shlib-compat.h>
 
 struct __old_msqid_ds
 {
@@ -46,7 +47,9 @@
 
 /* Allows to control internal state and destruction of message queue
    objects.  */
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
 int __old_msgctl (int, int, struct __old_msqid_ds *);
+#endif
 int __new_msgctl (int, int, struct msqid_ds *);
 
 #ifdef __NR_getuid32
@@ -57,11 +60,14 @@
 # endif
 #endif
 
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
 int
 __old_msgctl (int msqid, int cmd, struct __old_msqid_ds *buf)
 {
   return INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, msqid, cmd, 0, buf);
 }
+compat_symbol (libc, __old_msgctl, msgctl, GLIBC_2_0);
+#endif
 
 int
 __new_msgctl (int msqid, int cmd, struct msqid_ds *buf)
@@ -143,9 +149,4 @@
 #endif
 }
 
-#if defined PIC && DO_VERSIONING
-default_symbol_version (__new_msgctl, msgctl, GLIBC_2.2);
-symbol_version (__old_msgctl, msgctl, GLIBC_2.0);
-#else
-weak_alias (__new_msgctl, msgctl);
-#endif
+versioned_symbol (libc, __new_msgctl, msgctl, GLIBC_2_2);
============================================================
Index: sysdeps/unix/sysv/linux/i386/oldgetrlimit64.c
--- sysdeps/unix/sysv/linux/i386/oldgetrlimit64.c	2000/01/24 12:08:02	1.2
+++ sysdeps/unix/sysv/linux/i386/oldgetrlimit64.c	2000/03/29 09:31:39
@@ -18,7 +18,8 @@
 
 /* This is a compatibility file.  If we don't build the libc with
    versioning don't compile this file.  */
-#if defined PIC && DO_VERSIONING
+#include <shlib-compat.h>
+#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_2)
 
 #include <errno.h>
 #include <sys/resource.h>
@@ -48,6 +49,6 @@
   return 0;
 }
 
-symbol_version (__old_getrlimit64, getrlimit64, GLIBC_2.1);
+compat_symbol (libc, __old_getrlimit64, getrlimit64, GLIBC_2_1);
 
-#endif /* PIC && DO_VERSIONING */
+#endif /* SHLIB_COMPAT */
============================================================
Index: sysdeps/unix/sysv/linux/i386/semctl.c
--- sysdeps/unix/sysv/linux/i386/semctl.c	2000/02/13 07:44:12	1.2
+++ sysdeps/unix/sysv/linux/i386/semctl.c	2000/03/29 09:31:39
@@ -27,6 +27,7 @@
 #include <sys/syscall.h>
 
 #include "kernel-features.h"
+#include <shlib-compat.h>
 
 struct __old_semid_ds
 {
@@ -59,9 +60,12 @@
 
 /* Return identifier for array of NSEMS semaphores associated with
    KEY.  */
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
 int __old_semctl (int semid, int semnum, int cmd, ...);
+#endif
 int __new_semctl (int semid, int semnum, int cmd, ...);
 
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
 int
 __old_semctl (int semid, int semnum, int cmd, ...)
 {
@@ -77,6 +81,8 @@
 
   return INLINE_SYSCALL (ipc, 5, IPCOP_semctl, semid, semnum, cmd, &arg);
 }
+compat_symbol (libc, __old_semctl, semctl, GLIBC_2_0);
+#endif
 
 int
 __new_semctl (int semid, int semnum, int cmd, ...)
@@ -165,9 +171,4 @@
 #endif
 }
 
-#if defined PIC && DO_VERSIONING
-default_symbol_version (__new_semctl, semctl, GLIBC_2.2);
-symbol_version (__old_semctl, semctl, GLIBC_2.0);
-#else
-weak_alias (__new_semctl, semctl);
-#endif
+versioned_symbol (libc, __new_semctl, semctl, GLIBC_2_2);
============================================================
Index: sysdeps/unix/sysv/linux/i386/setrlimit.c
--- sysdeps/unix/sysv/linux/i386/setrlimit.c	2000/01/29 12:02:56	1.3
+++ sysdeps/unix/sysv/linux/i386/setrlimit.c	2000/03/29 09:31:39
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000 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
@@ -24,6 +24,7 @@
 #include <sys/syscall.h>
 
 #include "kernel-features.h"
+#include <shlib-compat.h>
 
 extern int __syscall_setrlimit (unsigned int resource,
 				const struct rlimit *rlimits);
@@ -75,8 +76,4 @@
 }
 
 weak_alias (__new_setrlimit, __setrlimit);
-#if defined PIC && DO_VERSIONING
-default_symbol_version (__new_setrlimit, setrlimit, GLIBC_2.2);
-#else
-weak_alias (__new_setrlimit, setrlimit);
-#endif
+versioned_symbol (libc, __new_setrlimit, setrlimit, GLIBC_2_2);
============================================================
Index: sysdeps/unix/sysv/linux/i386/shmctl.c
--- sysdeps/unix/sysv/linux/i386/shmctl.c	2000/02/12 01:17:47	1.3
+++ sysdeps/unix/sysv/linux/i386/shmctl.c	2000/03/29 09:31:40
@@ -27,6 +27,7 @@
 #include <bits/wordsize.h>
 
 #include "kernel-features.h"
+#include <shlib-compat.h>
 
 struct __old_shmid_ds
 {
@@ -61,14 +62,19 @@
 #endif
 
 /* Provide operations to control over shared memory segments.  */
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
 int __old_shmctl (int, int, struct __old_shmid_ds *);
+#endif
 int __new_shmctl (int, int, struct shmid_ds *);
 
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
 int
 __old_shmctl (int shmid, int cmd, struct __old_shmid_ds *buf)
 {
   return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0, buf);
 }
+compat_symbol (libc, __old_shmctl, shmctl, GLIBC_2_0);
+#endif
 
 int
 __new_shmctl (int shmid, int cmd, struct shmid_ds *buf)
@@ -163,9 +169,4 @@
 #endif
 }
 
-#if defined PIC && DO_VERSIONING
-default_symbol_version (__new_shmctl, shmctl, GLIBC_2.2);
-symbol_version (__old_shmctl, shmctl, GLIBC_2.0);
-#else
-weak_alias (__new_shmctl, shmctl);
-#endif
+versioned_symbol (libc, __new_shmctl, shmctl, GLIBC_2_2);

-- 
 Andreas Jaeger
  SuSE Labs aj@suse.de
   private aj@arthur.rhein-neckar.de

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