Date: Sun, 4 Mar 2018 18:43:34 +0100 From: Dimitry Andric <dim@FreeBSD.org> To: Christian Ullrich <chris@chrullrich.net> Cc: freebsd-stable@freebsd.org Subject: Re: "Cross" building for same architecture, different CPUTYPE Message-ID: <D30A88D2-6DFB-4535-8735-C71A43DEEB6B@FreeBSD.org> In-Reply-To: <2126f358-c827-ecf0-109b-0488c5b155b6@chrullrich.net> References: <2126f358-c827-ecf0-109b-0488c5b155b6@chrullrich.net>
next in thread | previous in thread | raw e-mail | index | archive | help
--Apple-Mail=_082A44D0-C610-4291-87C7-C59B178F2455 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii On 4 Mar 2018, at 18:29, Christian Ullrich <chris@chrullrich.net> wrote: >=20 > I'm trying to buildworld/buildkernel of stable/11 r330373 for an Intel = Atom CPU (CPUTYPE=3Dslm) on a (slightly faster, CPUTYPE=3Dcore-avx2) = build machine. That works fine, but make installkernel on the Atom box = fails with a SIGILL (signal 4) in the "install" command (sorry, no log = or screenshot). >=20 > As far as I can tell, this is because installkernel uses the install = from ...obj.../tmp/legacy/usr/bin, which is built for the host. = Disassembling the binary shows that it uses AVX opcodes. The "main" part = of the build output correctly respects the CPUTYPE override. How are you overriding? As far as I know, the bootstrap-tools are built using NO_CPU_CFLAGS, which disables any cpu-specific CFLAGS. However, this does not work in two cases: 1) If you assign CPUTYPE with =3D instead of ?=3D (in make.conf or = src.conf) 2) If you set -march=3D flags in CFLAGS directly With 1), if you specify CPUTYPE=3D as a variable directly on the make command line, it will effectively disable NO_CPU_CFLAGS. > I suppose I'm doing something wrong here, but what? It must be = possible to build for a different CPU of the same family, right? I even = tried running a cross build (TARGET=3Damd64 TARGET_ARCH=3Damd64), but = since the build host _is_ amd64, the Makefiles laughed at me and only = did the normal build. >=20 > The command that did not work was: >=20 > MAKEOBJDIRPREFIX=3D/usr/obj/slm make CPUTYPE=3Dslm buildworld = buildkernel >=20 > I have CPUTYPE?=3Dcore-avx2 in make.conf, but that should be = irrelevant here. Actually, that *is* relevant for the stages after bootstrap-tools, build-tools and cross-tools. E.g. 4.x and later. Again, this depends on how exactly you are overriding CPUTYPE. -Dimitry --Apple-Mail=_082A44D0-C610-4291-87C7-C59B178F2455 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 iF0EARECAB0WIQR6tGLSzjX8bUI5T82wXqMKLiCWowUCWpwwRgAKCRCwXqMKLiCW o4HuAJ0UTVLA5D1avjuQ75YCgx+sK1CsJACg2m3rMK5FRYzdmZmGjs7KjpLFiCE= =jNgg -----END PGP SIGNATURE----- --Apple-Mail=_082A44D0-C610-4291-87C7-C59B178F2455--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?D30A88D2-6DFB-4535-8735-C71A43DEEB6B>