Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 23 Sep 2002 04:43:01 +0200
From:      marius@alchemy.franken.de
To:        Mike Barcroft <mike@FreeBSD.ORG>
Cc:        Wesley Morgan <morganw@chemikals.org>, current@FreeBSD.ORG, Alexander@Leidinger.net
Subject:   Re: i386 machine/endian.h
Message-ID:  <20020923044301.F96711@newtrinity.default-network.net>
In-Reply-To: <20020922215757.E91924@espresso.q9media.com>; from mike@FreeBSD.ORG on Sun, Sep 22, 2002 at 09:57:57PM -0400
References:  <20020922205448.A80510-100000@volatile.chemikals.org> <20020922214506.D91924@espresso.q9media.com> <20020922215757.E91924@espresso.q9media.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Sep 22, 2002 at 09:57:57PM -0400, Mike Barcroft wrote:
> Mike Barcroft <mike@FreeBSD.org> writes:
> > Wesley Morgan <morganw@chemikals.org> writes:
> > > I've been playing around with lang/icc a bit, and find it quite vexing
> > > that machine/endian.h has macros that are ifdef'd around __GNUC__. The
> > > intel compiler does not like the macros, partly because they are split
> > > across multiple lines and possibly for other reasons.
> > > 
> > > It seems to me that making a header actually _require_ gcc-isms is
> > > something that the FreeBSD team should be working away from... Would it
> > > not be possible to put make some more generic macros available as well?
> > > I'm sure it's not the only instance of similar issues, but making one
> > > header less gcc-dependent is a step in the right direction is it not?
> > 
> > This was my fault.  I wasn't paying attention closely to issues with
> > other compilers.  I've had the attached patch in my local tree for
> > some time, but haven't had a chance to test it with ICC.  Can you
> > confirm it fixes the issues you're seeing?
> 
> I thought about this a little bit more, and the previous patch won't
> do anything unless two headers call <machine/endian.h>.  A new patch
> which is much more likely to work is attached.  Can you try this one
> instead?
> 

Works fine, please commit.


> Best regards,
> Mike Barcroft

> Be careful not to define GCC-specific optimizations in the non-GCC
> case.
> 
> Index: endian.h
> ===================================================================
> RCS file: /work/repo/src/sys/i386/include/endian.h,v
> retrieving revision 1.34
> diff -u -r1.34 endian.h
> --- endian.h	21 Aug 2002 16:19:58 -0000	1.34
> +++ endian.h	23 Sep 2002 01:58:16 -0000
> @@ -117,11 +117,20 @@
>  	return (__byte_swap_word(_x));
>  }
>  
> -#endif /* __GNUC__ */
> -
>  #define	__htonl(x)	__bswap32(x)
>  #define	__htons(x)	__bswap16(x)
>  #define	__ntohl(x)	__bswap32(x)
>  #define	__ntohs(x)	__bswap16(x)
> +
> +#else /* !__GNUC__ */
> +
> +/*
> + * No optimizations are available for this compiler.  Fall back to
> + * non-optimized functions by defining the constant usually used to prevent
> + * redefinition.
> + */
> +#define	_BYTEORDER_FUNC_DEFINED
> +
> +#endif /* __GNUC__ */
>  
>  #endif /* !_MACHINE_ENDIAN_H_ */


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020923044301.F96711>