Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1624145 > unrolled thread
| Started by | kbuild test robot <fengguang.wu@intel.com> |
|---|---|
| First post | 2017-04-16 03:30 +0200 |
| Last post | 2017-04-18 22:30 +0200 |
| Articles | 7 — 4 participants |
Back to article view | Back to linux.kernel
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 <fengguang.wu@intel.com> - 2017-04-16 03:30 +0200
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 Josh Poimboeuf <jpoimboe@redhat.com> - 2017-04-17 15:40 +0200
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 Andi Kleen <andi@firstfloor.org> - 2017-04-18 21:00 +0200
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 Andi Kleen <andi@firstfloor.org> - 2017-04-18 22:30 +0200
[PATCH] x86/build: convert function graph '-Os' error to warning Josh Poimboeuf <jpoimboe@redhat.com> - 2017-04-18 23:50 +0200
[tip:x86/urgent] x86/build: convert function graph '-Os' error to warning tip-bot for Josh Poimboeuf <tipbot@zytor.com> - 2017-04-19 10:20 +0200
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 Josh Poimboeuf <jpoimboe@redhat.com> - 2017-04-18 22:30 +0200
| From | kbuild test robot <fengguang.wu@intel.com> |
|---|---|
| Date | 2017-04-16 03:30 +0200 |
| Subject | 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 |
| Message-ID | <twHaN-5Jn-1@gated-at.bofh.it> |
[Multipart message — attachments visible in raw view] — view raw
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
[toc] | [next] | [standalone]
| From | Josh Poimboeuf <jpoimboe@redhat.com> |
|---|---|
| Date | 2017-04-17 15:40 +0200 |
| Message-ID | <txf2N-1br-3@gated-at.bofh.it> |
| In reply to | #1624145 |
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
[toc] | [prev] | [next] | [standalone]
| From | Andi Kleen <andi@firstfloor.org> |
|---|---|
| Date | 2017-04-18 21:00 +0200 |
| Subject | 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 |
| Message-ID | <txGw2-1bd-17@gated-at.bofh.it> |
| In reply to | #1624670 |
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
[toc] | [prev] | [next] | [standalone]
| From | Andi Kleen <andi@firstfloor.org> |
|---|---|
| Date | 2017-04-18 22:30 +0200 |
| Message-ID | <txHV7-29d-1@gated-at.bofh.it> |
| In reply to | #1625545 |
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
[toc] | [prev] | [next] | [standalone]
| From | Josh Poimboeuf <jpoimboe@redhat.com> |
|---|---|
| Date | 2017-04-18 23:50 +0200 |
| Subject | [PATCH] x86/build: convert function graph '-Os' error to warning |
| Message-ID | <txJay-2NQ-7@gated-at.bofh.it> |
| In reply to | #1625629 |
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
[toc] | [prev] | [next] | [standalone]
| From | tip-bot for Josh Poimboeuf <tipbot@zytor.com> |
|---|---|
| Date | 2017-04-19 10:20 +0200 |
| Subject | [tip:x86/urgent] x86/build: convert function graph '-Os' error to warning |
| Message-ID | <txT0d-12b-7@gated-at.bofh.it> |
| In reply to | #1625666 |
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)
[toc] | [prev] | [next] | [standalone]
| From | Josh Poimboeuf <jpoimboe@redhat.com> |
|---|---|
| Date | 2017-04-18 22:30 +0200 |
| Message-ID | <txHV8-29d-3@gated-at.bofh.it> |
| In reply to | #1625545 |
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
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web