From patchwork Fri Aug 12 06:50:11 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luis Chamberlain X-Patchwork-Id: 9276421 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 16A6E60231 for ; Fri, 12 Aug 2016 06:53:38 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0547928828 for ; Fri, 12 Aug 2016 06:53:38 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id EDA2F288B5; Fri, 12 Aug 2016 06:53:37 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 6C8EE28828 for ; Fri, 12 Aug 2016 06:53:37 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bY6IV-0008Dc-BR; Fri, 12 Aug 2016 06:50:27 +0000 Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bY6IT-0008DW-Ab for xen-devel@lists.xensource.com; Fri, 12 Aug 2016 06:50:25 +0000 Received: from [85.158.139.211] by server-15.bemta-5.messagelabs.com id 91/36-12460-0B17DA75; Fri, 12 Aug 2016 06:50:24 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprLIsWRWlGSWpSXmKPExsVyuP0Ov+6GwrX hBpt2MFrcm/Ke3YHRY3vfLvYAxijWzLyk/IoE1oxt2z4wFkxVrnh5/zNTA+Nn2S5GTg4JASOJ txP/MXUxcnEICSxklDjx5yYzSIJFQFXi15f3QAkODjYBXYmbtyVAwiICShJfF80Fq2cWWMItc f76IRaQhLCAncSaI9/BbF4BQ4nLlzYzQwzdxiRxd/JKqISgxMmZT8BsZgEtiRv/XoItYBaQll j+jwMkzAnUu7FzGSuILSqgIjHl5Da2CYx8s5B0z0LSPQuhewEj8ypGjeLUorLUIl0jQ72kosz 0jJLcxMwcXUMDU73c1OLixPTUnMSkYr3k/NxNjMBgq2dgYNzBeHey3yFGSQ4mJVFeXve14UJ8 SfkplRmJxRnxRaU5qcWHGGU4OJQkeE8VAOUEi1LTUyvSMnOAYQ+TluDgURLhbQZJ8xYXJOYWZ 6ZDpE4xKkqJ8waBJARAEhmleXBtsFi7xCgrJczLyMDAIMRTkFqUm1mCKv+KUZyDUUmYNwlkCk 9mXgnc9FdAi5mAFp8wWwOyuCQRISXVwOjutG3brtf+3UwnReVV/ZcsKlx4dLL63G9Vn8VCmqQ NVD/kiRnxLFWdbMDiefVmXfuEdbn3BCRvBR2PZj8oV77aq2VHWN30YoZLB14w82UUMPyMk1O2 cXFtvdwz6XFucpByzNpssa8Hdj757t11K+hqD6OkTO1exeDwpGOtUwRWLGa/Mmf7eiWW4oxEQ y3mouJEACc3vVqwAgAA X-Env-Sender: lurodriguez@suse.de X-Msg-Ref: server-4.tower-206.messagelabs.com!1470984623!54208514!1 X-Originating-IP: [195.135.220.15] X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG X-StarScan-Received: X-StarScan-Version: 8.84; banners=-,-,- X-VirusChecked: Checked Received: (qmail 18829 invoked from network); 12 Aug 2016 06:50:23 -0000 Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15) by server-4.tower-206.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted SMTP; 12 Aug 2016 06:50:23 -0000 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id C0C80AD9D; Fri, 12 Aug 2016 06:50:17 +0000 (UTC) Date: Fri, 12 Aug 2016 08:50:11 +0200 From: "Luis R. Rodriguez" To: Borislav Petkov Message-ID: <20160812065011.GB3296@wotan.suse.de> References: <1469222687-1600-1-git-send-email-mcgrof@kernel.org> <1469222687-1600-8-git-send-email-mcgrof@kernel.org> <20160729100630.GA27271@nazgul.tnic> <20160808150539.GG3296@wotan.suse.de> <20160809035508.GC11445@nazgul.tnic> <20160812035129.GA3296@wotan.suse.de> <20160812052303.GB12013@nazgul.tnic> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20160812052303.GB12013@nazgul.tnic> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: gnomes@lxorguk.ukuu.org.uk, linux-ia64@vger.kernel.org, jkosina@suse.cz, benh@kernel.crashing.org, ming.lei@canonical.com, heiko.carstens@de.ibm.com, platform-driver-x86@vger.kernel.org, paul.gortmaker@windriver.com, hpa@zytor.com, masami.hiramatsu.pt@hitachi.com, linux-arch@vger.kernel.org, sparclinux@vger.kernel.org, xen-devel@lists.xensource.com, linux@arm.linux.org.uk, linux-sh@vger.kernel.org, will.deacon@arm.com, korea.drzix@gmail.com, x86@kernel.org, anil.s.keshavamurthy@intel.com, fontana@sharpeleven.org, torvalds@linux-foundation.org, mingo@redhat.com, linux-arm-kernel@lists.infradead.org, catalin.marinas@arm.com, dvhart@infradead.org, david.vrabel@citrix.com, pali.rohar@gmail.com, keescook@chromium.org, arnd@arndb.de, realmz6@gmail.com, linux@rasmusvillemoes.dk, rusty@rustcorp.com.au, rostedt@goodmis.org, christopher.denicolo@suse.com, jbaron@akamai.com, ananth@linux.vnet.ibm.com, ciaran.farrell@suse.com, jpoimboe@redhat.com, tglx@linutronix.de, andriy.shevchenko@linux.intel.com, mcb30@ipxe.org, linux-kbuild@vger.kernel.org, alan@linux.intel.com, jgross@suse.com, pebolle@tiscali.nl, tony.luck@intel.com, ananth@in.ibm.com, gregkh@linuxfoundation.org, luto@amacapital.net, ak@linux.intel.com, "Luis R. Rodriguez" , mmarek@suse.com, mhiramat@kernel.org, andrew.cooper3@citrix.com, akpm@linux-foundation.org, dwmw2@infradead.org, davem@davemloft.net Subject: Re: [Xen-devel] [RFC v3 07/13] tables.h: add linker table support X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP On Fri, Aug 12, 2016 at 07:23:03AM +0200, Borislav Petkov wrote: > On Fri, Aug 12, 2016 at 05:51:29AM +0200, Luis R. Rodriguez wrote: > > OK I've added CONFIG_BUILD_AVOID_BITROT. > > What does that do? Enabling it allows the forced compilation chosen by maintainers. Otherwise forced compilations with the new special targets are ignored. I've gone with table-obj-y and table-lib-y as we have to support both lib-y and obj-y respective targets. diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 33e2966dd741..7893e3b8da82 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -1895,6 +1895,30 @@ config PROVIDE_OHCI1394_DMA_INIT See Documentation/debugging-via-ohci1394.txt for more information. +config BUILD_AVOID_BITROT + bool "Always force building specially annotated" + default y + help + If enabled then the the special table-* Makefile targets will always + be forced to be compiled even if their respective CONFIG_ option has + been disabled, but its objects will only be linked in if the same + respective CONFIG_ option has been enabled. This helps avoid code + bit rot issues, use for these targets should be carefully considred + by maintainers. You can safely enable this option at the expense of + increasing compile time slightly. Enabling this option helps avoid + code bit rot by taking advantage of the facilities provided and + enabled by using linker tables documented under: + + include/linux/tables.h + + The special targets supported are: + + o table-obj-y + o table-lib-y + + Say Y unless you are a grumpy maintainer and don't trust other + maintainer's judgements on what code should always get compiled. + config BUILD_DOCSRC bool "Build targets in Documentation/ tree" depends on HEADERS_CHECK diff --git a/scripts/Makefile.build b/scripts/Makefile.build index 002857fe8d0d..17ced5ac44b2 100644 --- a/scripts/Makefile.build +++ b/scripts/Makefile.build @@ -91,7 +91,8 @@ modorder-target := $(obj)/modules.order # We keep a list of all modules in $(MODVERDIR) -__build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target) $(extra-y) $(table-y)) \ +__build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target) $(extra-y) \ + $(table-obj-y)) \ $(if $(KBUILD_MODULES),$(obj-m) $(modorder-target)) \ $(subdir-ym) $(always) @: @@ -325,8 +326,8 @@ cmd_as_o_S = $(CC) $(a_flags) -c -o $@ $< $(obj)/%.o: $(src)/%.S $(objtool_obj) FORCE $(call if_changed_rule,as_o_S) -targets += $(real-objs-y) $(real-objs-m) $(lib-y) -targets += $(extra-y) $(table-y) $(MAKECMDGOALS) $(always) +targets += $(real-objs-y) $(real-objs-m) $(lib-y) $(table-lib-y) +targets += $(extra-y) $(table-obj-y) $(MAKECMDGOALS) $(always) # Linker scripts preprocessor (.lds.S -> .lds) # --------------------------------------------------------------------------- diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 494f215ebaa4..58db6b503aca 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -12,15 +12,14 @@ export KBUILD_SUBDIR_CCFLAGS := $(KBUILD_SUBDIR_CCFLAGS) $(subdir-ccflags-y) # Figure out what we need to build from the various variables # =========================================================================== -# Linker tables objects always wish to be built to avoid bit-rot in -# code, but only linked in *iff* they were enabled. We accomplish this -# using pegging linker table objects into extra-y, which forces -# compilation and then using the respective table-y and table-m as -# as hints for things we do want enabled. Objects which we want to -# avoid linking in will be in table-, not table-y and table-m. -extra-y += $(table-) -obj-m += $(table-m) -obj-y += $(table-y) +ifeq ($(CONFIG_BUILD_AVOID_BITROT),y) +extra-y += $(table-obj-) $(table-lib-) +endif + +obj-m += $(table-obj-m) +obj-y += $(table-obj-y) +lib-m += $(table-lib-m) +lib-y += $(table-lib-y) # When an object is listed to be built compiled-in and modular, # only build the compiled-in version @@ -82,8 +81,8 @@ real-objs-m := $(foreach m, $(obj-m), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y) # Add subdir path extra-y := $(addprefix $(obj)/,$(extra-y)) -table-y := $(addprefix $(obj)/,$(table-y)) -table-m := $(addprefix $(obj)/,$(table-m)) +table-obj-y := $(addprefix $(obj)/,$(table-obj-y)) +table-obj-m := $(addprefix $(obj)/,$(table-obj-m)) always := $(addprefix $(obj)/,$(always)) targets := $(addprefix $(obj)/,$(targets)) modorder := $(addprefix $(obj)/,$(modorder))