Fix bug where -u option with empty archive results in internal error.

gold/
        PR gold/20693
        * gold.cc (queue_middle_tasks): Force valid target earlier.

This change is backport of commit c13b08dbbcf752480a7621aa1f89bc5440c74c25
  - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=c13b08dbbcf752480a7621aa1f89bc5440c74c25
to binutils 2.25.
diff --git a/binutils-2.25/gold/gold.cc b/binutils-2.25/gold/gold.cc
index b278b3c..d8a3f0c 100644
--- a/binutils-2.25/gold/gold.cc
+++ b/binutils-2.25/gold/gold.cc
@@ -495,6 +495,14 @@
   if (timer != NULL)
     timer->stamp(0);
 
+  // We have to support the case of not seeing any input objects, and
+  // generate an empty file.  Existing builds depend on being able to
+  // pass an empty archive to the linker and get an empty object file
+  // out.  In order to do this we need to use a default target.
+  if (input_objects->number_of_input_objects() == 0
+      && layout->incremental_base() == NULL)
+    parameters_force_valid_target();
+
   // Add any symbols named with -u options to the symbol table.
   symtab->add_undefined_symbols_from_command_line(layout);
 
@@ -555,14 +563,6 @@
       plugins->layout_deferred_objects();
     }
 
-  // We have to support the case of not seeing any input objects, and
-  // generate an empty file.  Existing builds depend on being able to
-  // pass an empty archive to the linker and get an empty object file
-  // out.  In order to do this we need to use a default target.
-  if (input_objects->number_of_input_objects() == 0
-      && layout->incremental_base() == NULL)
-    parameters_force_valid_target();
-
   // TODO(tmsriram): figure out a more principled way to get the target
   Target* target = const_cast<Target*>(&parameters->target());