Re: enabling COMPILE_TEST support for GCC plugins in v4.11

From: kugan
Date: Fri Dec 09 2016 - 16:09:39 EST




On 10/12/16 07:35, Arnd Bergmann wrote:
On Friday, December 9, 2016 11:13:20 AM CET Kees Cook wrote:
On Fri, Dec 9, 2016 at 3:33 AM, Arnd Bergmann <arnd@xxxxxxxx> wrote:
On Thursday, December 8, 2016 11:00:42 AM CET Kees Cook wrote:
If you have a moment, applying 215e2aa6c024[1] and reverting
a519167e753e for an allyesconfig/allmodconfig build should let you
know if things are working correctly with headers installed. If anyone
sees any problems, please let me know and I can queue up fixes.

This is what I got on x86-64 with a gcc-7.0.0 snapshot:

In file included from /git/arm-soc/scripts/gcc-plugins/gcc-common.h:42:0,
from <stdin>:1:
/home/arnd/cross-gcc/lib/gcc/x86_64-linux/7.0.0/plugin/include/emit-rtl.h:371:41: error: use of enum âmemmodelâ without previous declaration
extern bool need_atomic_barrier_p (enum memmodel, bool);
^
In file included from /git/arm-soc/scripts/gcc-plugins/gcc-common.h:94:0,
from <stdin>:1:
/home/arnd/cross-gcc/lib/gcc/x86_64-linux/7.0.0/plugin/include/tree-ssanames.h:70:40: error: use of enum âvalue_range_typeâ without previous declaration
extern void set_range_info (tree, enum value_range_type, const wide_int_ref &,
^
/home/arnd/cross-gcc/lib/gcc/x86_64-linux/7.0.0/plugin/include/tree-ssanames.h:73:13: error: use of enum âvalue_range_typeâ without previous declaration
extern enum value_range_type get_range_info (const_tree, wide_int *,
^
/home/arnd/cross-gcc/lib/gcc/x86_64-linux/7.0.0/plugin/include/tree-ssanames.h:98:55: error: use of enum âvalue_range_typeâ without previous declaration
extern void duplicate_ssa_name_range_info (tree, enum value_range_type,
^
Cannot use CONFIG_GCC_PLUGINS: your gcc installation does not support plugins, perhaps the necessary headers are missing?
scripts/Makefile.gcc-plugins:51: recipe for target 'gcc-plugins-check' failed

I manually fixed up the gcc header files to include the ones with the
definition for now, to address those, but I don't know if that change is
correct.

What was needed?

I added '#include "memmodel.h"' and '#include "tree-vrp.h"', respectively, to
the headers that failed to get compiled.

This might be the correct solution, or the headers might not be meant to
be used standalone and instead require being included in the right order.

Gcc commit svn+ssh://gcc.gnu.org/svn/gcc/trunk@239638 moved
value_range_type from tree-ssanames.h to tree-vrp.h, I've added
Kugan to Cc, maybe he can clarify what that means for plugins.

Looks to me that in gcc-common.h tree-vrp.h should be included before tree-ssanames.h as it is done in gcc now.

Thanks,
Kugan