aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-02-11 19:44:58 +0000
committerUlrich Drepper <drepper@redhat.com>2000-02-11 19:44:58 +0000
commitcd090f718fe308b9d19779abec98cfc0248f92fc (patch)
tree489d2765269319ea2cece03ec5c212862a004cf8
parentb168cff285692e8cc7ba1f2f9646f4438e75f909 (diff)
downloadglibc-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.
-rw-r--r--ChangeLog54
-rw-r--r--sysdeps/unix/sysv/linux/arm/getresgid.c1
-rw-r--r--sysdeps/unix/sysv/linux/arm/getresuid.c1
-rw-r--r--sysdeps/unix/sysv/linux/arm/msgctl.c1
-rw-r--r--sysdeps/unix/sysv/linux/arm/semctl.c1
-rw-r--r--sysdeps/unix/sysv/linux/arm/shmctl.c1
-rw-r--r--sysdeps/unix/sysv/linux/i386/chown.c4
-rw-r--r--sysdeps/unix/sysv/linux/i386/fchown.c2
-rw-r--r--sysdeps/unix/sysv/linux/i386/getegid.c2
-rw-r--r--sysdeps/unix/sysv/linux/i386/geteuid.c2
-rw-r--r--sysdeps/unix/sysv/linux/i386/getgid.c2
-rw-r--r--sysdeps/unix/sysv/linux/i386/getgroups.c2
-rw-r--r--sysdeps/unix/sysv/linux/i386/getresgid.c (renamed from sysdeps/unix/sysv/linux/getresgid.c)2
-rw-r--r--sysdeps/unix/sysv/linux/i386/getresuid.c (renamed from sysdeps/unix/sysv/linux/getresuid.c)2
-rw-r--r--sysdeps/unix/sysv/linux/i386/getuid.c9
-rw-r--r--sysdeps/unix/sysv/linux/i386/lchown.c2
-rw-r--r--sysdeps/unix/sysv/linux/i386/msgctl.c151
-rw-r--r--sysdeps/unix/sysv/linux/i386/semctl.c173
-rw-r--r--sysdeps/unix/sysv/linux/i386/setfsgid.c2
-rw-r--r--sysdeps/unix/sysv/linux/i386/setfsuid.c2
-rw-r--r--sysdeps/unix/sysv/linux/i386/setgid.c2
-rw-r--r--sysdeps/unix/sysv/linux/i386/setgroups.c2
-rw-r--r--sysdeps/unix/sysv/linux/i386/setregid.c2
-rw-r--r--sysdeps/unix/sysv/linux/i386/setresgid.c2
-rw-r--r--sysdeps/unix/sysv/linux/i386/setresuid.c2
-rw-r--r--sysdeps/unix/sysv/linux/i386/setreuid.c2
-rw-r--r--sysdeps/unix/sysv/linux/i386/setuid.c2
-rw-r--r--sysdeps/unix/sysv/linux/i386/shmctl.c173
-rw-r--r--sysdeps/unix/sysv/linux/m68k/chown.c2
-rw-r--r--sysdeps/unix/sysv/linux/m68k/getresgid.c1
-rw-r--r--sysdeps/unix/sysv/linux/m68k/getresuid.c1
-rw-r--r--sysdeps/unix/sysv/linux/m68k/msgctl.c1
-rw-r--r--sysdeps/unix/sysv/linux/m68k/semctl.c1
-rw-r--r--sysdeps/unix/sysv/linux/m68k/shmctl.c1
-rw-r--r--sysdeps/unix/sysv/linux/mips/syscalls.list4
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/syscalls.list4
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/msgctl.c1
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/semctl.c1
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/shmctl.c1
39 files changed, 594 insertions, 27 deletions
diff --git a/ChangeLog b/ChangeLog
index 959f1c26cf..ace01c875e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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 */