Re: building in 32bit chroot on x86_64 host broken (was: Linux 4.17)

From: Linus Torvalds
Date: Tue Jun 05 2018 - 14:11:51 EST


On Tue, Jun 5, 2018 at 10:51 AM Thomas Backlund <tmb@xxxxxxxxxx> wrote:
>
> Is this intentional ? If so, why ? If not, how can I fix it ?

It shouldn't be intentional. And I don't see anythin ghaving changed
in this area. We still have

config 64BIT
bool "64-bit kernel" if ARCH = "x86"
default ARCH != "i386"

which is what it was in 4.16 too.

Of course, we also have (in the main Makefile)

SUBARCH := $(shell uname -m | sed -e s/i.86/x86/ -e s/x86_64/x86/ \

and

ARCH ?= $(SUBARCH)

so if you don't set ARCH explicitly, it will always translate "i686"
into "x86", so it will default to 64-bit.

None of this is new to 4.17, though. Are you sure you didn't use to
have an ARCH=i386 somewhere?

Because this works for me:

make ARCH=i386 oldconfig

and it's how I have done cross-builds before (although honestly, I
don't do them very often).

But adding Masahiro to the cc in case he sees something I've missed.

Of course, doing a bisect on *when* it broke for you would be good
too. You don't need to actually build the kernel, you can just bisect
the configuration phase (and even automate it with "git bisect run" if
you want to).

Linus