diff --git a/lto-plugin/ChangeLog b/lto-plugin/ChangeLog
index 4b1200289ede012c2ef2e2c67114d46a279fc5c7..bda47ec471fed3000d0a4029664afb1f45d5d1ce 100644
--- a/lto-plugin/ChangeLog
+++ b/lto-plugin/ChangeLog
@@ -1,3 +1,10 @@
+2011-01-25  Ian Lance Taylor  <iant@google.com>
+
+	* lto-plugin.c (gold_version): New static variable.
+	(all_symbols_read_handler): Don't check pass_through_items if
+	using gold 1.11 or later.
+	(onload): Set gold_version if we see LDPT_GOLD_VERSION.
+
 2011-01-12  Richard Guenther  <rguenther@suse.de>
 
 	PR lto/47264
diff --git a/lto-plugin/lto-plugin.c b/lto-plugin/lto-plugin.c
index 2f422a3dd70d8aadf4b0bed7ce21b198778c1649..64a0164da3cf1766d03633eb475605ba5d348040 100644
--- a/lto-plugin/lto-plugin.c
+++ b/lto-plugin/lto-plugin.c
@@ -152,6 +152,10 @@ static char debug;
 static char nop;
 static char *resolution_file = NULL;
 
+/* The version of gold being used, or -1 if not gold.  The number is
+   MAJOR * 100 + MINOR.  */
+static int gold_version = -1;
+
 /* Not used by default, but can be overridden at runtime
    by using -plugin-opt=-sym-style={none,win32,underscore|uscore}
    (in fact, only first letter of style arg is checked.)  */
@@ -622,7 +626,8 @@ all_symbols_read_handler (void)
 
   free (lto_argv);
 
-  if (pass_through_items)
+  /* --pass-through is not needed when using gold 1.11 or later.  */
+  if (pass_through_items && gold_version < 111)
     {
       unsigned int i;
       for (i = 0; i < num_pass_through_items; i++)
@@ -998,6 +1003,9 @@ onload (struct ld_plugin_tv *tv)
 	case LDPT_OPTION:
 	  process_option (p->tv_u.tv_string);
 	  break;
+	case LDPT_GOLD_VERSION:
+	  gold_version = p->tv_u.tv_val;
+	  break;
 	default:
 	  break;
 	}