diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5c288a0d671645d59eb05c47a13353c06c269c0e..8f6462414b1d1f6a20e7864b545b89ac03b02652 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2009-11-19 Basile Starynkevitch <basile@starynkevitch.net> + Rafael Avila de Espindola <espindola@google.com> + + * doc/plugins.texi (Plugin initialization): Added advices for + retrieving the version of GCC at plugin compilation and loading + times. + 2009-11-19 Basile Starynkevitch <basile@starynkevitch.net> * plugin.c (FMT_FOR_PLUGIN_EVENT): added definition. diff --git a/gcc/doc/plugins.texi b/gcc/doc/plugins.texi index 6639a4e209ae7f4069214a53499e4e0e2f034257..eb1008e8f2cd2de6c8dc8e8bd1b4fe6eed92f117 100644 --- a/gcc/doc/plugins.texi +++ b/gcc/doc/plugins.texi @@ -105,6 +105,25 @@ The function @code{plugin_default_version_check} takes two pointers to such structure and compare them field by field. It can be used by the plugin's @code{plugin_init} function. +The version of GCC used to compile the plugin can be found in the symbol +@code{gcc_version} defined in the header @file{plugin-version.h}. The +recommended version check to perform looks like + +@smallexample +#include "plugin-version.h" +... + +int +plugin_init (struct plugin_name_args *plugin_info, + struct plugin_gcc_version *version) +@{ + if (!plugin_default_version_check (version, &gcc_version)) + return 1; + +@} +@end smallexample + +but you can also check the individual fields if you want a less strict check. @subsection Plugin callbacks diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bcf6d5571efea54af4fa1fec2a4e54ff22dc1a85..c96876f6b925fa65d4573d102a750eadb159c126 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2009-11-19 Rafael Avila de Espindola <espindola@google.com> + + * g++.dg/plugin/selfassign.c: Include plugin-version.h. + (plugin_init): Pass correct version to plugin_default_version_check. + * gcc.dg/plugin/ggcplug.c: Include plugin-version.h. + (plugin_init): Pass correct version to plugin_default_version_check. + * gcc.dg/plugin/selfassign.c: Include plugin-version.h. + (plugin_init): Pass correct version to plugin_default_version_check. + 2009-11-19 Jason Merrill <jason@redhat.com> PR c++/561 diff --git a/gcc/testsuite/g++.dg/plugin/selfassign.c b/gcc/testsuite/g++.dg/plugin/selfassign.c index 6dade300ff039c83000bd1f23242e55f6b20bec5..8d76301d8155a24a5e91f9fa5176713a4558722a 100644 --- a/gcc/testsuite/g++.dg/plugin/selfassign.c +++ b/gcc/testsuite/g++.dg/plugin/selfassign.c @@ -13,6 +13,7 @@ #include "tree.h" #include "tree-pass.h" #include "intl.h" +#include "plugin-version.h" int plugin_is_GPL_compatible; @@ -305,7 +306,7 @@ plugin_init (struct plugin_name_args *plugin_info, bool enabled = true; int i; - if (!plugin_default_version_check (version, version)) + if (!plugin_default_version_check (version, &gcc_version)) return 1; /* Self-assign detection should happen after SSA is constructed. */ diff --git a/gcc/testsuite/gcc.dg/plugin/ggcplug.c b/gcc/testsuite/gcc.dg/plugin/ggcplug.c index 49b5c95e4e99f7b9075080fbea8396857e717368..03bd563b5adc2cf35341b83a6f420486c8a3116f 100644 --- a/gcc/testsuite/gcc.dg/plugin/ggcplug.c +++ b/gcc/testsuite/gcc.dg/plugin/ggcplug.c @@ -12,6 +12,7 @@ #include "tree-pass.h" #include "intl.h" #include "gcc-plugin.h" +#include "plugin-version.h" int plugin_is_GPL_compatible; @@ -43,7 +44,7 @@ plugin_init (struct plugin_name_args *plugin_info, int argc = plugin_info->argc; int i = 0; struct plugin_argument *argv = plugin_info->argv; - if (!plugin_default_version_check (version, version)) + if (!plugin_default_version_check (version, &gcc_version)) return 1; /* Process the plugin arguments. This plugin takes the following arguments: count-ggc-start count-ggc-end count-ggc-mark */ diff --git a/gcc/testsuite/gcc.dg/plugin/selfassign.c b/gcc/testsuite/gcc.dg/plugin/selfassign.c index f804222826db9fb3534c655407748edf8f8c79db..8d76301d8155a24a5e91f9fa5176713a4558722a 100644 --- a/gcc/testsuite/gcc.dg/plugin/selfassign.c +++ b/gcc/testsuite/gcc.dg/plugin/selfassign.c @@ -13,7 +13,7 @@ #include "tree.h" #include "tree-pass.h" #include "intl.h" - +#include "plugin-version.h" int plugin_is_GPL_compatible; @@ -306,7 +306,7 @@ plugin_init (struct plugin_name_args *plugin_info, bool enabled = true; int i; - if (!plugin_default_version_check (version, version)) + if (!plugin_default_version_check (version, &gcc_version)) return 1; /* Self-assign detection should happen after SSA is constructed. */