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

From: Josh Poimboeuf
Date: Tue Apr 18 2017 - 16:20:02 EST


On Tue, Apr 18, 2017 at 11:52:41AM -0700, Andi Kleen wrote:
> Josh Poimboeuf <jpoimboe@xxxxxxxxxx> 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