From e4d5031cc88db53fe3aa9759b9c9780c179b21b5 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Thu, 19 Nov 2009 20:22:53 +0000 Subject: [PATCH] [multiple changes] 2009-11-19 Rafael Avila de Espindola * 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 Basile Starynkevitch Rafael Avila de Espindola * doc/plugins.texi (Plugin initialization): Added advices for retrieving the version of GCC at plugin compilation and loading times. From-SVN: r154342 --- gcc/ChangeLog | 7 +++++++ gcc/doc/plugins.texi | 19 +++++++++++++++++++ gcc/testsuite/ChangeLog | 9 +++++++++ gcc/testsuite/g++.dg/plugin/selfassign.c | 3 ++- gcc/testsuite/gcc.dg/plugin/ggcplug.c | 3 ++- gcc/testsuite/gcc.dg/plugin/selfassign.c | 4 ++-- 6 files changed, 41 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5c288a0d671..8f6462414b1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2009-11-19 Basile Starynkevitch + Rafael Avila de Espindola + + * doc/plugins.texi (Plugin initialization): Added advices for + retrieving the version of GCC at plugin compilation and loading + times. + 2009-11-19 Basile Starynkevitch * plugin.c (FMT_FOR_PLUGIN_EVENT): added definition. diff --git a/gcc/doc/plugins.texi b/gcc/doc/plugins.texi index 6639a4e209a..eb1008e8f2c 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 bcf6d5571ef..c96876f6b92 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2009-11-19 Rafael Avila de Espindola + + * 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 PR c++/561 diff --git a/gcc/testsuite/g++.dg/plugin/selfassign.c b/gcc/testsuite/g++.dg/plugin/selfassign.c index 6dade300ff0..8d76301d815 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 49b5c95e4e9..03bd563b5ad 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 f804222826d..8d76301d815 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. */