On Sun, Sep 22, 2019 at 5:33 PM Anatoly Pugachev <matorola@xxxxxxxxx> wrote: > > On Sun, Sep 22, 2019 at 11:13 AM Anatoly Pugachev <matorola@xxxxxxxxx> wrote: > > > > Hello! > > > > Latest git kernel does not compile for me: > > > > ~/linux-2.6$ git desc > > v5.3-11506-gf7c3bf8fa7e5 > > > > ~/linux-2.6$ make > > CALL scripts/checksyscalls.sh > > <stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp] > > CALL scripts/atomic/check-atomics.sh > > CHK include/generated/compile.h > > CC arch/sparc/vdso/vdso32/vclock_gettime.o > > unrecognized e_machine 18 arch/sparc/vdso/vdso32/vclock_gettime.o > > arch/sparc/vdso/vdso32/vclock_gettime.o: failed > > make[2]: *** [scripts/Makefile.build:266: > > arch/sparc/vdso/vdso32/vclock_gettime.o] Error 1 > > make[2]: *** Deleting file 'arch/sparc/vdso/vdso32/vclock_gettime.o' > > make[1]: *** [scripts/Makefile.build:509: arch/sparc/vdso] Error 2 > > make: *** [Makefile:1667: arch/sparc] Error > > > > but I was able to compile successfully v5.3-10169-g574cc4539762 > > > > Not sure my bisect log is right, but here it is: > > > > $ git bisect good > > 54b8ae66ae1a3454a7645d159a482c31cd89ab33 is the first bad commit > > commit 54b8ae66ae1a3454a7645d159a482c31cd89ab33 > > Author: Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx> > > Date: Fri Aug 30 13:34:01 2019 +0900 > > > > kbuild: change *FLAGS_<basetarget>.o to take the path relative to $(obj) > > > > Kbuild provides per-file compiler flag addition/removal: > > > > CFLAGS_<basetarget>.o > > CFLAGS_REMOVE_<basetarget>.o > > AFLAGS_<basetarget>.o > > AFLAGS_REMOVE_<basetarget>.o > > CPPFLAGS_<basetarget>.lds > > HOSTCFLAGS_<basetarget>.o > > HOSTCXXFLAGS_<basetarget>.o > > > > The <basetarget> is the filename of the target with its directory and > > suffix stripped. > > > > This syntax comes into a trouble when two files with the same basename > > appear in one Makefile, for example: > > > > obj-y += foo.o > > obj-y += dir/foo.o > > CFLAGS_foo.o := <some-flags> > > > > Here, the <some-flags> applies to both foo.o and dir/foo.o > > > > The real world problem is: > > > > scripts/kconfig/util.c > > scripts/kconfig/lxdialog/util.c > > > > Both files are compiled into scripts/kconfig/mconf, but only the > > latter should be given with the ncurses flags. > > > > It is more sensible to use the relative path to the Makefile, like this: > > > > obj-y += foo.o > > CFLAGS_foo.o := <some-flags> > > obj-y += dir/foo.o > > CFLAGS_dir/foo.o := <other-flags> > > > > At first, I attempted to replace $(basetarget) with $*. The $* variable > > is replaced with the stem ('%') part in a pattern rule. This works with > > most of cases, but does not for explicit rules. > > > > For example, arch/ia64/lib/Makefile reuses rule_as_o_S in its own > > explicit rules, so $* will be empty, resulting in ignoring the per-file > > AFLAGS. > > > > I introduced a new variable, target-stem, which can be used also from > > explicit rules. > > > > Signed-off-by: Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx> > > Acked-by: Marc Zyngier <maz@xxxxxxxxxx> > > > > arch/arm/kvm/Makefile | 5 +++-- > > arch/x86/entry/vdso/Makefile | 3 ++- > > drivers/gpu/drm/amd/display/dc/calcs/Makefile | 6 +++--- > > drivers/gpu/drm/amd/display/dc/dcn20/Makefile | 2 +- > > drivers/gpu/drm/amd/display/dc/dml/Makefile | 17 +++++++---------- > > drivers/gpu/drm/amd/display/dc/dsc/Makefile | 7 +++---- > > drivers/gpu/drm/i915/Makefile | 2 +- > > scripts/Makefile.host | 22 +++++++++++----------- > > scripts/Makefile.lib | 13 ++++++++----- > > scripts/kconfig/Makefile | 8 ++++---- > > 10 files changed, 43 insertions(+), 42 deletions(-) > > mator@ttip:~/linux-2.6$ > > > > > > If someone wants to check how kernel compiles on sparc64, could use > > gcc compile farm machine (gcc202) to try on. > > and i cannot test compile 54b8ae66ae1a3454a7645d159a482c31cd89ab33 as well : > > ~/linux-2.6$ git checkout 54b8ae66ae1a3454a7645d159a482c31cd89ab33 > HEAD is now at 54b8ae66ae1a kbuild: change *FLAGS_<basetarget>.o to > take the path relative to $(obj) > > ~/linux-2.6$ make -j clean; make -j olddefconfig && nice make -j24 > HOSTCC scripts/basic/fixdep > HOSTCC scripts/kconfig/conf.o > HOSTCC scripts/kconfig/confdata.o > HOSTCC scripts/kconfig/expr.o > LEX scripts/kconfig/lexer.lex.c > YACC scripts/kconfig/parser.tab.[ch] > HOSTCC scripts/kconfig/preprocess.o > HOSTCC scripts/kconfig/symbol.o > HOSTCC scripts/kconfig/lexer.lex.o > HOSTCC scripts/kconfig/parser.tab.o > HOSTLD scripts/kconfig/conf > scripts/kconfig/conf --olddefconfig Kconfig > # > # No change to .config > # > scripts/kconfig/conf --syncconfig Kconfig > { command -v gcc; } >/dev/null 2>&1 && echo "n" || echo "y": Cannot > allocate memory > make[2]: *** [scripts/kconfig/Makefile:73: syncconfig] Error 1 > make[1]: *** [Makefile:584: syncconfig] Error 2 > make: *** [Makefile:695: include/config/auto.conf.cmd] Error 2 > ~/linux-2.6$ > > > > PS: unable to compile kernel makes its bisection impossible =( I have no idea about this error because this seems unrelated to commit 54b8ae66ae1a3454a7645d159a482c31cd89ab33 >From the error message "Cannot allocate memory", maybe, your machine was in the memory shortage. (If you have the steps to reproduce it, please share it.) Thanks. -- Best Regards Masahiro Yamada