* plugin.cc (Plugin_finish::run): Don't call cleanup handlers from here.
authorCary Coutant <ccoutant@google.com>
Thu, 15 Jul 2010 17:36:23 +0000 (17:36 +0000)
committerCary Coutant <ccoutant@google.com>
Thu, 15 Jul 2010 17:36:23 +0000 (17:36 +0000)
gold/ChangeLog
gold/plugin.cc

index ac910cd15d868215d31c577fb238e68b96a1d62e..17113fb81e5e9dc43ae5f4756d471daab0943d76 100644 (file)
@@ -1,3 +1,8 @@
+2010-07-15  Cary Coutant  <ccoutant@google.com>
+
+       * plugin.cc (Plugin_finish::run): Don't call cleanup handlers from
+       here.
+
 2010-07-14  Ian Lance Taylor  <iant@google.com>
 
        * descriptors.cc (Descriptors::open): Report correct name in error
index ba4bd4c106001c7625494e0335648df604893f0e..76b24314c46325ad415f7c7f2a185d55c0ee3c4f 100644 (file)
@@ -862,7 +862,10 @@ Sized_pluginobj<size, big_endian>::do_get_global_symbols() const
 }
 
 // Class Plugin_finish.  This task runs after all replacement files have
-// been added.  It calls each plugin's cleanup handler.
+// been added.  For now, it's a placeholder for a possible plugin API
+// to allow the plugin to release most of its resources.  The cleanup
+// handlers must be called later, because they can remove the temporary
+// object files that are needed until the end of the link.
 
 class Plugin_finish : public Task
 {
@@ -892,9 +895,7 @@ class Plugin_finish : public Task
   void
   run(Workqueue*)
   {
-    Plugin_manager* plugins = parameters->options().plugins();
-    gold_assert(plugins != NULL);
-    plugins->cleanup();
+    // We could call early cleanup handlers here.
   }
 
   std::string