Some users on FreeBSD noticed a problem when trying to use GCC to
build things in a standalone environment that manifests itself as

/usr/local/lib/gcc/x86_64-unknown-freebsd11.0/6.3.0/include/xmmintrin.h:34 from
/usr/local/lib/gcc/x86_64-unknown-freebsd11.0/6.3.0/include/immintrin.h:29 from
/workspace/src/sys/crypto/aesni/intel_sha256.c:62 
In function '_mm_malloc':
/usr/local/lib/gcc/x86_64-unknown-freebsd11.0/6.3.0/include/mm_malloc.h:39: 
error: 'errno' undeclared (first use in this function)

It turns out the clang version of xmmintrin.h does not include mm_malloc.h 
if !__STDC_HOSTED__ whereas ours unconditionally does so.

Andreas and Alexander have tested the simple patch below that essentially
mirrors what clang does.

Okay?

Gerald


2017-12-09  Gerald Pfeifer  <ger...@pfeifer.com>

        * config/i386/xmmintrin.h: Only #include <mm_malloc.h> if
        __STDC_HOSTED__.

Index: config/i386/xmmintrin.h
===================================================================
--- config/i386/xmmintrin.h     (revision 255523)
+++ config/i386/xmmintrin.h     (working copy)
@@ -31,7 +31,9 @@
 #include <mmintrin.h>
 
 /* Get _mm_malloc () and _mm_free ().  */
+#if __STDC_HOSTED__
 #include <mm_malloc.h>
+#endif
 
 /* Constants for use with _mm_prefetch.  */
 enum _mm_hint

Reply via email to