This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.27.9000-40-g0d40d0e


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  0d40d0ecba3b1e5b8c3b8da01c708fea3948e193 (commit)
      from  383e87c96b9eee3b4b2d78dbeeaa8e2c0db35feb (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=0d40d0ecba3b1e5b8c3b8da01c708fea3948e193

commit 0d40d0ecba3b1e5b8c3b8da01c708fea3948e193
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Tue Feb 6 21:55:08 2018 +0000

    Unify and simplify bits/byteswap.h, bits/byteswap-16.h headers (bug 14508, bug 15512, bug 17082, bug 20530).
    
    We have a general principle of preferring optimizations for library
    facilities to use compiler built-in functions rather than being
    located in library headers, where the compiler can reasonably optimize
    code without needing to know glibc implementation details.
    
    This patch applies this principle to bits/byteswap.h, eliminating all
    the architecture-specific variants and bits/byteswap-16.h.  The
    __bswap_16, __bswap_32 and __bswap_64 interfaces all become inline
    functions, never macros, using the GCC built-in functions where
    available and otherwise a single architecture-independent definition
    using shifts and masking (which compilers may well be able to detect
    and optimize; GCC has detection of various byte-swapping idioms).
    
    The __bswap_constant_32 macro needs to stay around because of uses in
    static initializers within glibc and its tests, and so for consistency
    all __bswap_constant_* are kept rather than just being inlined into
    the old-GCC-or-non-GCC parts of the __bswap_* inline function
    definitions.
    
    Various open bugs are addressed by this cleanup, with caveats about
    exactly what is covered by those bugs and when the bugs applied at
    all.
    
    Bug 14508 reports -Wformat warnings building glibc because __bswap_*
    sometimes returned the wrong types.  Obviously we already don't have
    such warnings any more or the build would be failing, given -Werror,
    and I suspect that bug was originally for wrong types for x86_64, as
    fixed by commit d394eb742a3565d7fe7a4b02710a60b5f219ee64 (glibc 2.17).
    The only case I saw removed by this patch where the types would still
    have been wrong was the non-__GNUC__ case of __bswap_64 in the s390
    header (using unsigned long long int, but uint64_t would be unsigned
    long int for 64-bit).  In any case, the single header consistently
    uses __uintN_t types after this patch, thereby eliminating all such
    bugs.  The existing string/test-endian-types.c test already suffices
    to verify that the types are correct with the compiler used to build
    glibc and its tests.
    
    Bug 15512 reports an error from __bswap_constant_16 with -Werror
    -Wsign-conversion.  I am unable to reproduce this with any GCC version
    supporting -Wsign-conversion - all seem to be able to avoid warning
    for ((x) >> 8) & 0xffu, where x is uint16_t, which while it formally
    does involve an implicit conversion from int to unsigned int, is also
    a case where it should be easy for the compiler to see that the value
    converted is never negative.  But in this patch __bswap_constant_16 is
    changed to use signed 0xff so that no such implicit conversion occurs
    at all, and a test with -Werror -Wsign-conversion is added.
    
    Bug 17082 objects to the use of ({}) statement expressions in these
    macros preventing use at file scope (in C, that's in sizeof etc.; in
    C++, more generally in static initializers).  The particular case of
    these interfaces is fixed by this patch as it changes them to inline
    functions, eliminating all uses of ({}) in bits/byteswap.h, and a
    corresponding testcase is added.  The bug tries to raise a more
    general policy question about use of ({}) in macros in installed
    headers, referring to "many other libc functions" (unspecified which
    functions are being considered).
    
    Since such policy questions belong on libc-alpha, and since there
    *are* macros in installed headers which can't really avoid using ({})
    (where they are type-generic, so can't use an inline function, but
    need a temporary variable, and a few where the interface involves
    returning memory from alloca so can't use an inline function either),
    I propose to consider that bug fixed with this change.  That is
    without prejudice to any other new bugs anyone wishes to file *for
    precisely defined sets of macros* requesting moving away from ({})
    *where it is clearly possible for those interfaces*.  Where ({}) can
    be avoided, typically by use of an inline function, I think that's a
    good idea - that inline functions are typically to be preferred to
    ({}) for header interfaces where such optimizations are useful but the
    interface is suited to being defined using an inline function.
    
    Bug 20530 requests use of __builtin_bswap16 when available (GCC 4.8
    and later), which this patch implements.
    
    Tested for x86_64, and with build-many-glibcs.py.  Also did an x86_64
    test with the __GNUC_PREREQ conditionals changed to "#if 0" to verify
    the old-GCC/non-GCC case in the headers.  (There are already existing
    tests for correctness of results of these interfaces.)
    
    	[BZ #14508]
    	[BZ #15512]
    	[BZ #17082]
    	[BZ #20530]
    	* bits/byteswap.h: Update file comment.  Do not include
    	<bits/byteswap-16.h>.
    	(__bswap_constant_16): Cast result to __uint16_t.  Use signed 0xff
    	constant.
    	(__bswap_16): Define as inline function.
    	(__bswap_constant_32): Reformat definition.
    	(__bswap_32): Always define as inline function, not macro, using
    	__uint32_t.  Use __builtin_bswap32 if [__GNUC_PREREQ (4, 3)],
    	otherwise __bswap_constant_32.
    	(__bswap_constant_64): Reformat definition.  Do not use
    	__extension__ here.
    	(__bswap_64): Always define as inline function, not macro.  Use
    	__extension__ on function definition.  Use __builtin_bswap64 if
    	[__GNUC_PREREQ (4, 3)], otherwise __bswap_constant_64.
    	* string/test-endian-file-scope.c: New file.
    	* string/test-endian-sign-conversion.c: Likewise.
    	* string/Makefile (headers): Remove bits/byteswap-16.h.
    	(tests): Add test-endian-file-scope and
    	test-endian-sign-conversion.
    	(CFLAGS-test-endian-sign-conversion.c): New variable.
    	* bits/byteswap-16.h: Remove file.
    	* sysdeps/ia64/bits/byteswap-16.h: Likewise.
    	* sysdeps/ia64/bits/byteswap.h: Likewise.
    	* sysdeps/m68k/bits/byteswap.h: Likewise.
    	* sysdeps/s390/bits/byteswap-16.h: Likewise.
    	* sysdeps/s390/bits/byteswap.h: Likewise.
    	* sysdeps/tile/bits/byteswap.h: Likewise.
    	* sysdeps/x86/bits/byteswap-16.h: Likewise.
    	* sysdeps/x86/bits/byteswap.h: Likewise.

diff --git a/ChangeLog b/ChangeLog
index 62e2718..9fa22da 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,39 @@
 2018-02-06  Joseph Myers  <joseph@codesourcery.com>
 
+	[BZ #14508]
+	[BZ #15512]
+	[BZ #17082]
+	[BZ #20530]
+	* bits/byteswap.h: Update file comment.  Do not include
+	<bits/byteswap-16.h>.
+	(__bswap_constant_16): Cast result to __uint16_t.  Use signed 0xff
+	constant.
+	(__bswap_16): Define as inline function.
+	(__bswap_constant_32): Reformat definition.
+	(__bswap_32): Always define as inline function, not macro, using
+	__uint32_t.  Use __builtin_bswap32 if [__GNUC_PREREQ (4, 3)],
+	otherwise __bswap_constant_32.
+	(__bswap_constant_64): Reformat definition.  Do not use
+	__extension__ here.
+	(__bswap_64): Always define as inline function, not macro.  Use
+	__extension__ on function definition.  Use __builtin_bswap64 if
+	[__GNUC_PREREQ (4, 3)], otherwise __bswap_constant_64.
+	* string/test-endian-file-scope.c: New file.
+	* string/test-endian-sign-conversion.c: Likewise.
+	* string/Makefile (headers): Remove bits/byteswap-16.h.
+	(tests): Add test-endian-file-scope and
+	test-endian-sign-conversion.
+	(CFLAGS-test-endian-sign-conversion.c): New variable.
+	* bits/byteswap-16.h: Remove file.
+	* sysdeps/ia64/bits/byteswap-16.h: Likewise.
+	* sysdeps/ia64/bits/byteswap.h: Likewise.
+	* sysdeps/m68k/bits/byteswap.h: Likewise.
+	* sysdeps/s390/bits/byteswap-16.h: Likewise.
+	* sysdeps/s390/bits/byteswap.h: Likewise.
+	* sysdeps/tile/bits/byteswap.h: Likewise.
+	* sysdeps/x86/bits/byteswap-16.h: Likewise.
+	* sysdeps/x86/bits/byteswap.h: Likewise.
+
 	[BZ #17721]
 	* misc/sys/cdefs.h [!__GNUC__ && (__cplusplus || (__STDC_VERSION__
 	&& __STDC_VERSION__ >= 199901L))] (__inline): Define to inline.
diff --git a/bits/byteswap.h b/bits/byteswap.h
index f99a6a4..23974e9 100644
--- a/bits/byteswap.h
+++ b/bits/byteswap.h
@@ -1,4 +1,4 @@
-/* Macros to swap the order of bytes in integer values.
+/* Macros and inline functions to swap the order of bytes in integer values.
    Copyright (C) 1997-2018 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -26,87 +26,54 @@
 #include <features.h>
 #include <bits/types.h>
 
-/* Swap bytes in 16 bit value.  */
-#define __bswap_constant_16(x) \
-	((unsigned short int)((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8)))
+/* Swap bytes in 16-bit value.  */
+#define __bswap_constant_16(x)					\
+  ((__uint16_t) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)))
 
-/* Get __bswap_16.  */
-#include <bits/byteswap-16.h>
+static __inline __uint16_t
+__bswap_16 (__uint16_t __bsx)
+{
+#if __GNUC_PREREQ (4, 8)
+  return __builtin_bswap16 (__bsx);
+#else
+  return __bswap_constant_16 (__bsx);
+#endif
+}
 
-/* Swap bytes in 32 bit value.  */
-#define __bswap_constant_32(x) \
-     ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >>  8) |	      \
-      (((x) & 0x0000ff00u) <<  8) | (((x) & 0x000000ffu) << 24))
+/* Swap bytes in 32-bit value.  */
+#define __bswap_constant_32(x)					\
+  ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8)	\
+   | (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24))
 
-#ifdef __GNUC__
-# if __GNUC_PREREQ (4, 3)
-static __inline unsigned int
-__bswap_32 (unsigned int __bsx)
+static __inline __uint32_t
+__bswap_32 (__uint32_t __bsx)
 {
+#if __GNUC_PREREQ (4, 3)
   return __builtin_bswap32 (__bsx);
-}
-# else
-#  define __bswap_32(x) \
-  (__extension__							      \
-   ({ unsigned int __bsx = (x); __bswap_constant_32 (__bsx); }))
-# endif
 #else
-static __inline unsigned int
-__bswap_32 (unsigned int __bsx)
-{
   return __bswap_constant_32 (__bsx);
-}
 #endif
+}
 
-/* Swap bytes in 64 bit value.  */
-#if __GNUC_PREREQ (2, 0)
-# define __bswap_constant_64(x) \
-     (__extension__ ((((x) & 0xff00000000000000ull) >> 56)		      \
-		     | (((x) & 0x00ff000000000000ull) >> 40)		      \
-		     | (((x) & 0x0000ff0000000000ull) >> 24)		      \
-		     | (((x) & 0x000000ff00000000ull) >> 8)		      \
-		     | (((x) & 0x00000000ff000000ull) << 8)		      \
-		     | (((x) & 0x0000000000ff0000ull) << 24)		      \
-		     | (((x) & 0x000000000000ff00ull) << 40)		      \
-		     | (((x) & 0x00000000000000ffull) << 56)))
+/* Swap bytes in 64-bit value.  */
+#define __bswap_constant_64(x)			\
+  ((((x) & 0xff00000000000000ull) >> 56)	\
+   | (((x) & 0x00ff000000000000ull) >> 40)	\
+   | (((x) & 0x0000ff0000000000ull) >> 24)	\
+   | (((x) & 0x000000ff00000000ull) >> 8)	\
+   | (((x) & 0x00000000ff000000ull) << 8)	\
+   | (((x) & 0x0000000000ff0000ull) << 24)	\
+   | (((x) & 0x000000000000ff00ull) << 40)	\
+   | (((x) & 0x00000000000000ffull) << 56))
 
-# if __GNUC_PREREQ (4, 3)
-static __inline __uint64_t
+__extension__ static __inline __uint64_t
 __bswap_64 (__uint64_t __bsx)
 {
+#if __GNUC_PREREQ (4, 3)
   return __builtin_bswap64 (__bsx);
-}
-# else
-#  define __bswap_64(x) \
-     (__extension__							      \
-      ({ union { __extension__ __uint64_t __ll;				      \
-		 unsigned int __l[2]; } __w, __r;			      \
-	 if (__builtin_constant_p (x))					      \
-	   __r.__ll = __bswap_constant_64 (x);				      \
-	 else								      \
-	   {								      \
-	     __w.__ll = (x);						      \
-	     __r.__l[0] = __bswap_32 (__w.__l[1]);			      \
-	     __r.__l[1] = __bswap_32 (__w.__l[0]);			      \
-	   }								      \
-	 __r.__ll; }))
-# endif
 #else
-# define __bswap_constant_64(x) \
-     ((((x) & 0xff00000000000000ull) >> 56)				      \
-      | (((x) & 0x00ff000000000000ull) >> 40)				      \
-      | (((x) & 0x0000ff0000000000ull) >> 24)				      \
-      | (((x) & 0x000000ff00000000ull) >> 8)				      \
-      | (((x) & 0x00000000ff000000ull) << 8)				      \
-      | (((x) & 0x0000000000ff0000ull) << 24)				      \
-      | (((x) & 0x000000000000ff00ull) << 40)				      \
-      | (((x) & 0x00000000000000ffull) << 56))
-
-static __inline __uint64_t
-__bswap_64 (__uint64_t __bsx)
-{
   return __bswap_constant_64 (__bsx);
-}
 #endif
+}
 
 #endif /* _BITS_BYTESWAP_H */
diff --git a/string/Makefile b/string/Makefile
index 1bcc9bb..680431f 100644
--- a/string/Makefile
+++ b/string/Makefile
@@ -24,7 +24,7 @@ include ../Makeconfig
 
 headers		:= string.h bits/string_fortified.h			\
 		   strings.h bits/strings_fortified.h			\
-		   byteswap.h bits/byteswap.h bits/byteswap-16.h	\
+		   byteswap.h bits/byteswap.h				\
 		   endian.h bits/endian.h bits/uintn-identity.h		\
 		   memory.h argz.h envz.h
 
@@ -58,7 +58,8 @@ tests		:= tester inl-tester noinl-tester testcopy test-ffs	\
 		   bug-strtok1 $(addprefix test-,$(strop-tests))	\
 		   bug-envz1 tst-strxfrm2 tst-endian tst-svc2		\
 		   tst-strtok_r bug-strcoll2 tst-cmp tst-xbzero-opt	\
-		   test-endian-types
+		   test-endian-types test-endian-file-scope		\
+		   test-endian-sign-conversion
 
 # This test allocates a lot of memory and can run for a long time.
 xtests = tst-strcoll-overflow
@@ -76,6 +77,7 @@ CFLAGS-stratcliff.c += -fno-builtin
 CFLAGS-test-ffs.c += -fno-builtin
 CFLAGS-tst-inlcall.c += -fno-builtin
 CFLAGS-tst-xbzero-opt.c += -O3
+CFLAGS-test-endian-sign-conversion.c += -Werror -Wsign-conversion
 # BZ 21006: Resolve all functions but at least explicit_bzero at startup.
 # Otherwise the test fails on s390x as the memcpy in prepare_test_buffer is
 # done by loading r4 / r5 with the test_pattern and using store multiple
diff --git a/bits/byteswap-16.h b/string/test-endian-file-scope.c
similarity index 51%
copy from bits/byteswap-16.h
copy to string/test-endian-file-scope.c
index 0fbd8d6..e03063c 100644
--- a/bits/byteswap-16.h
+++ b/string/test-endian-file-scope.c
@@ -1,5 +1,5 @@
-/* Macros to swap the order of bytes in 16-bit integer values.
-   Copyright (C) 2012-2018 Free Software Foundation, Inc.
+/* Test endian.h endian-conversion macros accepted at file scope.
+   Copyright (C) 2018 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
@@ -16,19 +16,29 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifndef _BITS_BYTESWAP_H
-# error "Never use <bits/byteswap-16.h> directly; include <byteswap.h> instead."
-#endif
-
-#ifdef __GNUC__
-# define __bswap_16(x) \
-    (__extension__							      \
-     ({ unsigned short int __bsx = (unsigned short int) (x);		      \
-       __bswap_constant_16 (__bsx); }))
-#else
-static __inline unsigned short int
-__bswap_16 (unsigned short int __bsx)
+#include <endian.h>
+#include <stddef.h>
+
+int i;
+
+size_t s0 = sizeof (htobe16 (i));
+size_t s1 = sizeof (htole16 (i));
+size_t s2 = sizeof (be16toh (i));
+size_t s3 = sizeof (le16toh (i));
+size_t s4 = sizeof (htobe32 (i));
+size_t s5 = sizeof (htole32 (i));
+size_t s6 = sizeof (be32toh (i));
+size_t s7 = sizeof (le32toh (i));
+size_t s8 = sizeof (htobe64 (i));
+size_t s9 = sizeof (htole64 (i));
+size_t s10 = sizeof (be64toh (i));
+size_t s11 = sizeof (le64toh (i));
+
+static int
+do_test (void)
 {
-  return __bswap_constant_16 (__bsx);
+  /* This is a compilation test.  */
+  return 0;
 }
-#endif
+
+#include <support/test-driver.c>
diff --git a/bits/byteswap-16.h b/string/test-endian-sign-conversion.c
similarity index 52%
rename from bits/byteswap-16.h
rename to string/test-endian-sign-conversion.c
index 0fbd8d6..cc6b516 100644
--- a/bits/byteswap-16.h
+++ b/string/test-endian-sign-conversion.c
@@ -1,5 +1,5 @@
-/* Macros to swap the order of bytes in 16-bit integer values.
-   Copyright (C) 2012-2018 Free Software Foundation, Inc.
+/* Test endian.h endian-conversion macros work with -Wsign-conversion.
+   Copyright (C) 2018 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
@@ -16,19 +16,33 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifndef _BITS_BYTESWAP_H
-# error "Never use <bits/byteswap-16.h> directly; include <byteswap.h> instead."
-#endif
+#include <endian.h>
+#include <stdint.h>
 
-#ifdef __GNUC__
-# define __bswap_16(x) \
-    (__extension__							      \
-     ({ unsigned short int __bsx = (unsigned short int) (x);		      \
-       __bswap_constant_16 (__bsx); }))
-#else
-static __inline unsigned short int
-__bswap_16 (unsigned short int __bsx)
+uint16_t u16;
+uint32_t u32;
+uint64_t u64;
+
+static int
+do_test (void)
 {
-  return __bswap_constant_16 (__bsx);
+  /* This is a compilation test.  */
+  u16 = (htobe16 (u16));
+  u16 = (htole16 (u16));
+  u16 = (be16toh (u16));
+  u16 = (le16toh (u16));
+  u32 = (htobe32 (u32));
+  u32 = (htole32 (u32));
+  u32 = (be32toh (u32));
+  u32 = (le32toh (u32));
+  u64 = (htobe64 (u64));
+  u64 = (htole64 (u64));
+  u64 = (be64toh (u64));
+  u64 = (le64toh (u64));
+  (void) u16;
+  (void) u32;
+  (void) u64;
+  return 0;
 }
-#endif
+
+#include <support/test-driver.c>
diff --git a/sysdeps/ia64/bits/byteswap-16.h b/sysdeps/ia64/bits/byteswap-16.h
deleted file mode 100644
index 3c382c8..0000000
--- a/sysdeps/ia64/bits/byteswap-16.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Macros to swap the order of bytes in 16-bit integer values.
-   Copyright (C) 1997-2018 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
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 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
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _BITS_BYTESWAP_H
-# error "Never use <bits/byteswap-16.h> directly; include <byteswap.h> instead."
-#endif
-
-#if defined __GNUC__ && __GNUC__ >= 2
-# define __bswap_16(x) \
-     (__extension__							      \
-      ({ unsigned short int __v, __x = (unsigned short int) (x);	      \
-	 if (__builtin_constant_p (x))					      \
-	   __v = __bswap_constant_16 (__x);				      \
-	 else								      \
-	   __asm__ __volatile__ ("shl %0 = %1, 48 ;;"			      \
-				 "mux1 %0 = %0, @rev ;;"		      \
-				 : "=r" (__v)				      \
-				 : "r" ((unsigned short int) (__x)));	      \
-	 __v; }))
-#else
-/* This is better than nothing.  */
-static __inline unsigned short int
-__bswap_16 (unsigned short int __bsx)
-{
-  return __bswap_constant_16 (__bsx);
-}
-#endif
diff --git a/sysdeps/ia64/bits/byteswap.h b/sysdeps/ia64/bits/byteswap.h
deleted file mode 100644
index 553c72f..0000000
--- a/sysdeps/ia64/bits/byteswap.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/* Macros to swap the order of bytes in integer values.
-   Copyright (C) 1997-2018 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
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 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
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if !defined _BYTESWAP_H && !defined _NETINET_IN_H && !defined _ENDIAN_H
-# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead."
-#endif
-
-#ifndef _BITS_BYTESWAP_H
-#define _BITS_BYTESWAP_H 1
-
-/* Swap bytes in 16 bit value.  */
-#define __bswap_constant_16(x) \
-     ((unsigned short int)((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)))
-
-/* Get __bswap_16.  */
-#include <bits/byteswap-16.h>
-
-/* Swap bytes in 32 bit value.  */
-#define __bswap_constant_32(x) \
-     ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >>  8) |		      \
-      (((x) & 0x0000ff00) <<  8) | (((x) & 0x000000ff) << 24))
-
-#if defined __GNUC__ && __GNUC__ >= 2
-# define __bswap_32(x) \
-     (__extension__							      \
-      ({ unsigned int __v, __x = (x);					      \
-	 if (__builtin_constant_p (x))					      \
-	   __v = __bswap_constant_32 (__x);				      \
-	 else								      \
-	   __asm__ __volatile__ ("shl %0 = %1, 32 ;;"			      \
-				 "mux1 %0 = %0, @rev ;;"		      \
-				 : "=r" (__v)				      \
-				 : "r" ((unsigned int) (__x)));		      \
-	 __v; }))
-#else
-static __inline unsigned int
-__bswap_32 (unsigned int __bsx)
-{
-  return __bswap_constant_32 (__bsx);
-}
-#endif
-
-
-/* Swap bytes in 64 bit value.  */
-#if defined __GNUC__ && __GNUC__ >= 2
-# define __bswap_constant_64(x) \
-     (__extension__ ((((x) & 0xff00000000000000ul) >> 56)		      \
-		     | (((x) & 0x00ff000000000000ul) >>  40)		      \
-		     | (((x) & 0x0000ff0000000000ul) >> 24)		      \
-		     | (((x) & 0x000000ff00000000ul) >> 8)		      \
-		     | (((x) & 0x00000000ff000000ul) << 8)		      \
-		     | (((x) & 0x0000000000ff0000ul) << 24)		      \
-		     | (((x) & 0x000000000000ff00ul) << 40)		      \
-		     | (((x) & 0x00000000000000fful) << 56)))
-
-# define __bswap_64(x) \
-     (__extension__							      \
-      ({ unsigned long int __v, __x = (x);				      \
-	 if (__builtin_constant_p (x))					      \
-	   __v = __bswap_constant_64 (__x);				      \
-	 else								      \
-	   __asm__ __volatile__ ("mux1 %0 = %1, @rev ;;"		      \
-				 : "=r" (__v)				      \
-				 : "r" ((unsigned long int) (__x)));	      \
-	 __v; }))
-
-#else
-# define __bswap_constant_64(x) \
-     ((((x) & 0xff00000000000000ul) >> 56)				      \
-      | (((x) & 0x00ff000000000000ul) >>  40)				      \
-      | (((x) & 0x0000ff0000000000ul) >> 24)				      \
-      | (((x) & 0x000000ff00000000ul) >> 8)				      \
-      | (((x) & 0x00000000ff000000ul) << 8)				      \
-      | (((x) & 0x0000000000ff0000ul) << 24)				      \
-      | (((x) & 0x000000000000ff00ul) << 40)				      \
-      | (((x) & 0x00000000000000fful) << 56))
-
-static __inline unsigned long int
-__bswap_64 (unsigned long int __bsx)
-{
-  return __bswap_constant_64 (__bsx);
-}
-#endif
-
-#endif /* _BITS_BYTESWAP_H */
diff --git a/sysdeps/m68k/bits/byteswap.h b/sysdeps/m68k/bits/byteswap.h
deleted file mode 100644
index 3055230..0000000
--- a/sysdeps/m68k/bits/byteswap.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* Macros to swap the order of bytes in integer values.  m68k version.
-   Copyright (C) 1997-2018 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
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 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
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if !defined _BYTESWAP_H && !defined _NETINET_IN_H && !defined _ENDIAN_H
-# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead."
-#endif
-
-#ifndef _BITS_BYTESWAP_H
-#define _BITS_BYTESWAP_H 1
-
-/* Swap bytes in 16 bit value.  We don't provide an assembler version
-   because GCC is smart enough to generate optimal assembler output, and
-   this allows for better cse.  */
-#define __bswap_constant_16(x) \
-  ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8))
-
-static __always_inline unsigned short int
-__bswap_16 (unsigned short int __bsx)
-{
-  return __bswap_constant_16 (__bsx);
-}
-
-/* Swap bytes in 32 bit value.  */
-#define __bswap_constant_32(x) \
-  ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >>  8) |		      \
-   (((x) & 0x0000ff00u) <<  8) | (((x) & 0x000000ffu) << 24))
-
-#if !defined(__mcoldfire__)
-static __always_inline unsigned int
-__bswap_32 (unsigned int __bsx)
-{
-  if (__builtin_constant_p (__bsx))
-    return __bswap_constant_32 (__bsx);
-  __asm__ __volatile__ ("ror%.w %#8, %0;"
-			"swap %0;"
-			"ror%.w %#8, %0"
-			: "+d" (__bsx));
-  return __bsx;
-}
-#else
-static __always_inline unsigned int
-__bswap_32 (unsigned int __bsx)
-{
-  return __bswap_constant_32 (__bsx);
-}
-#endif
-
-#if defined __GNUC__ && __GNUC__ >= 2
-/* Swap bytes in 64 bit value.  */
-# define __bswap_constant_64(x) \
-  __extension__								      \
-  ((((x) & 0xff00000000000000ull) >> 56)				      \
-   | (((x) & 0x00ff000000000000ull) >> 40)				      \
-   | (((x) & 0x0000ff0000000000ull) >> 24)				      \
-   | (((x) & 0x000000ff00000000ull) >> 8)				      \
-   | (((x) & 0x00000000ff000000ull) << 8)				      \
-   | (((x) & 0x0000000000ff0000ull) << 24)				      \
-   | (((x) & 0x000000000000ff00ull) << 40)				      \
-   | (((x) & 0x00000000000000ffull) << 56))
-
-/* Swap bytes in 64 bit value.  */
-__extension__
-static __always_inline unsigned long long
-__bswap_64 (unsigned long long __bsx)
-{
-  if (__builtin_constant_p (__bsx))
-    return __bswap_constant_64 (__bsx);
-  return (__bswap_32 (__bsx >> 32)
-	  | ((unsigned long long) __bswap_32 (__bsx) << 32));
-}
-#endif
-
-#endif /* _BITS_BYTESWAP_H */
diff --git a/sysdeps/s390/bits/byteswap-16.h b/sysdeps/s390/bits/byteswap-16.h
deleted file mode 100644
index d1e67d3..0000000
--- a/sysdeps/s390/bits/byteswap-16.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* Macros to swap the order of bytes in 16-bit integer values.  s390 version
-   Copyright (C) 2012-2018 Free Software Foundation, Inc.
-   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 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
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _BITS_BYTESWAP_H
-# error "Never use <bits/byteswap-16.h> directly; include <byteswap.h> instead."
-#endif
-
-#include <bits/wordsize.h>
-
-/* Swap bytes in 16 bit value. */
-#if defined __GNUC__ && __GNUC__ >= 2
-# if __WORDSIZE == 64
-#  define __bswap_16(x) \
-     (__extension__							      \
-      ({ unsigned short int __v, __x = (unsigned short int) (x);	      \
-	 if (__builtin_constant_p (x))					      \
-	   __v = __bswap_constant_16 (__x);				      \
-	 else {								      \
-	   unsigned short int __tmp = (unsigned short int) (__x);             \
-	   __asm__ __volatile__ (                                             \
-	      "lrvh %0,%1"                                                    \
-	      : "=&d" (__v) : "m" (__tmp) );                                  \
-	 }                                                                    \
-	 __v; }))
-# else
-#  define __bswap_16(x) \
-     (__extension__							      \
-      ({ unsigned short int __v, __x = (unsigned short int) (x);	      \
-	 if (__builtin_constant_p (x))					      \
-	   __v = __bswap_constant_16 (__x);				      \
-	 else {								      \
-	   unsigned short int __tmp = (unsigned short int) (__x);             \
-	   __asm__ __volatile__ (                                             \
-	      "sr   %0,%0\n"                                                  \
-	      "la   1,%1\n"                                                   \
-	      "icm  %0,2,1(1)\n"                                              \
-	      "ic   %0,0(1)"                                                  \
-	      : "=&d" (__v) : "m" (__tmp) : "1");                             \
-	 }                                                                    \
-	 __v; }))
-# endif
-#else
-/* This is better than nothing.  */
-static __inline unsigned short int
-__bswap_16 (unsigned short int __bsx)
-{
-  return __bswap_constant_16 (__bsx);
-}
-#endif
diff --git a/sysdeps/s390/bits/byteswap.h b/sysdeps/s390/bits/byteswap.h
deleted file mode 100644
index 79a6e5f..0000000
--- a/sysdeps/s390/bits/byteswap.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/* Macros to swap the order of bytes in integer values.  s390 version.
-   Copyright (C) 2000-2018 Free Software Foundation, Inc.
-   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 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
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if !defined _BYTESWAP_H && !defined _NETINET_IN_H && !defined _ENDIAN_H
-# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead."
-#endif
-
-#include <bits/wordsize.h>
-
-#ifndef _BITS_BYTESWAP_H
-#define _BITS_BYTESWAP_H 1
-
-#define __bswap_constant_16(x) \
-	((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)))
-
-/* Get __bswap_16.  */
-#include <bits/byteswap-16.h>
-
-/* Swap bytes in 32 bit value.  */
-#define __bswap_constant_32(x) \
-     ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >>  8) |		      \
-      (((x) & 0x0000ff00) <<  8) | (((x) & 0x000000ff) << 24))
-
-#if defined __GNUC__ && __GNUC__ >= 2
-# if __WORDSIZE == 64
-#  define __bswap_32(x) \
-     (__extension__							      \
-      ({ unsigned int __v, __x = (x);					      \
-	 if (__builtin_constant_p (x))					      \
-	   __v = __bswap_constant_32 (__x);				      \
-	 else {								      \
-	   unsigned int __tmp = (unsigned int) (__x);                         \
-	   __asm__ __volatile__ (                                             \
-	      "lrv   %0,%1"                                                   \
-	      : "=&d" (__v) : "m" (__tmp));                                   \
-	 }                                                                    \
-	 __v; }))
-# else
-#  define __bswap_32(x) \
-     (__extension__							      \
-      ({ unsigned int __v, __x = (x);					      \
-	 if (__builtin_constant_p (x))					      \
-	   __v = __bswap_constant_32 (__x);				      \
-	 else {								      \
-	   unsigned int __tmp = (unsigned int) (__x);                         \
-	   __asm__ __volatile__ (                                             \
-	      "la    1,%1\n"                                                  \
-	      "icm   %0,8,3(1)\n"                                             \
-	      "icm   %0,4,2(1)\n"                                             \
-	      "icm   %0,2,1(1)\n"                                             \
-	      "ic    %0,0(1)"                                                 \
-	      : "=&d" (__v) : "m" (__tmp) : "1");                             \
-	 }                                                                    \
-	 __v; }))
-# endif
-#else
-static __inline unsigned int
-__bswap_32 (unsigned int __bsx)
-{
-  return __bswap_constant_32 (__bsx);
-}
-#endif
-
-/* Swap bytes in 64 bit value.  */
-#if defined __GNUC__ && __GNUC__ >= 2
-# define __bswap_constant_64(x) \
-     (__extension__ ((((x) & 0xff00000000000000ul) >> 56)		      \
-		     | (((x) & 0x00ff000000000000ul) >>  40)		      \
-		     | (((x) & 0x0000ff0000000000ul) >> 24)		      \
-		     | (((x) & 0x000000ff00000000ul) >> 8)		      \
-		     | (((x) & 0x00000000ff000000ul) << 8)		      \
-		     | (((x) & 0x0000000000ff0000ul) << 24)		      \
-		     | (((x) & 0x000000000000ff00ul) << 40)		      \
-		     | (((x) & 0x00000000000000fful) << 56)))
-
-# if __WORDSIZE == 64
-#  define __bswap_64(x) \
-     (__extension__							      \
-      ({ unsigned long __w, __x = (x);					      \
-	 if (__builtin_constant_p (x))					      \
-	   __w = __bswap_constant_64 (__x);				      \
-	 else {								      \
-	   unsigned long __tmp = (unsigned long) (__x);                       \
-	   __asm__ __volatile__ (                                             \
-	      "lrvg  %0,%1"                                                   \
-	      : "=&d" (__w) : "m" (__tmp));                                   \
-	 }                                                                    \
-	 __w; }))
-# else
-#  define __bswap_64(x) \
-     __extension__					\
-       ({ union { unsigned long long int __ll;		\
-		  unsigned long int __l[2]; } __w, __r;	\
-	  __w.__ll = (x);				\
-	  __r.__l[0] = __bswap_32 (__w.__l[1]);		\
-	  __r.__l[1] = __bswap_32 (__w.__l[0]);		\
-	  __r.__ll; })
-# endif
-#else
-# define __bswap_constant_64(x) \
-     ((((x) & 0xff00000000000000ull) >> 56)				      \
-      | (((x) & 0x00ff000000000000ull) >> 40)				      \
-      | (((x) & 0x0000ff0000000000ull) >> 24)				      \
-      | (((x) & 0x000000ff00000000ull) >> 8)				      \
-      | (((x) & 0x00000000ff000000ull) << 8)				      \
-      | (((x) & 0x0000000000ff0000ull) << 24)				      \
-      | (((x) & 0x000000000000ff00ull) << 40)				      \
-      | (((x) & 0x00000000000000ffull) << 56))
-
-__extension__
-static __inline unsigned long long int
-__bswap_64 (unsigned long long int __bsx)
-{
-  return __bswap_constant_64 (__bsx);
-}
-#endif
-
-#endif /* _BITS_BYTESWAP_H */
diff --git a/sysdeps/tile/bits/byteswap.h b/sysdeps/tile/bits/byteswap.h
deleted file mode 100644
index ab36055..0000000
--- a/sysdeps/tile/bits/byteswap.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (C) 2011-2018 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 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
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if !defined _BYTESWAP_H && !defined _NETINET_IN_H && !defined _ENDIAN_H
-# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead."
-#endif
-
-#ifndef _BITS_BYTESWAP_H
-#define _BITS_BYTESWAP_H 1
-
-#include <bits/types.h>
-
-/* gcc __builtin_bswap64() can constant-fold, etc, so always use it. */
-#define __bswap_16(x) ((unsigned short)(__builtin_bswap32(x) >> 16))
-#define __bswap_32(x) ((unsigned int)__builtin_bswap32(x))
-#define __bswap_64(x) ((__uint64_t)__builtin_bswap64(x))
-
-#define __bswap_constant_16(x) __bswap_16(x)
-#define __bswap_constant_32(x) __bswap_32(x)
-#define __bswap_constant_64(x) __bswap_64(x)
-
-#endif /* _BITS_BYTESWAP_H */
diff --git a/sysdeps/x86/bits/byteswap-16.h b/sysdeps/x86/bits/byteswap-16.h
deleted file mode 100644
index 34af790..0000000
--- a/sysdeps/x86/bits/byteswap-16.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Macros to swap the order of bytes in 16-bit integer values.
-   Copyright (C) 2012-2018 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
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 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
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _BITS_BYTESWAP_H
-# error "Never use <bits/byteswap-16.h> directly; include <byteswap.h> instead."
-#endif
-
-#ifdef __GNUC__
-# if __GNUC__ >= 2
-#  define __bswap_16(x) \
-     (__extension__							      \
-      ({ unsigned short int __v, __x = (unsigned short int) (x);	      \
-	 if (__builtin_constant_p (__x))				      \
-	   __v = __bswap_constant_16 (__x);				      \
-	 else								      \
-	   __asm__ ("rorw $8, %w0"					      \
-		    : "=r" (__v)					      \
-		    : "0" (__x)						      \
-		    : "cc");						      \
-	 __v; }))
-# else
-/* This is better than nothing.  */
-#  define __bswap_16(x) \
-     (__extension__							      \
-      ({ unsigned short int __x = (unsigned short int) (x);		      \
-	 __bswap_constant_16 (__x); }))
-# endif
-#else
-static __inline unsigned short int
-__bswap_16 (unsigned short int __bsx)
-{
-  return __bswap_constant_16 (__bsx);
-}
-#endif
diff --git a/sysdeps/x86/bits/byteswap.h b/sysdeps/x86/bits/byteswap.h
deleted file mode 100644
index 23c8f42..0000000
--- a/sysdeps/x86/bits/byteswap.h
+++ /dev/null
@@ -1,155 +0,0 @@
-/* Macros to swap the order of bytes in integer values.
-   Copyright (C) 1997-2018 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
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 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
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if !defined _BYTESWAP_H && !defined _NETINET_IN_H && !defined _ENDIAN_H
-# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead."
-#endif
-
-#ifndef _BITS_BYTESWAP_H
-#define _BITS_BYTESWAP_H 1
-
-#include <features.h>
-#include <bits/types.h>
-#include <bits/wordsize.h>
-
-/* Swap bytes in 16 bit value.  */
-#define __bswap_constant_16(x) \
-     ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)))
-
-/* Get __bswap_16.  */
-#include <bits/byteswap-16.h>
-
-/* Swap bytes in 32 bit value.  */
-#define __bswap_constant_32(x) \
-     ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >>  8) |		      \
-      (((x) & 0x0000ff00) <<  8) | (((x) & 0x000000ff) << 24))
-
-#ifdef __GNUC__
-# if __GNUC_PREREQ (4, 3)
-static __inline unsigned int
-__bswap_32 (unsigned int __bsx)
-{
-  return __builtin_bswap32 (__bsx);
-}
-# elif __GNUC__ >= 2
-#  if __WORDSIZE == 64 || (defined __i486__ || defined __pentium__	      \
-			   || defined __pentiumpro__ || defined __pentium4__  \
-			   || defined __k8__ || defined __athlon__	      \
-			   || defined __k6__ || defined __nocona__	      \
-			   || defined __core2__ || defined __geode__	      \
-			   || defined __amdfam10__)
-/* To swap the bytes in a word the i486 processors and up provide the
-   `bswap' opcode.  On i386 we have to use three instructions.  */
-#   define __bswap_32(x) \
-      (__extension__							      \
-       ({ unsigned int __v, __x = (x);					      \
-	  if (__builtin_constant_p (__x))				      \
-	    __v = __bswap_constant_32 (__x);				      \
-	  else								      \
-	    __asm__ ("bswap %0" : "=r" (__v) : "0" (__x));		      \
-	  __v; }))
-#  else
-#   define __bswap_32(x)						      \
-      (__extension__							      \
-       ({ unsigned int __v, __x = (x);					      \
-	  if (__builtin_constant_p (__x))				      \
-	    __v = __bswap_constant_32 (__x);				      \
-	  else								      \
-	    __asm__ ("rorw $8, %w0;"					      \
-		     "rorl $16, %0;"					      \
-		     "rorw $8, %w0"					      \
-		     : "=r" (__v)					      \
-		     : "0" (__x)					      \
-		     : "cc");						      \
-	  __v; }))
-#  endif
-# else
-#  define __bswap_32(x) \
-     (__extension__							      \
-      ({ unsigned int __x = (x); __bswap_constant_32 (__x); }))
-# endif
-#else
-static __inline unsigned int
-__bswap_32 (unsigned int __bsx)
-{
-  return __bswap_constant_32 (__bsx);
-}
-#endif
-
-
-#if __GNUC_PREREQ (2, 0)
-/* Swap bytes in 64 bit value.  */
-# define __bswap_constant_64(x) \
-     (__extension__ ((((x) & 0xff00000000000000ull) >> 56)		      \
-		     | (((x) & 0x00ff000000000000ull) >> 40)		      \
-		     | (((x) & 0x0000ff0000000000ull) >> 24)		      \
-		     | (((x) & 0x000000ff00000000ull) >> 8)		      \
-		     | (((x) & 0x00000000ff000000ull) << 8)		      \
-		     | (((x) & 0x0000000000ff0000ull) << 24)		      \
-		     | (((x) & 0x000000000000ff00ull) << 40)		      \
-		     | (((x) & 0x00000000000000ffull) << 56)))
-
-# if __GNUC_PREREQ (4, 3)
-static __inline __uint64_t
-__bswap_64 (__uint64_t __bsx)
-{
-  return __builtin_bswap64 (__bsx);
-}
-# elif __WORDSIZE == 64
-#  define __bswap_64(x) \
-     (__extension__							      \
-      ({ __uint64_t __v, __x = (x);					      \
-	 if (__builtin_constant_p (__x))				      \
-	   __v = __bswap_constant_64 (__x);				      \
-	 else								      \
-	   __asm__ ("bswap %q0" : "=r" (__v) : "0" (__x));		      \
-	 __v; }))
-# else
-#  define __bswap_64(x) \
-     (__extension__                                                           \
-      ({ union { __extension__ __uint64_t __ll;		                      \
-		 unsigned int __l[2]; } __w, __r;                             \
-	 if (__builtin_constant_p (x))                                        \
-	   __r.__ll = __bswap_constant_64 (x);                                \
-	 else                                                                 \
-	   {                                                                  \
-	     __w.__ll = (x);                                                  \
-	     __r.__l[0] = __bswap_32 (__w.__l[1]);                            \
-	     __r.__l[1] = __bswap_32 (__w.__l[0]);                            \
-	   }                                                                  \
-	 __r.__ll; }))
-# endif
-#else
-# define __bswap_constant_64(x) \
-     ((((x) & 0xff00000000000000ull) >> 56)				      \
-      | (((x) & 0x00ff000000000000ull) >> 40)				      \
-      | (((x) & 0x0000ff0000000000ull) >> 24)				      \
-      | (((x) & 0x000000ff00000000ull) >> 8)				      \
-      | (((x) & 0x00000000ff000000ull) << 8)				      \
-      | (((x) & 0x0000000000ff0000ull) << 24)				      \
-      | (((x) & 0x000000000000ff00ull) << 40)				      \
-      | (((x) & 0x00000000000000ffull) << 56))
-
-static __inline __uint64_t
-__bswap_64 (__uint64_t __bsx)
-{
-  return __bswap_constant_64 (__bsx);
-}
-#endif
-
-#endif /* _BITS_BYTESWAP_H */

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                          |   34 +++++
 bits/byteswap-16.h                                 |   34 -----
 bits/byteswap.h                                    |  101 +++++---------
 string/Makefile                                    |    6 +-
 .../test-endian-file-scope.c                       |   31 +++--
 .../test-endian-sign-conversion.c                  |   27 +++-
 sysdeps/ia64/bits/byteswap-16.h                    |   42 ------
 sysdeps/ia64/bits/byteswap.h                       |  100 -------------
 sysdeps/m68k/bits/byteswap.h                       |   88 -----------
 sysdeps/s390/bits/byteswap-16.h                    |   65 --------
 sysdeps/s390/bits/byteswap.h                       |  134 -----------------
 sysdeps/tile/bits/byteswap.h                       |   37 -----
 sysdeps/x86/bits/byteswap-16.h                     |   49 ------
 sysdeps/x86/bits/byteswap.h                        |  155 --------------------
 14 files changed, 108 insertions(+), 795 deletions(-)
 delete mode 100644 bits/byteswap-16.h
 copy posix/test-ssize-max.c => string/test-endian-file-scope.c (63%)
 copy inet/test-hnto-types.c => string/test-endian-sign-conversion.c (65%)
 delete mode 100644 sysdeps/ia64/bits/byteswap-16.h
 delete mode 100644 sysdeps/ia64/bits/byteswap.h
 delete mode 100644 sysdeps/m68k/bits/byteswap.h
 delete mode 100644 sysdeps/s390/bits/byteswap-16.h
 delete mode 100644 sysdeps/s390/bits/byteswap.h
 delete mode 100644 sysdeps/tile/bits/byteswap.h
 delete mode 100644 sysdeps/x86/bits/byteswap-16.h
 delete mode 100644 sysdeps/x86/bits/byteswap.h


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]