diff options
-rw-r--r-- | sysdeps/unix/sysdep.h | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/getgroups.c | 6 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h | 11 |
3 files changed, 16 insertions, 5 deletions
diff --git a/sysdeps/unix/sysdep.h b/sysdeps/unix/sysdep.h index c19e98a4c0..4619335d0a 100644 --- a/sysdeps/unix/sysdep.h +++ b/sysdeps/unix/sysdep.h @@ -47,8 +47,8 @@ #ifndef PSEUDO_END #define PSEUDO_END(sym) #endif -#ifndef PSEUDO_END_NOENTRY -#define PSEUDO_END_NOENTRY(sym) +#ifndef PSEUDO_END_NOERRNO +#define PSEUDO_END_NOERRNO(sym) PSEUDO_END(sym) #endif /* Wrappers around system calls should normally inline the system call code. diff --git a/sysdeps/unix/sysv/linux/i386/getgroups.c b/sysdeps/unix/sysv/linux/i386/getgroups.c index 2f42117692..a8bf232989 100644 --- a/sysdeps/unix/sysv/linux/i386/getgroups.c +++ b/sysdeps/unix/sysv/linux/i386/getgroups.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1998, 2000, 2001 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 2000, 2001, 2003 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 @@ -36,7 +36,7 @@ extern int __syscall_getgroups32 (int, __kernel_gid32_t *__unbounded); # if __ASSUME_32BITUIDS == 0 /* This variable is shared with all files that need to check for 32bit uids. */ -extern int __libc_missing_32bit_uids; +extern int __libc_missing_32bit_uids attribute_hidden; # endif #endif /* __NR_getgroups32 */ @@ -64,7 +64,7 @@ __getgroups (int n, gid_t *groups) int saved_errno = errno; result = INLINE_SYSCALL (getgroups32, 2, n, CHECK_N (groups, n)); - if (result == 0 || errno != ENOSYS) + if (result != -1 || errno != ENOSYS) return result; __set_errno (saved_errno); diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h index e2bb8631a3..cd907da26f 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h @@ -35,6 +35,7 @@ /* Linux/SPARC uses a different trap number */ #undef PSEUDO +#undef PSEUDO_NOERRNO #undef ENTRY #define ENTRY(name) \ @@ -101,10 +102,20 @@ SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler) \ nop; \ SYSCALL_ERROR_HANDLER +#define PSEUDO_NOERRNO(name, syscall_name, args) \ + .text; \ + ENTRY(name); \ + LOADSYSCALL(syscall_name); \ + ta 0x6d + #undef PSEUDO_END #define PSEUDO_END(name) \ .size name,.-name +#undef PSEUDO_END_NOERRNO +#define PSEUDO_END_NOERRNO(name) \ + .size name,.-name + #undef END #define END(name) \ .size name,.-name |