From 74b0726cf08f4eb28e3bf9a67f32a444e58ad416 Mon Sep 17 00:00:00 2001 From: amylaar Date: Wed, 9 Jun 2010 10:40:28 +0000 Subject: [PATCH] gcc: PR testsuite/42843 * gcc-plugin.h (int plugin_is_GPL_compatible): Declare as extern "C". * doc/plugins.texi (Plugin license check): Update information on type of plugin_is_GPL_compatible. * Makefile.in (PLUGINCC): Define as $(COMPILER). (PLUGINCFLAGS): Define as $(COMPILER_FLAGS). gcc/testsuite: PR testsuite/42843 * gcc.dg/plugin/selfassign.c (pass_warn_self_assign): Use enumerator TV_NONE to initialize tv_id field. * g++.dg/plugin/selfassign.c (pass_warn_self_assign): Likewise. * gcc.dg/plugin/one_time_plugin.c (one_pass): Likewise. * g++.dg/plugin/dumb_plugin.c (pass_dumb_plugin_example): Likewise. Include toplev.h . * gcc.dg/plugin/finish_unit_plugin.c: Include cgraph.h. * g++.dg/plugin/attribute_plugin.c: Include toplev.h and plugin.h . * g++.dg/plugin/pragma_plugin.c: Include toplev.h . git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@160461 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 11 ++++++++++- gcc/Makefile.in | 4 ++-- gcc/doc/plugins.texi | 6 ++++-- gcc/gcc-plugin.h | 11 +++++++++++ gcc/testsuite/ChangeLog | 13 +++++++++++++ gcc/testsuite/g++.dg/plugin/attribute_plugin.c | 2 ++ gcc/testsuite/g++.dg/plugin/dumb_plugin.c | 3 ++- gcc/testsuite/g++.dg/plugin/pragma_plugin.c | 1 + gcc/testsuite/g++.dg/plugin/selfassign.c | 2 +- gcc/testsuite/gcc.dg/plugin/finish_unit_plugin.c | 1 + gcc/testsuite/gcc.dg/plugin/one_time_plugin.c | 2 +- gcc/testsuite/gcc.dg/plugin/selfassign.c | 2 +- 12 files changed, 49 insertions(+), 9 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 86b202914dd..a1d7c0d8fa4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2010-06-09 Joern Rennecke + + PR testsuite/42843 + * gcc-plugin.h (int plugin_is_GPL_compatible): Declare as extern "C". + * doc/plugins.texi (Plugin license check): Update information + on type of plugin_is_GPL_compatible. + * Makefile.in (PLUGINCC): Define as $(COMPILER). + (PLUGINCFLAGS): Define as $(COMPILER_FLAGS). + 2010-06-09 Bernd Schmidt * config/arm/arm.c (thumb2_reorg): New function. @@ -13,7 +22,7 @@ 2010-06-09 Joern Rennecke - PR plugins/44459: + PR plugins/44459 * gcc-plugin.h: Encapsulate all declarations in extern "C". 2010-06-08 Jan Hubicka diff --git a/gcc/Makefile.in b/gcc/Makefile.in index a19022564b3..54c854b222c 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -331,10 +331,10 @@ LTO_BINARY_READER = @LTO_BINARY_READER@ LTO_USE_LIBELF = @LTO_USE_LIBELF@ # Compiler needed for plugin support -PLUGINCC = @CC@ +PLUGINCC = $(COMPILER) # Flags needed for plugin support -PLUGINCFLAGS = @CFLAGS@ +PLUGINCFLAGS = $(COMPILER_FLAGS) # Libs and linker options needed for plugin support PLUGINLIBS = @pluginlibs@ diff --git a/gcc/doc/plugins.texi b/gcc/doc/plugins.texi index 77000fee646..5a560424993 100644 --- a/gcc/doc/plugins.texi +++ b/gcc/doc/plugins.texi @@ -50,8 +50,10 @@ fatal error: plugin is not licensed under a GPL-compatible license compilation terminated @end smallexample -The type of the symbol is irrelevant. The compiler merely asserts that -it exists in the global scope. Something like this is enough: +The declared type of the symbol should be int, to match a forward declaration +in @file{gcc-plugin.h} that suppresses C++ mangling. It does not need to be in +any allocated section, though. The compiler merely asserts that +the symbol exists in the global scope. Something like this is enough: @smallexample int plugin_is_GPL_compatible; diff --git a/gcc/gcc-plugin.h b/gcc/gcc-plugin.h index 5db2c710be5..7573fa28d7c 100644 --- a/gcc/gcc-plugin.h +++ b/gcc/gcc-plugin.h @@ -151,4 +151,15 @@ extern const char* default_plugin_dir_name (void); } #endif +/* In case the C++ compiler does name mangling for globals, declare + plugin_is_GPL_compatible extern "C" so that a later definition + in a plugin file will have this linkage. */ +#ifdef __cplusplus +extern "C" { +#endif +extern int plugin_is_GPL_compatible; +#ifdef __cplusplus +} +#endif + #endif /* GCC_PLUGIN_H */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fdce8b3d395..a17f5aeee16 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,16 @@ +2010-06-09 Joern Rennecke + + PR testsuite/42843 + * gcc.dg/plugin/selfassign.c (pass_warn_self_assign): Use enumerator + TV_NONE to initialize tv_id field. + * g++.dg/plugin/selfassign.c (pass_warn_self_assign): Likewise. + * gcc.dg/plugin/one_time_plugin.c (one_pass): Likewise. + * g++.dg/plugin/dumb_plugin.c (pass_dumb_plugin_example): Likewise. + Include toplev.h . + * gcc.dg/plugin/finish_unit_plugin.c: Include cgraph.h. + * g++.dg/plugin/attribute_plugin.c: Include toplev.h and plugin.h . + * g++.dg/plugin/pragma_plugin.c: Include toplev.h . + 2010-06-08 Sandra Loosemore PR tree-optimization/39874 diff --git a/gcc/testsuite/g++.dg/plugin/attribute_plugin.c b/gcc/testsuite/g++.dg/plugin/attribute_plugin.c index d62ab90542c..6327095f7cd 100644 --- a/gcc/testsuite/g++.dg/plugin/attribute_plugin.c +++ b/gcc/testsuite/g++.dg/plugin/attribute_plugin.c @@ -8,6 +8,8 @@ #include "tree.h" #include "tree-pass.h" #include "intl.h" +#include "toplev.h" +#include "plugin.h" int plugin_is_GPL_compatible; diff --git a/gcc/testsuite/g++.dg/plugin/dumb_plugin.c b/gcc/testsuite/g++.dg/plugin/dumb_plugin.c index 3aee8db840c..f12a6a0d35b 100644 --- a/gcc/testsuite/g++.dg/plugin/dumb_plugin.c +++ b/gcc/testsuite/g++.dg/plugin/dumb_plugin.c @@ -9,6 +9,7 @@ #include "tree.h" #include "tree-pass.h" #include "intl.h" +#include "toplev.h" int plugin_is_GPL_compatible; @@ -65,7 +66,7 @@ static struct gimple_opt_pass pass_dumb_plugin_example = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/testsuite/g++.dg/plugin/pragma_plugin.c b/gcc/testsuite/g++.dg/plugin/pragma_plugin.c index 237fcdddfa9..241526b1e2c 100644 --- a/gcc/testsuite/g++.dg/plugin/pragma_plugin.c +++ b/gcc/testsuite/g++.dg/plugin/pragma_plugin.c @@ -13,6 +13,7 @@ #include "cpplib.h" #include "tree-pass.h" #include "intl.h" +#include "toplev.h" int plugin_is_GPL_compatible; diff --git a/gcc/testsuite/g++.dg/plugin/selfassign.c b/gcc/testsuite/g++.dg/plugin/selfassign.c index 8d76301d815..df42abd27df 100644 --- a/gcc/testsuite/g++.dg/plugin/selfassign.c +++ b/gcc/testsuite/g++.dg/plugin/selfassign.c @@ -275,7 +275,7 @@ static struct gimple_opt_pass pass_warn_self_assign = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_ssa, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/testsuite/gcc.dg/plugin/finish_unit_plugin.c b/gcc/testsuite/gcc.dg/plugin/finish_unit_plugin.c index 634daeeda13..26496a2e695 100644 --- a/gcc/testsuite/gcc.dg/plugin/finish_unit_plugin.c +++ b/gcc/testsuite/gcc.dg/plugin/finish_unit_plugin.c @@ -12,6 +12,7 @@ #include "tree.h" #include "tree-pass.h" #include "intl.h" +#include "cgraph.h" int plugin_is_GPL_compatible; diff --git a/gcc/testsuite/gcc.dg/plugin/one_time_plugin.c b/gcc/testsuite/gcc.dg/plugin/one_time_plugin.c index 4a6a8a61969..2c4cd497192 100644 --- a/gcc/testsuite/gcc.dg/plugin/one_time_plugin.c +++ b/gcc/testsuite/gcc.dg/plugin/one_time_plugin.c @@ -37,7 +37,7 @@ struct gimple_opt_pass one_pass = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_gimple_any, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/testsuite/gcc.dg/plugin/selfassign.c b/gcc/testsuite/gcc.dg/plugin/selfassign.c index 8d76301d815..df42abd27df 100644 --- a/gcc/testsuite/gcc.dg/plugin/selfassign.c +++ b/gcc/testsuite/gcc.dg/plugin/selfassign.c @@ -275,7 +275,7 @@ static struct gimple_opt_pass pass_warn_self_assign = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_ssa, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ -- 2.11.0