Date: Wed, 30 May 2018 20:13:44 +0200 From: Dimitry Andric <dim@FreeBSD.org> To: Dan Allen <danallen46@gmail.com> Cc: FreeBSD-STABLE Mailing List <freebsd-stable@freebsd.org> Subject: Re: aesni on i386 w/gcc breaks 11-STABLE kernel build Message-ID: <D6487B52-3F3A-43D7-8632-1E41A05AD2E8@FreeBSD.org> In-Reply-To: <950C1018-1038-4103-A14B-2F252EE24069@gmail.com> References: <950C1018-1038-4103-A14B-2F252EE24069@gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--Apple-Mail=_D76E2569-9A25-4CB9-BCA0-AD2EB6882D61 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii On 30 May 2018, at 04:29, Dan Allen <danallen46@gmail.com> wrote: >=20 > I am building FreeBSD 11 stable i386 on an old Pentium 4 machine. The = clang/llvm build is just horrific in length, so I am substituting gcc by = the appropriate /etc/src.conf defines such as WITHOUT_CLANG, = WITHOUT_CLANG_BOOTSTRAP, WITH_GCC, WITH_GCC_BOOTSTRAP. >=20 > After deleting clang via make delete-old in /usr/src, all of userland = builds fine, but the kernel will not build due to the aesni module. Hmm, I wonder how you managed to build world, as my build ends with the following errors: In file included from /usr/obj/usr/src/tmp/usr/include/ieeefp.h:13, from /usr/src/lib/msun/tests/exponential_test.c:41: /usr/obj/usr/src/tmp/usr/include/machine/ieeefp.h:111:1: error: = "__fldcw" redefined In file included from /usr/src/lib/msun/tests/exponential_test.c:35: /usr/obj/usr/src/tmp/usr/include/fenv.h:98:1: error: this is the = location of the previous definition In file included from /usr/obj/usr/src/tmp/usr/include/ieeefp.h:13, from /usr/src/lib/msun/tests/exponential_test.c:41: /usr/obj/usr/src/tmp/usr/include/machine/ieeefp.h:112:1: error: = "__fldenv" redefined In file included from /usr/src/lib/msun/tests/exponential_test.c:35: /usr/obj/usr/src/tmp/usr/include/fenv.h:99:1: error: this is the = location of the previous definition In file included from /usr/obj/usr/src/tmp/usr/include/ieeefp.h:13, from /usr/src/lib/msun/tests/exponential_test.c:41: /usr/obj/usr/src/tmp/usr/include/machine/ieeefp.h:114:1: error: = "__fnstcw" redefined In file included from /usr/src/lib/msun/tests/exponential_test.c:35: /usr/obj/usr/src/tmp/usr/include/fenv.h:105:1: error: this is the = location of the previous definition In file included from /usr/obj/usr/src/tmp/usr/include/ieeefp.h:13, from /usr/src/lib/msun/tests/exponential_test.c:41: /usr/obj/usr/src/tmp/usr/include/machine/ieeefp.h:115:1: error: = "__fnstenv" redefined In file included from /usr/src/lib/msun/tests/exponential_test.c:35: /usr/obj/usr/src/tmp/usr/include/fenv.h:104:1: error: this is the = location of the previous definition In file included from /usr/obj/usr/src/tmp/usr/include/ieeefp.h:13, from /usr/src/lib/msun/tests/exponential_test.c:41: /usr/obj/usr/src/tmp/usr/include/machine/ieeefp.h:116:1: error: = "__fnstsw" redefined In file included from /usr/src/lib/msun/tests/exponential_test.c:35: /usr/obj/usr/src/tmp/usr/include/fenv.h:106:1: error: this is the = location of the previous definition *** [exponential_test.o] Error code 1 make[6]: stopped in /usr/src/lib/msun/tests 1 error This is on a cleanly installed 11.2-BETA2, with the following in /etc/src.conf: MK_CLANG=3Dno MK_CLANG_BOOTSTRAP=3Dno MK_CLANG_EXTRAS=3Dno MK_CLANG_FULL=3Dno MK_CLANG_IS_CC=3Dno MK_GCC=3Dyes MK_GCC_BOOTSTRAP=3Dyes MK_GNUCXX=3Dyes MK_LLD=3Dno MK_LLD_BOOTSTRAP=3Dno MK_LLD_IS_LD=3Dno MK_LLDB=3Dno It looks like the macros in fenv.h and ieeefp.h are clashing, and Ngie Cooper worked around it in https://svnweb.freebsd.org/changeset/base/321483, but for some reason only for clang. But even after I applied a band-aid for this, it dies on another part: --- all_subdir_stand --- cc1: warnings being treated as errors /usr/src/stand/i386/gptboot/gptboot.c: In function 'main': /usr/src/stand/i386/gptboot/gptboot.c:258: warning: declaration of = 'autoboot' shadows a global declaration /usr/src/stand/common/bootstrap.h:64: warning: shadowed declaration is = here *** [gptboot.o] Error code 1 make[5]: stopped in /usr/src/stand/i386/gptboot 1 error Here the warning is right, as 'autoboot' is indeed shadowed, though it may not be problematic in practice. > The build break is due to compiling = /usr/src/sys/crypto/aesni/aesni_ghash.c, which in turn #includes = wmmintrin.h, emmintrin.h, and smmintrin.h which are all clang-specific = headers. In this case, you cannot compile it with gcc-in-base, since it is too old to have the right intrinsics headers. > I am rebuilding with MK_CRYPT=3Dno to see if this works around the = problem, but it seems like perhaps just this one aesni module should not = be built rather than all of CRYPT having to be disabled. Probably only the module should be disabled, if the version of gcc is too old. I have no idea where the needed intrinsics headers were added upstream. -Dimitry --Apple-Mail=_D76E2569-9A25-4CB9-BCA0-AD2EB6882D61 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.2 iF0EARECAB0WIQR6tGLSzjX8bUI5T82wXqMKLiCWowUCWw7p2AAKCRCwXqMKLiCW o32IAKDNLJ2gndV8odlwzvWmVJh02E59XwCeKFSwfEhc/XZmgM5mVvB3hZvhibA= =7hqV -----END PGP SIGNATURE----- --Apple-Mail=_D76E2569-9A25-4CB9-BCA0-AD2EB6882D61--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?D6487B52-3F3A-43D7-8632-1E41A05AD2E8>