From: Randy Dunlap <rdunlap@infradead.org>
To: Michal Marek <mmarek@suse.cz>
Cc: Richard Weinberger <richard.weinberger@gmail.com>,
linux-kbuild@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>,
Sam Ravnborg <sam@ravnborg.org>
Subject: Re: [PATCH v2 3/5] kbuild: Use relative path for $(objtree)
Date: Mon, 09 Jun 2014 16:47:43 -0700 [thread overview]
Message-ID: <5396479F.6030809@infradead.org> (raw)
In-Reply-To: <20140609223922.GA3409@pobox.suse.cz>
On 06/09/14 15:39, Michal Marek wrote:
> On Mon, Jun 09, 2014 at 03:24:11PM -0700, Randy Dunlap wrote:
>> On 06/09/14 15:14, Michal Marek wrote:
>>> Dne 9.6.2014 23:23, Randy Dunlap napsal(a):
>>>> On 06/05/14 08:56, Michal Marek wrote:
>>>>> From d4bc590f8716f7dde6b7bca319097ac30a8cb0b4 Mon Sep 17 00:00:00 2001
>>>>> From: Michal Marek <mmarek@suse.cz>
>>>>> Date: Thu, 5 Jun 2014 17:44:44 +0200
>>>>> Subject: [PATCH] um: Fix for relative objtree when generating x86 headers
>>>>>
>>>>> In an O= build, rely on the generated Makefile to call the main Makefile
>>>>> properly. When building in the source tree, we do not need to specify
>>>>> the -C and O= either. This fixes the problem when $(objtree) is a
>>>>> relative path and the -C changes the directory.
>>>>>
>>>>> Reported-by: Richard Weinberger <richard.weinberger@gmail.com>
>>>>> Signed-off-by: Michal Marek <mmarek@suse.cz>
>>>>> ---
>>>>> arch/um/Makefile | 3 +--
>>>>> 1 file changed, 1 insertion(+), 2 deletions(-)
>>>>>
>>>>> diff --git a/arch/um/Makefile b/arch/um/Makefile
>>>>> index 36e658a..e4b1a96 100644
>>>>> --- a/arch/um/Makefile
>>>>> +++ b/arch/um/Makefile
>>>>> @@ -111,8 +111,7 @@ endef
>>>>> KBUILD_KCONFIG := $(HOST_DIR)/um/Kconfig
>>>>>
>>>>> archheaders:
>>>>> - $(Q)$(MAKE) -C '$(srctree)' KBUILD_SRC= \
>>>>> - ARCH=$(HEADER_ARCH) O='$(objtree)' archheaders
>>>>> + $(Q)$(MAKE) KBUILD_SRC= ARCH=$(HEADER_ARCH) archheaders
>>>>>
>>>>> archprepare: include/generated/user_constants.h
>>>>>
>>>>>
>>>>
>>>> I still get this build error when building uml for i386:
>>>>
>>>> CC arch/x86/um/user-offsets.s
>>>> ../arch/x86/um/user-offsets.c:14:29: fatal error: asm/syscalls_32.h: No such file or directory
>>>> compilation terminated.
>>>> make[2]: *** [arch/x86/um/user-offsets.s] Error 1
>>>
>>> Thanks for testing the patch. I cannot reproduce it though:
>>>
>>> make ARCH=um SUBARCH=i386 O=/dev/shm/li defconfig
>>> make ARCH=um SUBARCH=i386 O=/dev/shm/li
>>
>> That doesn't work for me either. Must be a difference somewhere else.
>> I am using linux-next of 20140606 (latest that I know of) with only your
>> recent patch applied to it.
>
> I checked out next-20140606 and added the fix on top:
>
> $ git cherry-pick d4bc590f8716f7dde6b7bca319097ac30a8cb0b4
> [test cfc8100] um: Fix for relative objtree when generating x86 headers
> 1 file changed, 1 insertion(+), 2 deletions(-)
> $ git rev-parse HEAD^{tree}
> 8fad860b10c2abc86b1ca820a1b9f2a9267e669b
>
> The resulting tree id should be identical to yours (the commit id
> depends on time). It still works for me, however:
>
> $ make mrproper
> ...
> $ make ARCH=um SUBARCH=i386 O=/dev/shm/li defconfig
> GEN ./Makefile
> HOSTCC scripts/kconfig/zconf.tab.o
> HOSTLD scripts/kconfig/conf
> *** Default configuration is based on 'i386_defconfig'
> #
> # configuration written to .config
> #
> $ make ARCH=um SUBARCH=i386 O=/dev/shm/li
> GEN ./Makefile
> scripts/kconfig/conf --silentoldconfig arch/x86/um/Kconfig
> CHK include/generated/uapi/linux/version.h
> WRAP arch/um/include/generated/asm/scatterlist.h
> SYSTBL arch/x86/syscalls/../include/generated/asm/syscalls_32.h
> SYSHDR arch/x86/syscalls/../include/generated/uapi/asm/unistd_32.h
> SYSHDR arch/x86/syscalls/../include/generated/uapi/asm/unistd_64.h
> SYSHDR arch/x86/syscalls/../include/generated/uapi/asm/unistd_x32.h
> CC arch/x86/um/user-offsets.s
> CHK include/generated/user_constants.h
> UPD include/generated/user_constants.h
> CHK include/config/kernel.release
> UPD include/config/kernel.release
> Using /labs/mmarek/linux-2.6 as source for kernel
> GEN ./Makefile
> CHK include/generated/utsrelease.h
> UPD include/generated/utsrelease.h
> CC kernel/bounds.s
> GEN include/generated/bounds.h
> CC arch/um/kernel/asm-offsets.s
> GEN include/generated/asm-offsets.h
> CALL /labs/mmarek/linux-2.6/scripts/checksyscalls.sh
> HOSTCC scripts/mod/mk_elfconfig
> MKELF scripts/mod/elfconfig.h
> CC scripts/mod/devicetable-offsets.s
> GEN scripts/mod/devicetable-offsets.h
> HOSTCC scripts/mod/file2alias.o
> HOSTCC scripts/mod/modpost.o
> HOSTCC scripts/mod/sumversion.o
> HOSTLD scripts/mod/modpost
> CC init/main.o
>
> ... and so on. Can you please post the whole make V=1 log leading to the
> failure?
sure. I did mkdir /tmp/O then
make ARCH=um SUBARCH=i386 O=/tmp/O defconfig
make ARCH=um SUBARCH=i386 V=1 O=/tmp/O
make -C /tmp/O \
KBUILD_SRC=/local/lnx/next/linux-next-20140606 \
KBUILD_EXTMOD="" -f /local/lnx/next/linux-next-20140606/Makefile \
make -f /local/lnx/next/linux-next-20140606/Makefile silentoldconfig
make -f /local/lnx/next/linux-next-20140606/scripts/Makefile.build obj=scripts/basic
rm -f .tmp_quiet_recordmcount
ln -fsn /local/lnx/next/linux-next-20140606 source
/bin/sh /local/lnx/next/linux-next-20140606/scripts/mkmakefile \
/local/lnx/next/linux-next-20140606 . 3 15
GEN ./Makefile
mkdir -p include/linux include/config
make -f /local/lnx/next/linux-next-20140606/scripts/Makefile.build obj=scripts/kconfig silentoldconfig
mkdir -p include/generated
scripts/kconfig/conf --silentoldconfig arch/x86/um/Kconfig
set -e; : ' CHK include/generated/uapi/linux/version.h'; mkdir -p include/generated/uapi/linux/; (echo \#define LINUX_VERSION_CODE 200448; echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))';) < /local/lnx/next/linux-next-20140606/Makefile > include/generated/uapi/linux/version.h.tmp; if [ -r include/generated/uapi/linux/version.h ] && cmp -s include/generated/uapi/linux/version.h include/generated/uapi/linux/version.h.tmp; then rm -f include/generated/uapi/linux/version.h.tmp; else : ' UPD include/generated/uapi/linux/version.h'; mv -f include/generated/uapi/linux/version.h.tmp include/generated/uapi/linux/version.h; fi
make -f /local/lnx/next/linux-next-20140606/scripts/Makefile.build obj=scripts/basic
(cat /dev/null; ) > scripts/basic/modules.order
rm -f .tmp_quiet_recordmcount
make -f /local/lnx/next/linux-next-20140606/scripts/Makefile.asm-generic \
src=asm obj=arch/um/include/generated/asm
echo "#include <asm-generic/barrier.h>" >arch/um/include/generated/asm/barrier.h
echo "#include <asm-generic/bug.h>" >arch/um/include/generated/asm/bug.h
echo "#include <asm-generic/clkdev.h>" >arch/um/include/generated/asm/clkdev.h
echo "#include <asm-generic/cputime.h>" >arch/um/include/generated/asm/cputime.h
echo "#include <asm-generic/current.h>" >arch/um/include/generated/asm/current.h
echo "#include <asm-generic/delay.h>" >arch/um/include/generated/asm/delay.h
echo "#include <asm-generic/device.h>" >arch/um/include/generated/asm/device.h
echo "#include <asm-generic/emergency-restart.h>" >arch/um/include/generated/asm/emergency-restart.h
echo "#include <asm-generic/exec.h>" >arch/um/include/generated/asm/exec.h
echo "#include <asm-generic/ftrace.h>" >arch/um/include/generated/asm/ftrace.h
echo "#include <asm-generic/futex.h>" >arch/um/include/generated/asm/futex.h
echo "#include <asm-generic/hardirq.h>" >arch/um/include/generated/asm/hardirq.h
echo "#include <asm-generic/hash.h>" >arch/um/include/generated/asm/hash.h
echo "#include <asm-generic/hw_irq.h>" >arch/um/include/generated/asm/hw_irq.h
echo "#include <asm-generic/io.h>" >arch/um/include/generated/asm/io.h
echo "#include <asm-generic/irq_regs.h>" >arch/um/include/generated/asm/irq_regs.h
echo "#include <asm-generic/kdebug.h>" >arch/um/include/generated/asm/kdebug.h
echo "#include <asm-generic/mcs_spinlock.h>" >arch/um/include/generated/asm/mcs_spinlock.h
echo "#include <asm-generic/mutex.h>" >arch/um/include/generated/asm/mutex.h
echo "#include <asm-generic/param.h>" >arch/um/include/generated/asm/param.h
echo "#include <asm-generic/pci.h>" >arch/um/include/generated/asm/pci.h
echo "#include <asm-generic/percpu.h>" >arch/um/include/generated/asm/percpu.h
echo "#include <asm-generic/preempt.h>" >arch/um/include/generated/asm/preempt.h
echo "#include <asm-generic/scatterlist.h>" >arch/um/include/generated/asm/scatterlist.h
echo "#include <asm-generic/sections.h>" >arch/um/include/generated/asm/sections.h
echo "#include <asm-generic/switch_to.h>" >arch/um/include/generated/asm/switch_to.h
echo "#include <asm-generic/topology.h>" >arch/um/include/generated/asm/topology.h
echo "#include <asm-generic/trace_clock.h>" >arch/um/include/generated/asm/trace_clock.h
echo "#include <asm-generic/xor.h>" >arch/um/include/generated/asm/xor.h
make -f /local/lnx/next/linux-next-20140606/scripts/Makefile.asm-generic \
src=uapi/asm obj=arch/um/include/generated/uapi/asm
make KBUILD_SRC= ARCH=x86 archheaders
make -C /local/lnx/next/linux-next-20140606 O=/tmp/O/. archheaders
make -C /tmp/O \
KBUILD_SRC=/local/lnx/next/linux-next-20140606 \
KBUILD_EXTMOD="" -f /local/lnx/next/linux-next-20140606/Makefile \
archheaders
make -f /local/lnx/next/linux-next-20140606/scripts/Makefile.build obj=arch/x86/syscalls all
make -f /local/lnx/next/linux-next-20140606/scripts/Makefile.build obj=scripts build_unifdef
gcc -Wp,-MD,scripts/.unifdef.d -Iscripts -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -I/local/lnx/next/linux-next-20140606/tools/include -o scripts/unifdef /local/lnx/next/linux-next-20140606/scripts/unifdef.c
make -f /local/lnx/next/linux-next-20140606/scripts/Makefile.build obj=arch/x86/um arch/x86/um/user-offsets.s
gcc -Wp,-MD,arch/x86/um/.user-offsets.s.d -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -Os -Wno-maybe-uninitialized -m32 -funit-at-a-time -march=i686 -Wa,-mtune=generic32 -mpreferred-stack-boundary=2 -ffreestanding -D__arch_um__ -Dvmap=kernel_vmap -Din6addr_loopback=kernel_in6addr_loopback -Din6addr_any=kernel_in6addr_any -Dstrrchr=kernel_strrchr -D_LARGEFILE64_SOURCE -Wframe-larger-than=1024 -fno-stack-protector -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -DCC_HAVE_ASM_GOTO -I/local/lnx/next/linux-next-20140606/arch/um/include/shared -I/local/lnx/next/linux-next-20140606/arch/x86/um/shared -I/local/lnx/next/linux-next-20140606/arch/um/include/shared/skas -D_FILE_OFFSET_BITS=64 -idira
fter include -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -Iarch/x86/include/generated -fverbose-asm -S -o arch/x86/um/user-offsets.s /local/lnx/next/linux-next-20140606/arch/x86/um/user-offsets.c
/local/lnx/next/linux-next-20140606/arch/x86/um/user-offsets.c:14:29: fatal error: asm/syscalls_32.h: No such file or directory
compilation terminated.
make[2]: *** [arch/x86/um/user-offsets.s] Error 1
make[1]: *** [arch/x86/um/user-offsets.s] Error 2
make: *** [sub-make] Error 2
>
>>> Also, you pointed out i386 -- Does it mean that the fix worked for you
>>> on x86_64?
>>
>> Yes, it did work on x86_64 for some reason.
>
> That's great. I will push the fix, since at least on scenario is confirmed to
> work.
--
~Randy
next prev parent reply other threads:[~2014-06-09 23:47 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-09 12:52 [PATCH v2 0/5] kbuild: Use relative paths if possible Michal Marek
2014-05-09 12:52 ` [PATCH v2 1/5] firmware: Simplify directory creation Michal Marek
2014-05-09 16:51 ` Sam Ravnborg
2014-05-14 20:53 ` Michal Marek
2014-05-09 12:52 ` [PATCH v2 2/5] firmware: Use $(quote) in the Makefile Michal Marek
2014-05-09 12:52 ` [PATCH v2 3/5] kbuild: Use relative path for $(objtree) Michal Marek
2014-06-04 9:03 ` Richard Weinberger
2014-06-04 9:43 ` Michal Marek
2014-06-04 13:12 ` Michal Marek
2014-06-05 15:56 ` Michal Marek
2014-06-05 15:56 ` Michal Marek
2014-06-09 21:12 ` Michal Marek
2014-06-09 21:23 ` Randy Dunlap
2014-06-09 22:14 ` Michal Marek
2014-06-09 22:24 ` Randy Dunlap
2014-06-09 22:39 ` Michal Marek
2014-06-09 23:47 ` Randy Dunlap [this message]
2014-06-10 9:02 ` Michal Marek
2014-06-10 14:09 ` Randy Dunlap
2014-06-10 14:30 ` Michal Marek
2014-06-10 7:40 ` Geert Uytterhoeven
2014-06-10 8:17 ` Michal Marek
2017-10-16 10:26 ` Geert Uytterhoeven
2017-10-16 10:28 ` Geert Uytterhoeven
2017-10-25 12:21 ` Masahiro Yamada
2014-05-09 12:52 ` [PATCH v2 4/5] kbuild: Use relative path when building in the source tree Michal Marek
2014-05-09 12:52 ` [PATCH v2 5/5] kbuild: Use relative path when building in a subdir of " Michal Marek
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=5396479F.6030809@infradead.org \
--to=rdunlap@infradead.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mmarek@suse.cz \
--cc=richard.weinberger@gmail.com \
--cc=sam@ravnborg.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.