From patchwork Fri Apr 22 19:44:48 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Pitre X-Patchwork-Id: 66497 Delivered-To: patch@linaro.org Received: by 10.140.93.198 with SMTP id d64csp902875qge; Fri, 22 Apr 2016 12:44:57 -0700 (PDT) X-Received: by 10.66.235.129 with SMTP id um1mr30739112pac.17.1461354297464; Fri, 22 Apr 2016 12:44:57 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id qm9si9213427pac.165.2016.04.22.12.44.57; Fri, 22 Apr 2016 12:44:57 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752490AbcDVTox (ORCPT + 29 others); Fri, 22 Apr 2016 15:44:53 -0400 Received: from mail-qk0-f182.google.com ([209.85.220.182]:33474 "EHLO mail-qk0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751084AbcDVTov (ORCPT ); Fri, 22 Apr 2016 15:44:51 -0400 Received: by mail-qk0-f182.google.com with SMTP id n63so42241842qkf.0 for ; Fri, 22 Apr 2016 12:44:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version; bh=I6BoTsEL+66/3vjdGgC/+4Mu35WWAoVzgFuUZBqoYPc=; b=BhVoZKFcjxQYCTQpunQJKbgrg+lHwZSfK42o6/NEWS5NpbLNauzeUmeTaRg1auTTWa x+n/ho77ITITe/4J9MlU8quHWb7uJ/9BO8wKgiHO/+HkedRiKhnL81avHtLwPQTzRNSL 5wHL9ctN9D41IMwl2KgAcb+wH92196UyLudgY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version; bh=I6BoTsEL+66/3vjdGgC/+4Mu35WWAoVzgFuUZBqoYPc=; b=jiUjfn/cgPa8I25s/dY78aFm2JHxl0bFAIpVgig9qNdzFObSd2epxYvmVVnA9nUOZM 2ck81GGcMhN4/Wb9pPegOGZWQNt1B0/ub3oJOwD4c8GODKyD1F+36jc/khKAAXSHe5E6 nknuVMIpdXIWnVg3UURVu8ogX/ORF+nExP5VBzo7NdkNLsKq0AwIufFzWvS3ZA1yOu7P 5pN7pvVSJszIgwlsnzOvTnE0vs0dsLc5FlL4gC10sm3sgGssnt/h/84Vgr/f1I48j7XB B0HJPoBYPV3Tw/dyTq1G2j4fQ8MIKsEk2QThEebUG2HRpl4cx3G/vMDLm5WZ8Hyv/i2n uJrg== X-Gm-Message-State: AOPr4FWuLUPSBuUFYtm7U2HOGVqLhyRPXiZF3+6K+U78tuQK5VDHugic0oZOcJxrRfoxUoJD X-Received: by 10.55.203.131 with SMTP id u3mr26594874qkl.16.1461354290487; Fri, 22 Apr 2016 12:44:50 -0700 (PDT) Received: from xanadu.home ([2607:fa48:6e39:d410:feaa:14ff:fea7:ed77]) by smtp.gmail.com with ESMTPSA id o78sm2976565qge.23.2016.04.22.12.44.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 22 Apr 2016 12:44:49 -0700 (PDT) Date: Fri, 22 Apr 2016 15:44:48 -0400 (EDT) From: Nicolas Pitre To: Randy Dunlap cc: Stephen Rothwell , linux-next@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kbuild , Michal Marek Subject: Re: linux-next: Tree for Apr 22 (adjust_autoksyms.sh) In-Reply-To: Message-ID: References: <20160422153503.24aa389e@canb.auug.org.au> <571A56C4.7030907@infradead.org> <571A6BCE.9040904@infradead.org> User-Agent: Alpine 2.20 (LFD 67 2015-01-07) MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 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