diff options
| author | Ulrich Drepper <drepper@redhat.com> | 2000-02-11 19:44:58 +0000 |
|---|---|---|
| committer | Ulrich Drepper <drepper@redhat.com> | 2000-02-11 19:44:58 +0000 |
| commit | cd090f718fe308b9d19779abec98cfc0248f92fc (patch) | |
| tree | 489d2765269319ea2cece03ec5c212862a004cf8 | |
| parent | b168cff285692e8cc7ba1f2f9646f4438e75f909 (diff) | |
| download | glibc-cd090f718fe308b9d19779abec98cfc0248f92fc.tar.xz glibc-cd090f718fe308b9d19779abec98cfc0248f92fc.zip | |
Update.
2000-02-01 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/getresgid.c: Move...
* sysdeps/unix/sysv/linux/i386/getresgid.c: ...here.
(getresgid): Use getresgid32 if __libc_missing_32bit_uids
is -1 or 0.
* sysdeps/unix/sysv/linux/getresuid.c: Move...
* sysdeps/unix/sysv/linux/i386/getresuid.c: ...here.
(getresuid): Use getresuid32 if __libc_missing_32bit_uids
is -1 or 0.
* sysdeps/unix/sysv/linux/i386/getuid.c: Document new tristate
__libc_missing_32bit_uids.
(__getuid): Use 32bit uid syscall if __libc_missing_32bit_uids is
-1 or 0.
* sysdeps/unix/sysv/linux/i386/chown.c (__real_chown): Likewise.
* sysdeps/unix/sysv/linux/i386/fchown.c (__fchown): Likewise.
* sysdeps/unix/sysv/linux/i386/getegid.c (__getegid): Likewise.
* sysdeps/unix/sysv/linux/i386/geteuid.c (__geteuid): Likewise.
* sysdeps/unix/sysv/linux/i386/getgroups.c (__getgroups): Likewise.
* sysdeps/unix/sysv/linux/i386/getgid.c (__getgid): Likewise.
* sysdeps/unix/sysv/linux/i386/lchown.c (__lchown): Likewise.
* sysdeps/unix/sysv/linux/i386/setfsgid.c (setfsgid): Likewise.
* sysdeps/unix/sysv/linux/i386/setfsuid.c (setfsuid): Likewise.
* sysdeps/unix/sysv/linux/i386/setgid.c (__setgid): Likewise.
* sysdeps/unix/sysv/linux/i386/setgroups.c (setgroups): Likewise.
* sysdeps/unix/sysv/linux/i386/setregid.c (__setregid): Likewise.
* sysdeps/unix/sysv/linux/i386/setresgid.c (setresgid): Likewise.
* sysdeps/unix/sysv/linux/i386/setresuid.c (__setresuid): Likewise.
* sysdeps/unix/sysv/linux/i386/setreuid.c (__setreuid): Likewise.
* sysdeps/unix/sysv/linux/i386/setuid.c (__setuid): Likewise.
* sysdeps/unix/sysv/linux/m68k/chown.c (__chown): Likewise.
* sysdeps/unix/sysv/linux/arm/getresuid.c: New file.
* sysdeps/unix/sysv/linux/arm/getresgid.c: New file.
* sysdeps/unix/sysv/linux/arm/msgctl.c: New file.
* sysdeps/unix/sysv/linux/arm/semctl.c: New file.
* sysdeps/unix/sysv/linux/arm/shmctl.c: New file.
* sysdeps/unix/sysv/linux/i386/msgctl.c: New file.
* sysdeps/unix/sysv/linux/i386/semctl.c: New file.
* sysdeps/unix/sysv/linux/i386/shmctl.c: New file.
* sysdeps/unix/sysv/linux/m68k/getresgid.c: New file.
* sysdeps/unix/sysv/linux/m68k/getresuid.c: New file.
* sysdeps/unix/sysv/linux/m68k/msgctl.c: New file.
* sysdeps/unix/sysv/linux/m68k/semctl.c: New file.
* sysdeps/unix/sysv/linux/m68k/shmctl.c: New file.
* sysdeps/unix/sysv/linux/sparc/sparc32/msgctl.c: New file.
* sysdeps/unix/sysv/linux/sparc/sparc32/semctl.c: New file.
* sysdeps/unix/sysv/linux/sparc/sparc32/shmctl.c: New file.
* sysdeps/unix/sysv/linux/mips/syscalls.list (getresuid):
Make syscall directly, no stubs needed.
(getresgid): Likewise.
* sysdeps/unix/sysv/linux/powerpc/syscalls.list (getresuid):
Likewise.
(getresgid): Likewise.
39 files changed, 594 insertions, 27 deletions
@@ -1,3 +1,57 @@ +2000-02-01 Jakub Jelinek <jakub@redhat.com> + + * sysdeps/unix/sysv/linux/getresgid.c: Move... + * sysdeps/unix/sysv/linux/i386/getresgid.c: ...here. + (getresgid): Use getresgid32 if __libc_missing_32bit_uids + is -1 or 0. + * sysdeps/unix/sysv/linux/getresuid.c: Move... + * sysdeps/unix/sysv/linux/i386/getresuid.c: ...here. + (getresuid): Use getresuid32 if __libc_missing_32bit_uids + is -1 or 0. + * sysdeps/unix/sysv/linux/i386/getuid.c: Document new tristate + __libc_missing_32bit_uids. + (__getuid): Use 32bit uid syscall if __libc_missing_32bit_uids is + -1 or 0. + * sysdeps/unix/sysv/linux/i386/chown.c (__real_chown): Likewise. + * sysdeps/unix/sysv/linux/i386/fchown.c (__fchown): Likewise. + * sysdeps/unix/sysv/linux/i386/getegid.c (__getegid): Likewise. + * sysdeps/unix/sysv/linux/i386/geteuid.c (__geteuid): Likewise. + * sysdeps/unix/sysv/linux/i386/getgroups.c (__getgroups): Likewise. + * sysdeps/unix/sysv/linux/i386/getgid.c (__getgid): Likewise. + * sysdeps/unix/sysv/linux/i386/lchown.c (__lchown): Likewise. + * sysdeps/unix/sysv/linux/i386/setfsgid.c (setfsgid): Likewise. + * sysdeps/unix/sysv/linux/i386/setfsuid.c (setfsuid): Likewise. + * sysdeps/unix/sysv/linux/i386/setgid.c (__setgid): Likewise. + * sysdeps/unix/sysv/linux/i386/setgroups.c (setgroups): Likewise. + * sysdeps/unix/sysv/linux/i386/setregid.c (__setregid): Likewise. + * sysdeps/unix/sysv/linux/i386/setresgid.c (setresgid): Likewise. + * sysdeps/unix/sysv/linux/i386/setresuid.c (__setresuid): Likewise. + * sysdeps/unix/sysv/linux/i386/setreuid.c (__setreuid): Likewise. + * sysdeps/unix/sysv/linux/i386/setuid.c (__setuid): Likewise. + * sysdeps/unix/sysv/linux/m68k/chown.c (__chown): Likewise. + * sysdeps/unix/sysv/linux/arm/getresuid.c: New file. + * sysdeps/unix/sysv/linux/arm/getresgid.c: New file. + * sysdeps/unix/sysv/linux/arm/msgctl.c: New file. + * sysdeps/unix/sysv/linux/arm/semctl.c: New file. + * sysdeps/unix/sysv/linux/arm/shmctl.c: New file. + * sysdeps/unix/sysv/linux/i386/msgctl.c: New file. + * sysdeps/unix/sysv/linux/i386/semctl.c: New file. + * sysdeps/unix/sysv/linux/i386/shmctl.c: New file. + * sysdeps/unix/sysv/linux/m68k/getresgid.c: New file. + * sysdeps/unix/sysv/linux/m68k/getresuid.c: New file. + * sysdeps/unix/sysv/linux/m68k/msgctl.c: New file. + * sysdeps/unix/sysv/linux/m68k/semctl.c: New file. + * sysdeps/unix/sysv/linux/m68k/shmctl.c: New file. + * sysdeps/unix/sysv/linux/sparc/sparc32/msgctl.c: New file. + * sysdeps/unix/sysv/linux/sparc/sparc32/semctl.c: New file. + * sysdeps/unix/sysv/linux/sparc/sparc32/shmctl.c: New file. + * sysdeps/unix/sysv/linux/mips/syscalls.list (getresuid): + Make syscall directly, no stubs needed. + (getresgid): Likewise. + * sysdeps/unix/sysv/linux/powerpc/syscalls.list (getresuid): + Likewise. + (getresgid): Likewise. + 2000-02-11 Ulrich Drepper <drepper@redhat.com> * iconvdata/gconv-modules: Add aliases CN-GB and CN-BIG5. diff --git a/sysdeps/unix/sysv/linux/arm/getresgid.c b/sysdeps/unix/sysv/linux/arm/getresgid.c new file mode 100644 index 0000000000..b703a414cc --- /dev/null +++ b/sysdeps/unix/sysv/linux/arm/getresgid.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/getresgid.c> diff --git a/sysdeps/unix/sysv/linux/arm/getresuid.c b/sysdeps/unix/sysv/linux/arm/getresuid.c new file mode 100644 index 0000000000..0b14cefe34 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arm/getresuid.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/getresuid.c> diff --git a/sysdeps/unix/sysv/linux/arm/msgctl.c b/sysdeps/unix/sysv/linux/arm/msgctl.c new file mode 100644 index 0000000000..9f9b8431a3 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arm/msgctl.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/msgctl.c> diff --git a/sysdeps/unix/sysv/linux/arm/semctl.c b/sysdeps/unix/sysv/linux/arm/semctl.c new file mode 100644 index 0000000000..e9b1a483c9 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arm/semctl.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/semctl.c> diff --git a/sysdeps/unix/sysv/linux/arm/shmctl.c b/sysdeps/unix/sysv/linux/arm/shmctl.c new file mode 100644 index 0000000000..7eac6380dd --- /dev/null +++ b/sysdeps/unix/sysv/linux/arm/shmctl.c @@ -0,0 +1 @@ +#include <sysdeps/unix/sysv/linux/i386/shmctl.c> diff --git a/sysdeps/unix/sysv/linux/i386/chown.c b/sysdeps/unix/sysv/linux/i386/chown.c index 8652d0f097..f6442a4ab6 100644 --- a/sysdeps/unix/sysv/linux/i386/chown.c +++ b/sysdeps/unix/sysv/linux/i386/chown.c @@ -63,7 +63,7 @@ __real_chown (const char *file, uid_t owner, gid_t group) { int saved_errno = errno; # ifdef __NR_chown32 - if (!__libc_missing_32bit_uids) + if (__libc_missing_32bit_uids <= 0) { int result; int saved_errno = errno; @@ -99,7 +99,7 @@ __real_chown (const char *file, uid_t owner, gid_t group) # else /* !__ASSUME_32BITUIDS && ASSUME_LCHOWN_SYSCALL */ # ifdef __NR_chown32 - if (!__libc_missing_32bit_uids) + if (__libc_missing_32bit_uids <= 0) { int result; int saved_errno = errno; diff --git a/sysdeps/unix/sysv/linux/i386/fchown.c b/sysdeps/unix/sysv/linux/i386/fchown.c index 5a84d4170e..f330bbb279 100644 --- a/sysdeps/unix/sysv/linux/i386/fchown.c +++ b/sysdeps/unix/sysv/linux/i386/fchown.c @@ -45,7 +45,7 @@ __fchown (int fd, uid_t owner, gid_t group) return INLINE_SYSCALL (fchown32, 3, fd, owner, group); #else # ifdef __NR_fchown32 - if (!__libc_missing_32bit_uids) + if (__libc_missing_32bit_uids <= 0) { int result; int saved_errno = errno; diff --git a/sysdeps/unix/sysv/linux/i386/getegid.c b/sysdeps/unix/sysv/linux/i386/getegid.c index 05dd15d986..3926af37db 100644 --- a/sysdeps/unix/sysv/linux/i386/getegid.c +++ b/sysdeps/unix/sysv/linux/i386/getegid.c @@ -41,7 +41,7 @@ __getegid (void) return INLINE_SYSCALL (getegid32, 0); #else # ifdef __NR_getegid32 - if (!__libc_missing_32bit_uids) + if (__libc_missing_32bit_uids <= 0) { int result; int saved_errno = errno; diff --git a/sysdeps/unix/sysv/linux/i386/geteuid.c b/sysdeps/unix/sysv/linux/i386/geteuid.c index e2f932a975..f97fd83c7d 100644 --- a/sysdeps/unix/sysv/linux/i386/geteuid.c +++ b/sysdeps/unix/sysv/linux/i386/geteuid.c @@ -41,7 +41,7 @@ __geteuid (void) return INLINE_SYSCALL (geteuid32, 0); #else # ifdef __NR_geteuid32 - if (!__libc_missing_32bit_uids) + if (__libc_missing_32bit_uids <= 0) { int result; int saved_errno = errno; diff --git a/sysdeps/unix/sysv/linux/i386/getgid.c b/sysdeps/unix/sysv/linux/i386/getgid.c index 19794aac36..643abe29d2 100644 --- a/sysdeps/unix/sysv/linux/i386/getgid.c +++ b/sysdeps/unix/sysv/linux/i386/getgid.c @@ -42,7 +42,7 @@ __getgid (void) return INLINE_SYSCALL (getgid32, 0); #else # ifdef __NR_getgid32 - if (!__libc_missing_32bit_uids) + if (__libc_missing_32bit_uids <= 0) { int result; int saved_errno = errno; diff --git a/sysdeps/unix/sysv/linux/i386/getgroups.c b/sysdeps/unix/sysv/linux/i386/getgroups.c index 4ada764f0c..071be4f4b7 100644 --- a/sysdeps/unix/sysv/linux/i386/getgroups.c +++ b/sysdeps/unix/sysv/linux/i386/getgroups.c @@ -56,7 +56,7 @@ __getgroups (int n, gid_t *groups) int i, ngids; __kernel_gid_t kernel_groups[n = MIN (n, __sysconf (_SC_NGROUPS_MAX))]; # ifdef __NR_getgroups32 - if (!__libc_missing_32bit_uids) + if (__libc_missing_32bit_uids <= 0) { int result; int saved_errno = errno; diff --git a/sysdeps/unix/sysv/linux/getresgid.c b/sysdeps/unix/sysv/linux/i386/getresgid.c index ce7d7aa649..f4bd14da22 100644 --- a/sysdeps/unix/sysv/linux/getresgid.c +++ b/sysdeps/unix/sysv/linux/i386/getresgid.c @@ -52,7 +52,7 @@ getresgid (gid_t *rgid, gid_t *egid, gid_t *sgid) __kernel_gid_t k_rgid, k_egid, k_sgid; int result; # ifdef __NR_getresgid32 - if (!__libc_missing_32bit_uids) + if (__libc_missing_32bit_uids <= 0) { int r; int saved_errno = errno; diff --git a/sysdeps/unix/sysv/linux/getresuid.c b/sysdeps/unix/sysv/linux/i386/getresuid.c index 465db9cc88..27eca40745 100644 --- a/sysdeps/unix/sysv/linux/getresuid.c +++ b/sysdeps/unix/sysv/linux/i386/getresuid.c @@ -51,7 +51,7 @@ getresuid (uid_t *ruid, uid_t *euid, uid_t *suid) __kernel_uid_t k_ruid, k_euid, k_suid; int result; # ifdef __NR_getresuid32 - if (!__libc_missing_32bit_uids) + if (__libc_missing_32bit_uids <= 0) { int r; int saved_errno = errno; diff --git a/sysdeps/unix/sysv/linux/i386/getuid.c b/sysdeps/unix/sysv/linux/i386/getuid.c index d160e4423a..97fd273805 100644 --- a/sysdeps/unix/sysv/linux/i386/getuid.c +++ b/sysdeps/unix/sysv/linux/i386/getuid.c @@ -30,8 +30,11 @@ extern int __syscall_getuid (void); extern int __syscall_getuid32 (void); # if __ASSUME_32BITUIDS == 0 /* This variable is shared with all files that need to check for 32bit - uids. This is the definition */ -int __libc_missing_32bit_uids; + uids. This is the definition. + -1 if libc does not know yet whether kernel has 32bit uids or not. + 0 if it does have them. + 1 if it does not have them. */ +int __libc_missing_32bit_uids = -1; # endif #endif /* __NR_getuid32 */ @@ -42,7 +45,7 @@ __getuid (void) return INLINE_SYSCALL (getuid32, 0); #else # ifdef __NR_getuid32 - if (!__libc_missing_32bit_uids) + if (__libc_missing_32bit_uids <= 0) { int result; int saved_errno = errno; diff --git a/sysdeps/unix/sysv/linux/i386/lchown.c b/sysdeps/unix/sysv/linux/i386/lchown.c index 2d8e8fb998..6e2bb9d0b9 100644 --- a/sysdeps/unix/sysv/linux/i386/lchown.c +++ b/sysdeps/unix/sysv/linux/i386/lchown.c @@ -46,7 +46,7 @@ __lchown (const char *file, uid_t owner, gid_t group) return INLINE_SYSCALL (lchown32, 3, file, owner, group); # else # ifdef __NR_lchown32 - if (!__libc_missing_32bit_uids) + if (__libc_missing_32bit_uids <= 0) { int result; int saved_errno = errno; diff --git a/sysdeps/unix/sysv/linux/i386/msgctl.c b/sysdeps/unix/sysv/linux/i386/msgctl.c new file mode 100644 index 0000000000..2ff88882c6 --- /dev/null +++ b/sysdeps/unix/sysv/linux/i386/msgctl.c @@ -0,0 +1,151 @@ +/* Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <errno.h> +#include <sys/msg.h> +#include <ipc_priv.h> + +#include <sysdep.h> +#include <string.h> +#include <sys/syscall.h> + +#include "kernel-features.h" + +struct __old_msqid_ds +{ + struct __old_ipc_perm msg_perm; /* structure describing operation permission */ |
