All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nicolas Pitre <nicolas.pitre@linaro.org>
To: Randy Dunlap <rdunlap@infradead.org>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>,
	linux-next@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-kbuild <linux-kbuild@vger.kernel.org>,
	Michal Marek <mmarek@suse.cz>
Subject: Re: linux-next: Tree for Apr 22 (adjust_autoksyms.sh)
Date: Fri, 22 Apr 2016 15:44:48 -0400 (EDT)	[thread overview]
Message-ID: <alpine.LFD.2.20.1604221542270.27452@knanqh.ubzr> (raw)
In-Reply-To: <alpine.LFD.2.20.1604221423300.27452@knanqh.ubzr>

On Fri, 22 Apr 2016, Nicolas Pitre wrote:

> On Fri, 22 Apr 2016, Randy Dunlap wrote:
> 
> > Yes, this patch helps, but I think there is still a problem.
> > I think that trim needs to be done after CONFIG_BUILD_DOCSRC and possibly
> > after CONFIG_SAMPLES are built.
> 
> The later is already taken care of with commit dd92478a15.
> 
> > At least CONFIG_BUILD_DOCSRC seems to
> > cause this error:
> > 
> > Setup is 16508 bytes (padded to 16896 bytes).
> > System is 6125 kB
> > CRC 8aa70f94
> > Kernel: arch/x86/boot/bzImage is ready  (#9)
> > ERROR: "cn_del_callback" [Documentation/connector/cn_test.ko] undefined!
> > ERROR: "cn_add_callback" [Documentation/connector/cn_test.ko] undefined!
> > ERROR: "cn_netlink_send" [Documentation/connector/cn_test.ko] undefined!
> > ../scripts/Makefile.modpost:91: recipe for target '__modpost' failed
> > make[2]: *** [__modpost] Error 1
> 
> This one is indeed a problem.

Please try the following:

----- >8
Subject: [PATCH] kbuild: better abstract vmlinux sequential prerequisites

When CONFIG_TRIM_UNUSED_KSYMS=y and CONFIG_BUILD_DOCSRC=y it is possible
to get the following error:

ERROR: "cn_del_callback" [Documentation/connector/cn_test.ko] undefined!
ERROR: "cn_add_callback" [Documentation/connector/cn_test.ko] undefined!
ERROR: "cn_netlink_send" [Documentation/connector/cn_test.ko] undefined!
../scripts/Makefile.modpost:91: recipe for target '__modpost' failed

It is not sufficient to do "vmlinux-dirs += Documentation" as this also
depends on the headers_check target, and all of this needs to be done
before adjust_autoksyms.sh is executed.

Let's sort this out by gathering those sequential prerequisites in a make
target of their own, separate from the vmlinux target. And by doing so,
the special autoksyms_recursive target is no longer needed.

Signed-off-by: Nicolas Pitre <nico@linaro.org>

diff --git a/Makefile b/Makefile
index e9ad498238..3f1eb6a1bf 100644
--- a/Makefile
+++ b/Makefile
@@ -926,17 +926,11 @@ export KBUILD_ALLDIRS := $(sort $(filter-out arch/%,$(vmlinux-alldirs)) arch Doc
 
 vmlinux-deps := $(KBUILD_LDS) $(KBUILD_VMLINUX_INIT) $(KBUILD_VMLINUX_MAIN)
 
-# Final link of vmlinux
-      cmd_link-vmlinux = $(CONFIG_SHELL) $< $(LD) $(LDFLAGS) $(LDFLAGS_vmlinux)
-quiet_cmd_link-vmlinux = LINK    $@
-
-# Include targets which we want to
-# execute if the rest of the kernel build went well.
-vmlinux: scripts/link-vmlinux.sh $(vmlinux-deps) FORCE
-ifdef CONFIG_TRIM_UNUSED_KSYMS
-	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \
-	  "$(MAKE) KBUILD_MODULES=1 -f $(srctree)/Makefile autoksyms_recursive"
-endif
+# Include targets which we want to execute sequentially if the rest of the
+# kernel build went well. If CONFIG_TRIM_UNUSED_KSYMS is set, this might be
+# evaluated more than once.
+PHONY += vmlinux_prereq
+vmlinux_prereq: $(vmlinux-deps) FORCE
 ifdef CONFIG_HEADERS_CHECK
 	$(Q)$(MAKE) -f $(srctree)/Makefile headers_check
 endif
@@ -946,17 +940,22 @@ endif
 ifdef CONFIG_GDB_SCRIPTS
 	$(Q)ln -fsn `cd $(srctree) && /bin/pwd`/scripts/gdb/vmlinux-gdb.py
 endif
-	+$(call if_changed,link-vmlinux)
-
-autoksyms_recursive: $(vmlinux-deps)
+ifdef CONFIG_TRIM_UNUSED_KSYMS
 	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \
-	  "$(MAKE) KBUILD_MODULES=1 -f $(srctree)/Makefile autoksyms_recursive"
-PHONY += autoksyms_recursive
+	  "$(MAKE) KBUILD_MODULES=1 -f $(srctree)/Makefile vmlinux_prereq"
+endif
 
 # standalone target for easier testing
 include/generated/autoksyms.h: FORCE
 	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh true
 
+# Final link of vmlinux
+      cmd_link-vmlinux = $(CONFIG_SHELL) $< $(LD) $(LDFLAGS) $(LDFLAGS_vmlinux)
+quiet_cmd_link-vmlinux = LINK    $@
+
+vmlinux: scripts/link-vmlinux.sh vmlinux_prereq FORCE
+	+$(call if_changed,link-vmlinux)
+
 # Build samples along the rest of the kernel
 ifdef CONFIG_SAMPLES
 vmlinux-dirs += samples

  reply	other threads:[~2016-04-22 19:44 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-22  5:35 linux-next: Tree for Apr 22 Stephen Rothwell
2016-04-22 16:52 ` linux-next: Tree for Apr 22 (adjust_autoksyms.sh) Randy Dunlap
2016-04-22 17:48   ` Nicolas Pitre
2016-04-22 18:22     ` Randy Dunlap
2016-04-22 18:43       ` Nicolas Pitre
2016-04-22 19:44         ` Nicolas Pitre [this message]
2016-04-22 22:55           ` Randy Dunlap
2016-04-26 11:19             ` Michal Marek
2016-04-26 13:07               ` Stephen Rothwell

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=alpine.LFD.2.20.1604221542270.27452@knanqh.ubzr \
    --to=nicolas.pitre@linaro.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-next@vger.kernel.org \
    --cc=mmarek@suse.cz \
    --cc=rdunlap@infradead.org \
    --cc=sfr@canb.auug.org.au \
    /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.