From 7a8bdff02c8bc80d5068eadf83302595d11f46d4 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Mon, 12 Aug 2002 02:02:20 +0000 Subject: * sunrpc/svc_authux.c (_svcauth_unix): Remove spurious printf (ugh!). * sysdeps/i386/bits/byteswap.h (__bswap_16, __bswap_32, __bswap_64): Evaluate argument exactly once. Remove __volatile__ from asm's. * include/unistd.h: Use libc_hidden_proto for getdomainname and getlogin_r. * sysdeps/generic/getdomain.c: Add libc_hidden_def. * sysdeps/mach/hurd/getdomain.c: Likewise. * sysdeps/unix/getlogin_r.c: Likewise. * sysdeps/mach/hurd/getlogin_r.c: Likewise. * sysdeps/generic/getlogin_r.c: Likewise. * include/rpc/auth_des.h: Use libc_hidden_proto for rtime. * sunrpc/rtime.c: Add libc_hidden_def. * include/string.h: Use libc_hidden_proto for basename. * string/basename.c [_LIBC]: Add libc_hidden_def. * sysdeps/unix/sysv/linux/opensock.c (__opensock): socket -> __socket. * locale/loadarchive.c: munmap -> __munmap throughout. * include/netdb.h: Use libc_hidden_proto for gai_strerror. * sysdeps/posix/gai_strerror.c: Add libc_hidden_def. * sysdeps/generic/gai_strerror.c: Likewise. --- sysdeps/i386/bits/byteswap.h | 58 +++++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 28 deletions(-) (limited to 'sysdeps/i386') diff --git a/sysdeps/i386/bits/byteswap.h b/sysdeps/i386/bits/byteswap.h index d08a342ab7..6812c61e4d 100644 --- a/sysdeps/i386/bits/byteswap.h +++ b/sysdeps/i386/bits/byteswap.h @@ -31,18 +31,20 @@ #if defined __GNUC__ && __GNUC__ >= 2 # define __bswap_16(x) \ (__extension__ \ - ({ register unsigned short int __v; \ - if (__builtin_constant_p (x)) \ - __v = __bswap_constant_16 (x); \ + ({ register unsigned short int __v, __x = (x); \ + if (__builtin_constant_p (__x)) \ + __v = __bswap_constant_16 (__x); \ else \ - __asm__ __volatile__ ("rorw $8, %w0" \ - : "=r" (__v) \ - : "0" ((unsigned short int) (x)) \ - : "cc"); \ + __asm__ ("rorw $8, %w0" \ + : "=r" (__v) \ + : "0" (__x) \ + : "cc"); \ __v; })) #else /* This is better than nothing. */ -# define __bswap_16(x) __bswap_constant_16 (x) +# define __bswap_16(x) \ + (__extension__ \ + ({ register unsigned short int __x = (x); __bswap_constant_16 (__x); })) #endif @@ -55,33 +57,33 @@ /* To swap the bytes in a word the i486 processors and up provide the `bswap' opcode. On i386 we have to use three instructions. */ # if !defined __i486__ && !defined __pentium__ && !defined __pentiumpro__ -# define __bswap_32(x) \ +# define __bswap_32(x) \ (__extension__ \ - ({ register unsigned int __v; \ - if (__builtin_constant_p (x)) \ - __v = __bswap_constant_32 (x); \ + ({ register unsigned int __v, __x = (x); \ + if (__builtin_constant_p (__x)) \ + __v = __bswap_constant_32 (__x); \ else \ - __asm__ __volatile__ ("rorw $8, %w0;" \ - "rorl $16, %0;" \ - "rorw $8, %w0" \ - : "=r" (__v) \ - : "0" ((unsigned int) (x)) \ - : "cc"); \ + __asm__ ("rorw $8, %w0;" \ + "rorl $16, %0;" \ + "rorw $8, %w0" \ + : "=r" (__v) \ + : "0" (__x) \ + : "cc"); \ __v; })) # else # define __bswap_32(x) \ (__extension__ \ - ({ register unsigned int __v; \ - if (__builtin_constant_p (x)) \ - __v = __bswap_constant_32 (x); \ + ({ register unsigned int __v, __x = (x); \ + if (__builtin_constant_p (__x)) \ + __v = __bswap_constant_32 (__x); \ else \ - __asm__ __volatile__ ("bswap %0" \ - : "=r" (__v) \ - : "0" ((unsigned int) (x))); \ + __asm__ ("bswap %0" : "=r" (__v) : "0" (__x)); \ __v; })) # endif #else -# define __bswap_32(x) __bswap_constant_32 (x) +# define __bswap_16(x) \ + (__extension__ \ + ({ register unsigned int __x = (x); __bswap_constant_32 (__x); })) #endif @@ -101,11 +103,11 @@ (__extension__ \ ({ union { __extension__ unsigned long long int __ll; \ unsigned long int __l[2]; } __w, __r; \ - if (__builtin_constant_p (x)) \ - __r.__ll = __bswap_constant_64 (x); \ + __w.__ll = (x); \ + if (__builtin_constant_p (__w.__ll)) \ + __r.__ll = __bswap_constant_64 (__w.__ll); \ else \ { \ - __w.__ll = (x); \ __r.__l[0] = __bswap_32 (__w.__l[1]); \ __r.__l[1] = __bswap_32 (__w.__l[0]); \ } \ -- cgit v1.2.3