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