From: "Valdis Klētnieks" <valdis.kletnieks@vt.edu>
To: Masahiro Yamada <masahiroy@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
X86 ML <x86@kernel.org>
Subject: Re: x86 - weird cross-compile build problem with try-run next-20210602
Date: Sat, 05 Jun 2021 06:50:43 -0400 [thread overview]
Message-ID: <602426.1622890243@turing-police> (raw)
In-Reply-To: <CAK7LNATbWnduSfqehJ7yMjxCbkrM87aojDCdQ79J+kXiTaZ-fQ@mail.gmail.com>
On Sat, 05 Jun 2021 17:19:30 +0900, Masahiro Yamada said:
> > Anybody have a clue why $(x32_ld_ok) is null rather than 'y' or 'n'?
>
>
> What command did you run?
>
> I see this warning message for 'make install' for example.
>
> $ make install
> arch/x86/Makefile:148: CONFIG_X86_X32 enabled but no binutils support
> Please add one more debug line:
> $(warning need-compiler is +$(need-compiler)+)
> and what will you get?
>
Bingo.
arch/x86/Makefile:143: need-compiler is ++ x32_ld_ok is ++ with CC=(.... same as before)
And it was hitting on a 'make kernelrelease'
805b2e1d427aa (Masahiro Yamada 2021-02-28 15:10:28 +0900 275) # is an exception where build artifacts may be updated. This must be fixed.
805b2e1d427aa (Masahiro Yamada 2021-02-28 15:10:28 +0900 276) no-compiler-targets := $(no-dot-config-targets) install dtbs_install \
805b2e1d427aa (Masahiro Yamada 2021-02-28 15:10:28 +0900 277) headers_install modules_install kernelrelease image_name
993bdde945478 (Masahiro Yamada 2021-02-28 15:10:25 +0900 278) no-sync-config-targets := $(no-dot-config-targets) %install kernelrelease \
I suspect it's this:
# Include this also for config targets because some architectures need
# cc-cross-prefix to determine CROSS_COMPILE.
+ifdef need-compiler
include $(srctree)/scripts/Makefile.compiler
+endif
and as a result, try-run isn't defined when we get into the ifdef CONFIG_X86_32
chunk in arch/x86/Makefile, which silently fails and returns a null. I added
more debugging to double-check...
ifdef CONFIG_X86_X32
x32_ld_ok := $(call try-run,\
/bin/echo -e '1: .quad 1b' | \
$(CC) $(KBUILD_AFLAGS) -c -x assembler -o "$$TMP" - && \
$(OBJCOPY) -O elf32-x86-64 "$$TMP" "$$TMP.o" && \
$(LD) -m elf32_x86_64 "$$TMP.o" -o "$$TMP",y,n)
$(warning need-compiler is +$(need-compiler)+ x32_ld_ok is +$(x32_ld_ok)+ with CC=$(CC) $(KBUILD_AFLAGS) OBJ=$(OBJCOPY) LD=$(LD) )
foo := $(call wombats-r-us )
$(warning foo is +$(foo)+ )
ifeq ($(x32_ld_ok),y)
and that gets:
/usr/src/linux-next/arch/x86/Makefile:143: need-compiler is ++ x32_ld_ok is ++ with CC=x86_64-unknown-linux-gnu-gcc -D__ASSEMBLY__ -fno-PIE -m64 OBJ=x86_64-unknown-linux-gnu-objcopy LD=x86_64-unknown-linux-gnu-ld
/usr/src/linux-next/arch/x86/Makefile:145: foo is ++
/usr/src/linux-next/arch/x86/Makefile:151: CONFIG_X86_X32 enabled but no binutils support
So the call to the undefined 'wombats-r-us' fails silently and returns a null..
and try-run is also failing silently the same way because it's not defined either.
There's only a few uses of try-run outside Makefile.compiler, and it looks like
x32_ld_ok is the only place where Makefile logic changes based on what try-run
returns (the rest just change compiler flags).
Havings said that, I'm not sure what the proper fix is. Move try-run out of Makefile.compiler?
prev parent reply other threads:[~2021-06-05 10:52 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-04 20:33 x86 - weird cross-compile build problem with try-run next-20210602 Valdis Klētnieks
2021-06-05 8:19 ` Masahiro Yamada
2021-06-05 10:50 ` Valdis Klētnieks [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=602426.1622890243@turing-police \
--to=valdis.kletnieks@vt.edu \
--cc=linux-kernel@vger.kernel.org \
--cc=masahiroy@kernel.org \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.