summaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/shmctl.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/shmctl.c')
-rw-r--r--sysdeps/unix/sysv/linux/shmctl.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/sysdeps/unix/sysv/linux/shmctl.c b/sysdeps/unix/sysv/linux/shmctl.c
index 4e76794eff..7514f2a689 100644
--- a/sysdeps/unix/sysv/linux/shmctl.c
+++ b/sysdeps/unix/sysv/linux/shmctl.c
@@ -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 @@ struct __old_shminfo
/* 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 @@ __new_shmctl (int shmid, int cmd, struct shmid_ds *buf)
#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);