On Tue, Oct 01, 2019 at 03:37:49PM +0100, Vincenzo Frascino wrote: > On 10/1/19 3:20 PM, Will Deacon wrote: > > On Tue, Oct 01, 2019 at 03:20:35PM +0100, Vincenzo Frascino wrote: > >> On 10/1/19 2:27 PM, Catalin Marinas wrote: > >>> On Tue, Oct 01, 2019 at 02:14:23PM +0100, Will Deacon wrote: > >>>> On Thu, Sep 26, 2019 at 10:43:38PM +0100, Vincenzo Frascino wrote: > >>>>> +config COMPATCC_IS_ARM_GCC > >>>>> + def_bool $(success,$(COMPATCC) --version | head -n 1 | grep -q > >>>>> "arm-.*-gcc") > >>>> > >>>> I've seen toolchains where the first part of the tuple is "armv7-", so > >>>> they > >>>> won't get detected here. However, do we really need to detect this? If > >>>> somebody passes a duff compiler, then the build will fail in the same > >>>> way as > >>>> if they passed it to CROSS_COMPILE=. > >>> > >>> Not sure what happens if we pass an aarch64 compiler. Can we end up with > >>> a 64-bit compat vDSO? > >>> > >> > >> I agree with Catalin here. The problem is not only when you pass and > >> aarch64 > >> toolchain but even an x86 and so on. > > > > I disagree. What happens if you do: > > > > $ make ARCH=arm64 CROSS_COMPILE=x86_64-linux-gnu- > > > > on your x86 box? > > > > The kernel compilation breaks as follows: > > x86_64-linux-gnu-gcc: error: unrecognized command line option > ‘-mlittle-endian’; > did you mean ‘-fconvert=little-endian’? > /data1/Projects/LinuxKernel/linux/scripts/Makefile.build:265: recipe for > target > 'scripts/mod/empty.o' failed > make[2]: *** [scripts/mod/empty.o] Error 1 > /data1/Projects/LinuxKernel/linux/Makefile:1128: recipe for target 'prepare0' > failed > make[1]: *** [prepare0] Error 2 > make[1]: Leaving directory '/data1/Projects/LinuxKernel/linux-out' > Makefile:179: recipe for target 'sub-make' failed > make: *** [sub-make] Error 2 > > Similar issue in the compat vdso library compilation if I do (without the > check): > > $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- > CROSS_COMPILE_COMPAT=x86_64-linux-gnu- > > With this check the compilation completes correctly but the compat vdso does > not > get built (unless my environment is playing me tricks ;) ).
My point was that we don't attempt to sanitise the compiler passed via CROSS_COMPILE, so I don't think we should do anything special for COMPATCC either. Will

