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] |
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] |