Tidy pe_ILF_build_a_bfd a little

	* peicode.h (ILF section, pe_ILF_object_p): Correct comments
	and update the reference to Microsoft's docs.
	(pe_ILF_build_a_bfd): Move all symbol creation before flipping
	the bfd over to in-memory.
diff --git a/bfd/peicode.h b/bfd/peicode.h
index 43226ca..b7b4f4a 100644
--- a/bfd/peicode.h
+++ b/bfd/peicode.h
@@ -401,11 +401,11 @@
 
 #ifdef COFF_IMAGE_WITH_PE
 
-/* Code to handle Microsoft's Image Library Format.
+/* Code to handle Microsoft's Import Library Format.
    Also known as LINK6 format.
    Documentation about this format can be found at:
 
-   http://msdn.microsoft.com/library/specs/pecoff_section8.htm  */
+   https://learn.microsoft.com/en-us/windows/win32/debug/pe-format#import-library-format  */
 
 /* The following constants specify the sizes of the various data
    structures that we have to create in order to build a bfd describing
@@ -1074,39 +1074,6 @@
       abort ();
     }
 
-  /* Initialise the bfd.  */
-  memset (& internal_f, 0, sizeof (internal_f));
-
-  internal_f.f_magic  = magic;
-  internal_f.f_symptr = 0;
-  internal_f.f_nsyms  = 0;
-  internal_f.f_flags  = F_AR32WR | F_LNNO; /* XXX is this correct ?  */
-
-  if (   ! bfd_set_start_address (abfd, (bfd_vma) 0)
-      || ! bfd_coff_set_arch_mach_hook (abfd, & internal_f))
-    goto error_return;
-
-  if (bfd_coff_mkobject_hook (abfd, (void *) & internal_f, NULL) == NULL)
-    goto error_return;
-
-  obj_pe (abfd) = true;
-#ifdef THUMBPEMAGIC
-  if (vars.magic == THUMBPEMAGIC)
-    /* Stop some linker warnings about thumb code not supporting interworking.  */
-    coff_data (abfd)->flags |= F_INTERWORK | F_INTERWORK_SET;
-#endif
-
-  /* Switch from file contents to memory contents.  */
-  bfd_cache_close (abfd);
-
-  abfd->iostream = (void *) vars.bim;
-  abfd->flags |= BFD_IN_MEMORY /* | HAS_LOCALS */;
-  abfd->iovec = &_bfd_memory_iovec;
-  abfd->where = 0;
-  abfd->origin = 0;
-  abfd->size = 0;
-  obj_sym_filepos (abfd) = 0;
-
   /* Now create a symbol describing the imported value.  */
   switch (import_type)
     {
@@ -1133,6 +1100,39 @@
   if (ptr)
     * ptr = '.';
 
+  /* Initialise the bfd.  */
+  memset (& internal_f, 0, sizeof (internal_f));
+
+  internal_f.f_magic  = magic;
+  internal_f.f_symptr = 0;
+  internal_f.f_nsyms  = 0;
+  internal_f.f_flags  = F_AR32WR | F_LNNO; /* XXX is this correct ?  */
+
+  if (   ! bfd_set_start_address (abfd, (bfd_vma) 0)
+      || ! bfd_coff_set_arch_mach_hook (abfd, & internal_f))
+    goto error_return;
+
+  if (bfd_coff_mkobject_hook (abfd, (void *) & internal_f, NULL) == NULL)
+    goto error_return;
+
+  obj_pe (abfd) = true;
+#ifdef THUMBPEMAGIC
+  if (vars.magic == THUMBPEMAGIC)
+    /* Stop some linker warnings about thumb code not supporting interworking.  */
+    coff_data (abfd)->flags |= F_INTERWORK | F_INTERWORK_SET;
+#endif
+
+  /* Switch from file contents to memory contents.  */
+  bfd_cache_close (abfd);
+
+  abfd->iostream = (void *) vars.bim;
+  abfd->flags |= BFD_IN_MEMORY | HAS_SYMS;
+  abfd->iovec = &_bfd_memory_iovec;
+  abfd->where = 0;
+  abfd->origin = 0;
+  abfd->size = 0;
+  obj_sym_filepos (abfd) = 0;
+
   /* Point the bfd at the symbol table.  */
   obj_symbols (abfd) = vars.sym_cache;
   abfd->symcount = vars.sym_index;
@@ -1149,8 +1149,6 @@
   obj_coff_strings (abfd) = vars.string_table;
   obj_coff_keep_strings (abfd) = true;
 
-  abfd->flags |= HAS_SYMS;
-
   return true;
 
  error_return:
@@ -1159,7 +1157,7 @@
   return false;
 }
 
-/* We have detected a Image Library Format archive element.
+/* We have detected an Import Library Format archive element.
    Decode the element and return the appropriate target.  */
 
 static bfd_cleanup
@@ -1176,7 +1174,7 @@
   unsigned int	  magic;
 
   /* Upon entry the first six bytes of the ILF header have
-      already been read.  Now read the rest of the header.  */
+     already been read.  Now read the rest of the header.  */
   if (bfd_bread (buffer, (bfd_size_type) 14, abfd) != 14)
     return NULL;