Mike Barcroft <[EMAIL PROTECTED]> writes:
> Wesley Morgan <[EMAIL PROTECTED]> 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?

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_ */

Reply via email to