PATCH: Add bits/byteswap-16.h and use GCC builtin 32/64-bit bswap

Chung-Lin Tang cltang@codesourcery.com
Tue Apr 24 09:32:00 GMT 2012


On 2012/4/7 03:40 AM, H.J. Lu wrote:
> 2012-04-06  H.J. Lu  <hongjiu.lu@intel.com>
> 
> 	* bits/byteswap.h (__bswap_16): Removed.
> 	Include <bits/byteswap-16.h> to get __bswap_16.
> 	(__bswap_32): Use __builtin_bswap32 for GCC >= 4.2.
> 	(__bswap_64): Use __builtin_bswap64 for GCC >= 4.2.
> 	* bits/byteswap-16.h: New file.

For SH, this triggered a build fail, due to those inline C functions
being added to a assembly file (the SH strlen.S use of endian.h) after a
complex include sequence.

Of course, there's nothing wrong with those __bswap* functions. It seems
that string/endian.h includes a bunch of stuff not usable anyways for
assembler, so here's trivial patch to correct this.

Thanks,
Chung-Lin

2012-04-24  Chung-Lin Tang  <cltang@codesourcery.com>

	* string/endian.h: Add !__ASSEMBLER__ condition for including
	conversion interfaces.
-------------- next part --------------
diff --git a/string/endian.h b/string/endian.h
index 0c293f6..51084f1 100644
--- a/string/endian.h
+++ b/string/endian.h
@@ -55,7 +55,7 @@
 #endif
 
 
-#ifdef __USE_BSD
+#if defined __USE_BSD && !defined __ASSEMBLER__
 /* Conversion interfaces.  */
 # include <bits/byteswap.h>
 


More information about the Libc-alpha mailing list