This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: PATCH: Add bits/byteswap-16.h and use GCC builtin 32/64-bit bswap
- From: Andreas Jaeger <aj at suse dot com>
- To: libc-alpha at sourceware dot org
- Cc: "Chung-Lin Tang" <cltang at codesourcery dot com>,"H.J. Lu" <hjl dot tools at gmail dot com>
- Date: Tue, 24 Apr 2012 13:19:56 +0200
- Subject: Re: PATCH: Add bits/byteswap-16.h and use GCC builtin 32/64-bit bswap
- References: <20120406194013.GA4689@intel.com> <4F96730D.3080505@codesourcery.com>
On Tuesday, April 24, 2012 11:31:57 Chung-Lin Tang wrote:
> 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.
I wonder whether that's the right approach at all, I see this done only in
<bits/errno.h> and <features.h>.
I suggest to solve this differently for sh.
Currently you do:
#if __BYTE_ORDER == __BIG_ENDIAN
Looking at sysdeps/sh/bits/endian.h, can't you use instead:
#ifndef __LITTLE_ENDIAN__
Andreas
--
Andreas Jaeger aj@{suse.com,opensuse.org} Twitter/Identica: jaegerandi
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn,Jennifer Guild,Felix Imendörffer,HRB16746 (AG Nürnberg)
GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126