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.  */