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@xxxxxxx> >>>>> 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@xxxxxxxxx> >>>>> Signed-off-by: Michal Marek <mmarek@xxxxxxx> >>>>> --- >>>>> 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 -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html