From: Ulrich Drepper Date: Wed, 26 Mar 2003 18:15:57 +0000 (+0000) Subject: (__getgroups): Fix the error condition check for the return value of getgroups32. X-Git-Tag: upstream/2.20~12610 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=da058e4542e6aaaef9258f1c94b450f4b32063f0;p=platform%2Fupstream%2Flinaro-glibc.git (__getgroups): Fix the error condition check for the return value of getgroups32. --- diff --git a/sysdeps/unix/sysdep.h b/sysdeps/unix/sysdep.h index c19e98a..4619335 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 2f42117..a8bf232 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 e2bb863..cd907da 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