+2012-07-16  Sriraman Tallam  <tmsriram@google.com>
+
+       * gold.cc (queue_middle_tasks): Update function order only after
+       deferred objects due to plugins are processed.
+
 2012-07-11  Ian Lance Taylor  <iant@google.com>
 
        * arm.cc (Arm_relocate_functions::abs16): Remove unused typedef.
 
        }
     }
 
+  // Layout deferred objects due to plugins.
+  if (parameters->options().has_plugins())
+    {
+      Plugin_manager* plugins = parameters->options().plugins();
+      gold_assert(plugins != NULL);
+      plugins->layout_deferred_objects();
+    }
+
   /* If plugins have specified a section order, re-arrange input sections
      according to a specified section order.  If --section-ordering-file is
      also specified, do not do anything here.  */
        (*p)->update_section_layout(layout->get_section_order_map());
     }
 
-  // Layout deferred objects due to plugins.
-  if (parameters->options().has_plugins())
-    {
-      Plugin_manager* plugins = parameters->options().plugins();
-      gold_assert(plugins != NULL);
-      plugins->layout_deferred_objects();
-    }
-
   if (parameters->options().gc_sections()
       || parameters->options().icf_enabled())
     {