bits/byteswap-common.h: import recent headers from glibc
commit6e26587d1734d8071b6132fa9a4a6dc5110e4279
authorAnthony G. Basile <blueness@gentoo.org>
Fri, 25 Mar 2016 20:35:46 +0000 (25 16:35 -0400)
committerWaldemar Brodkorb <wbx@openadk.org>
Thu, 31 Mar 2016 17:37:11 +0000 (31 19:37 +0200)
treec2bbc764d1b9faf181616e3523e8e5338b76d34e
parentfeb9f08cfe8ddd1fd4fb62265e17ee35147ab268
bits/byteswap-common.h: import recent headers from glibc

On systems where uClibc doesn't provide an arch specific byteswap.h,
we fall back on bits/byteswap-common.h.  However, there is a bug
in this header in the __bswap_constant_64(x) macro.  If, for example,
a double is passed, we get 'invalid operands to binary &' in which we
mismatch a 'double' and 'long long unsigned int'.  The newer glibc
headers fix this and so we import them.  Also, since the inclusion of
byteswap.h is not appropriate for assembly code, we guard a portion
of endian.h which uses byteswap.h from inclusion in any assembly.

This is needed, for example, for f2fs-tools 1.6.0 on 32-bit big
endian PowerPC.

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
include/endian.h
libc/sysdeps/linux/common/bits/byteswap-16.h [new file with mode: 0644]
libc/sysdeps/linux/common/bits/byteswap-common.h