* arch/x86//kernel/ftrace.c:35:3: error: #error The following combination is not supported: ((compiler missing -mfentry) || (CONFIG_X86_32 and !CONFIG_DYNAMIC_FTRACE)) && CONFIG_FUNCTION_GRAPH_TRACER && CONFIG_CC_OPTIMIZE_FOR_SIZE
@ 2017-04-16 1:20 kbuild test robot
2017-04-17 13:33 ` Josh Poimboeuf
0 siblings, 1 reply; 7+ messages in thread
From: kbuild test robot @ 2017-04-16 1:20 UTC (permalink / raw)
To: Josh Poimboeuf; +Cc: kbuild-all, linux-kernel, Ingo Molnar
[-- Attachment #1: Type: text/plain, Size: 1499 bytes --]
Hi Josh,
FYI, the error/warning still remains.
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: d5ff0814fda50f0306e102f39640cf5bb76af08e
commit: 3f135e57a4f76d24ae8d8a490314331f0ced40c5 x86/build: Mostly disable '-maccumulate-outgoing-args'
date: 2 weeks ago
config: x86_64-randconfig-s1-04160822 (attached as .config)
compiler: gcc-4.4 (Debian 4.4.7-8) 4.4.7
reproduce:
git checkout 3f135e57a4f76d24ae8d8a490314331f0ced40c5
# save the attached .config to linux build tree
make ARCH=x86_64
All errors (new ones prefixed by >>):
>> arch/x86//kernel/ftrace.c:35:3: error: #error The following combination is not supported: ((compiler missing -mfentry) || (CONFIG_X86_32 and !CONFIG_DYNAMIC_FTRACE)) && CONFIG_FUNCTION_GRAPH_TRACER && CONFIG_CC_OPTIMIZE_FOR_SIZE
vim +35 arch/x86//kernel/ftrace.c
29 #include <asm/ftrace.h>
30 #include <asm/nops.h>
31
32 #if defined(CONFIG_FUNCTION_GRAPH_TRACER) && \
33 !defined(CC_USING_FENTRY) && \
34 !defined(CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE)
> 35 # error The following combination is not supported: ((compiler missing -mfentry) || (CONFIG_X86_32 and !CONFIG_DYNAMIC_FTRACE)) && CONFIG_FUNCTION_GRAPH_TRACER && CONFIG_CC_OPTIMIZE_FOR_SIZE
36 #endif
37
38 #ifdef CONFIG_DYNAMIC_FTRACE
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 23457 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: arch/x86//kernel/ftrace.c:35:3: error: #error The following combination is not supported: ((compiler missing -mfentry) || (CONFIG_X86_32 and !CONFIG_DYNAMIC_FTRACE)) && CONFIG_FUNCTION_GRAPH_TRACER && CONFIG_CC_OPTIMIZE_FOR_SIZE 2017-04-16 1:20 arch/x86//kernel/ftrace.c:35:3: error: #error The following combination is not supported: ((compiler missing -mfentry) || (CONFIG_X86_32 and !CONFIG_DYNAMIC_FTRACE)) && CONFIG_FUNCTION_GRAPH_TRACER && CONFIG_CC_OPTIMIZE_FOR_SIZE kbuild test robot @ 2017-04-17 13:33 ` Josh Poimboeuf 2017-04-18 18:52 ` Andi Kleen 0 siblings, 1 reply; 7+ messages in thread From: Josh Poimboeuf @ 2017-04-17 13:33 UTC (permalink / raw) To: kbuild test robot; +Cc: kbuild-all, linux-kernel, Ingo Molnar, Steven Rostedt On Sun, Apr 16, 2017 at 09:20:50AM +0800, kbuild test robot wrote: > Hi Josh, > > FYI, the error/warning still remains. > > tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master > head: d5ff0814fda50f0306e102f39640cf5bb76af08e > commit: 3f135e57a4f76d24ae8d8a490314331f0ced40c5 x86/build: Mostly disable '-maccumulate-outgoing-args' > date: 2 weeks ago > config: x86_64-randconfig-s1-04160822 (attached as .config) > compiler: gcc-4.4 (Debian 4.4.7-8) 4.4.7 > reproduce: > git checkout 3f135e57a4f76d24ae8d8a490314331f0ced40c5 > # save the attached .config to linux build tree > make ARCH=x86_64 > > All errors (new ones prefixed by >>): > > >> arch/x86//kernel/ftrace.c:35:3: error: #error The following combination is not supported: ((compiler missing -mfentry) || (CONFIG_X86_32 and !CONFIG_DYNAMIC_FTRACE)) && CONFIG_FUNCTION_GRAPH_TRACER && CONFIG_CC_OPTIMIZE_FOR_SIZE Hi Fengguang, The error is working as designed. gcc < 4.6.0 doesn't have -mfentry, so it fails the above check on x86. Can you add a skip rule? It should skip building the following case: x86 && ((gcc < 4.6.0) || (CONFIG_X86_32 and !CONFIG_DYNAMIC_FTRACE)) && CONFIG_FUNCTION_GRAPH_TRACER && CONFIG_CC_OPTIMIZE_FOR_SIZE -- Josh ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: arch/x86//kernel/ftrace.c:35:3: error: #error The following combination is not supported: ((compiler missing -mfentry) || (CONFIG_X86_32 and !CONFIG_DYNAMIC_FTRACE)) && CONFIG_FUNCTION_GRAPH_TRACER && CONFIG_CC_OPTIMIZE_FOR_SIZE 2017-04-17 13:33 ` Josh Poimboeuf @ 2017-04-18 18:52 ` Andi Kleen 2017-04-18 20:19 ` Josh Poimboeuf 0 siblings, 1 reply; 7+ messages in thread From: Andi Kleen @ 2017-04-18 18:52 UTC (permalink / raw) To: Josh Poimboeuf Cc: kbuild test robot, kbuild-all, linux-kernel, Ingo Molnar, Steven Rostedt Josh Poimboeuf <jpoimboe@redhat.com> writes: > > The error is working as designed. gcc < 4.6.0 doesn't have -mfentry, so > it fails the above check on x86. Can you add a skip rule? It should > skip building the following case: > > x86 && ((gcc < 4.6.0) || (CONFIG_X86_32 and !CONFIG_DYNAMIC_FTRACE)) > && CONFIG_FUNCTION_GRAPH_TRACER && CONFIG_CC_OPTIMIZE_FOR_SIZE This will also break everyone's randconfig builds. The better way would be to check this in the Makefile and disable one of the options -Andi ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: arch/x86//kernel/ftrace.c:35:3: error: #error The following combination is not supported: ((compiler missing -mfentry) || (CONFIG_X86_32 and !CONFIG_DYNAMIC_FTRACE)) && CONFIG_FUNCTION_GRAPH_TRACER && CONFIG_CC_OPTIMIZE_FOR_SIZE 2017-04-18 18:52 ` Andi Kleen @ 2017-04-18 20:19 ` Josh Poimboeuf 2017-04-18 20:25 ` Andi Kleen 0 siblings, 1 reply; 7+ messages in thread From: Josh Poimboeuf @ 2017-04-18 20:19 UTC (permalink / raw) To: Andi Kleen Cc: kbuild test robot, kbuild-all, linux-kernel, Ingo Molnar, Steven Rostedt On Tue, Apr 18, 2017 at 11:52:41AM -0700, Andi Kleen wrote: > Josh Poimboeuf <jpoimboe@redhat.com> writes: > > > > The error is working as designed. gcc < 4.6.0 doesn't have -mfentry, so > > it fails the above check on x86. Can you add a skip rule? It should > > skip building the following case: > > > > x86 && ((gcc < 4.6.0) || (CONFIG_X86_32 and !CONFIG_DYNAMIC_FTRACE)) > > && CONFIG_FUNCTION_GRAPH_TRACER && CONFIG_CC_OPTIMIZE_FOR_SIZE > > This will also break everyone's randconfig builds. The better way > would be to check this in the Makefile and disable one of the options I don't know how to disable a config option from the Makefile like that. Any ideas? BTW, I think it will only break randconfigs for old versions of gcc, before 4.6.0. The error message isn't quite right. I just noticed the FUNCTION_GRAPH_TRACER config has: depends on !X86_32 || !CC_OPTIMIZE_FOR_SIZE which means that X86_32 and CC_OPTIMIZE_FOR_SIZE can never be set with FUNCTION_GRAPH_TRACER. So the error message could be simplified to: #error The following combination is not supported: (compiler missing -mfentry) && CONFIG_FUNCTION_GRAPH_TRACER && CONFIG_CC_OPTIMIZE_FOR_SIZE -- Josh ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: arch/x86//kernel/ftrace.c:35:3: error: #error The following combination is not supported: ((compiler missing -mfentry) || (CONFIG_X86_32 and !CONFIG_DYNAMIC_FTRACE)) && CONFIG_FUNCTION_GRAPH_TRACER && CONFIG_CC_OPTIMIZE_FOR_SIZE 2017-04-18 20:19 ` Josh Poimboeuf @ 2017-04-18 20:25 ` Andi Kleen 2017-04-18 21:44 ` [PATCH] x86/build: convert function graph '-Os' error to warning Josh Poimboeuf 0 siblings, 1 reply; 7+ messages in thread From: Andi Kleen @ 2017-04-18 20:25 UTC (permalink / raw) To: Josh Poimboeuf Cc: Andi Kleen, kbuild test robot, kbuild-all, linux-kernel, Ingo Molnar, Steven Rostedt On Tue, Apr 18, 2017 at 03:19:42PM -0500, Josh Poimboeuf wrote: > On Tue, Apr 18, 2017 at 11:52:41AM -0700, Andi Kleen wrote: > > Josh Poimboeuf <jpoimboe@redhat.com> writes: > > > > > > The error is working as designed. gcc < 4.6.0 doesn't have -mfentry, so > > > it fails the above check on x86. Can you add a skip rule? It should > > > skip building the following case: > > > > > > x86 && ((gcc < 4.6.0) || (CONFIG_X86_32 and !CONFIG_DYNAMIC_FTRACE)) > > > && CONFIG_FUNCTION_GRAPH_TRACER && CONFIG_CC_OPTIMIZE_FOR_SIZE > > > > This will also break everyone's randconfig builds. The better way > > would be to check this in the Makefile and disable one of the options > > I don't know how to disable a config option from the Makefile like that. You just don't do something in the Makefile, e.g. don't set the -Os For an example see the LTO Makefile here https://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-misc.git/tree/scripts/Makefile.lto?h=lto-411-1 -Andi ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH] x86/build: convert function graph '-Os' error to warning 2017-04-18 20:25 ` Andi Kleen @ 2017-04-18 21:44 ` Josh Poimboeuf 2017-04-19 8:07 ` [tip:x86/urgent] " tip-bot for Josh Poimboeuf 0 siblings, 1 reply; 7+ messages in thread From: Josh Poimboeuf @ 2017-04-18 21:44 UTC (permalink / raw) To: Andi Kleen Cc: kbuild test robot, kbuild-all, linux-kernel, Ingo Molnar, Steven Rostedt On Tue, Apr 18, 2017 at 01:25:19PM -0700, Andi Kleen wrote: > On Tue, Apr 18, 2017 at 03:19:42PM -0500, Josh Poimboeuf wrote: > > On Tue, Apr 18, 2017 at 11:52:41AM -0700, Andi Kleen wrote: > > > Josh Poimboeuf <jpoimboe@redhat.com> writes: > > > > > > > > The error is working as designed. gcc < 4.6.0 doesn't have -mfentry, so > > > > it fails the above check on x86. Can you add a skip rule? It should > > > > skip building the following case: > > > > > > > > x86 && ((gcc < 4.6.0) || (CONFIG_X86_32 and !CONFIG_DYNAMIC_FTRACE)) > > > > && CONFIG_FUNCTION_GRAPH_TRACER && CONFIG_CC_OPTIMIZE_FOR_SIZE > > > > > > This will also break everyone's randconfig builds. The better way > > > would be to check this in the Makefile and disable one of the options > > > > I don't know how to disable a config option from the Makefile like that. > > You just don't do something in the Makefile, e.g. don't set the -Os > > For an example see the LTO Makefile here > > https://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-misc.git/tree/scripts/Makefile.lto?h=lto-411-1 This seems to work: ---- From: Josh Poimboeuf <jpoimboe@redhat.com> Subject: [PATCH] x86/build: convert function graph '-Os' error to warning For pre-4.6.0 versions of GCC, which don't have '-mfentry', the '-maccumulate-outgoing-args' option is required for function graph tracing in order to avoid GCC bug 42109. However, GCC ignores '-maccumulate-outgoing-args' when '-Os' is also set. Currently we force a build error to prevent that scenario, but that breaks randconfigs. So change the error to a warning which also disables CONFIG_CC_OPTIMIZE_FOR_SIZE. Reported-by: Andi Kleen <andi@firstfloor.org> Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> --- arch/x86/Makefile | 8 ++++++++ arch/x86/kernel/ftrace.c | 6 ------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/arch/x86/Makefile b/arch/x86/Makefile index 73604e1..4430dd4 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile @@ -154,6 +154,14 @@ ifdef CONFIG_FUNCTION_GRAPH_TRACER else ifeq ($(call cc-option-yn, -mfentry), n) ACCUMULATE_OUTGOING_ARGS := 1 + + # GCC ignores '-maccumulate-outgoing-args' when used with '-Os'. + # If '-Os' is enabled, disable it and print a warning. + ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE + undefine CONFIG_CC_OPTIMIZE_FOR_SIZE + $(warning Disabling CONFIG_CC_OPTIMIZE_FOR_SIZE. Your compiler does not have -mfentry so you cannot optimize for size with CONFIG_FUNCTION_GRAPH_TRACER.) + endif + endif endif endif diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c index 0e5ceac..5b71535 100644 --- a/arch/x86/kernel/ftrace.c +++ b/arch/x86/kernel/ftrace.c @@ -29,12 +29,6 @@ #include <asm/ftrace.h> #include <asm/nops.h> -#if defined(CONFIG_FUNCTION_GRAPH_TRACER) && \ - !defined(CC_USING_FENTRY) && \ - !defined(CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE) -# error The following combination is not supported: ((compiler missing -mfentry) || (CONFIG_X86_32 and !CONFIG_DYNAMIC_FTRACE)) && CONFIG_FUNCTION_GRAPH_TRACER && CONFIG_CC_OPTIMIZE_FOR_SIZE -#endif - #ifdef CONFIG_DYNAMIC_FTRACE int ftrace_arch_code_modify_prepare(void) -- 2.7.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [tip:x86/urgent] x86/build: convert function graph '-Os' error to warning 2017-04-18 21:44 ` [PATCH] x86/build: convert function graph '-Os' error to warning Josh Poimboeuf @ 2017-04-19 8:07 ` tip-bot for Josh Poimboeuf 0 siblings, 0 replies; 7+ messages in thread From: tip-bot for Josh Poimboeuf @ 2017-04-19 8:07 UTC (permalink / raw) To: linux-tip-commits Cc: mingo, hpa, linux-kernel, tglx, rostedt, peterz, fengguang.wu, jpoimboe, torvalds, andi Commit-ID: a5859c6d7b6114fc0e52be40f7b0f5451c4aba93 Gitweb: http://git.kernel.org/tip/a5859c6d7b6114fc0e52be40f7b0f5451c4aba93 Author: Josh Poimboeuf <jpoimboe@redhat.com> AuthorDate: Tue, 18 Apr 2017 16:44:29 -0500 Committer: Ingo Molnar <mingo@kernel.org> CommitDate: Wed, 19 Apr 2017 09:57:23 +0200 x86/build: convert function graph '-Os' error to warning For pre-4.6.0 versions of GCC, which don't have '-mfentry', the '-maccumulate-outgoing-args' option is required for function graph tracing in order to avoid GCC bug 42109. However, GCC ignores '-maccumulate-outgoing-args' when '-Os' is also set. Currently we force a build error to prevent that scenario, but that breaks randconfigs. So change the error to a warning which also disables CONFIG_CC_OPTIMIZE_FOR_SIZE. Reported-by: Andi Kleen <andi@firstfloor.org> Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: kbuild test robot <fengguang.wu@intel.com> Cc: kbuild-all@01.org Link: http://lkml.kernel.org/r/20170418214429.o7fbwbmf4nqosezy@treble Signed-off-by: Ingo Molnar <mingo@kernel.org> --- arch/x86/Makefile | 8 ++++++++ arch/x86/kernel/ftrace.c | 6 ------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/arch/x86/Makefile b/arch/x86/Makefile index a94a4d1..49d160b 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile @@ -154,6 +154,14 @@ ifdef CONFIG_FUNCTION_GRAPH_TRACER else ifeq ($(call cc-option-yn, -mfentry), n) ACCUMULATE_OUTGOING_ARGS := 1 + + # GCC ignores '-maccumulate-outgoing-args' when used with '-Os'. + # If '-Os' is enabled, disable it and print a warning. + ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE + undefine CONFIG_CC_OPTIMIZE_FOR_SIZE + $(warning Disabling CONFIG_CC_OPTIMIZE_FOR_SIZE. Your compiler does not have -mfentry so you cannot optimize for size with CONFIG_FUNCTION_GRAPH_TRACER.) + endif + endif endif endif diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c index 0e5ceac..5b71535 100644 --- a/arch/x86/kernel/ftrace.c +++ b/arch/x86/kernel/ftrace.c @@ -29,12 +29,6 @@ #include <asm/ftrace.h> #include <asm/nops.h> -#if defined(CONFIG_FUNCTION_GRAPH_TRACER) && \ - !defined(CC_USING_FENTRY) && \ - !defined(CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE) -# error The following combination is not supported: ((compiler missing -mfentry) || (CONFIG_X86_32 and !CONFIG_DYNAMIC_FTRACE)) && CONFIG_FUNCTION_GRAPH_TRACER && CONFIG_CC_OPTIMIZE_FOR_SIZE -#endif - #ifdef CONFIG_DYNAMIC_FTRACE int ftrace_arch_code_modify_prepare(void) ^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2017-04-19 8:12 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-04-16 1:20 arch/x86//kernel/ftrace.c:35:3: error: #error The following combination is not supported: ((compiler missing -mfentry) || (CONFIG_X86_32 and !CONFIG_DYNAMIC_FTRACE)) && CONFIG_FUNCTION_GRAPH_TRACER && CONFIG_CC_OPTIMIZE_FOR_SIZE kbuild test robot 2017-04-17 13:33 ` Josh Poimboeuf 2017-04-18 18:52 ` Andi Kleen 2017-04-18 20:19 ` Josh Poimboeuf 2017-04-18 20:25 ` Andi Kleen 2017-04-18 21:44 ` [PATCH] x86/build: convert function graph '-Os' error to warning Josh Poimboeuf 2017-04-19 8:07 ` [tip:x86/urgent] " tip-bot for Josh Poimboeuf
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).