* 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 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.