1999-06-13  Mark Mitchell  <mark@codesourcery.com>
 
+       * elflink.h (elf_link_remove_section_and_adjust_dynindices):
+       Remove abfd parameter.  Use _bfd_strip_section_from_output.
+       (bfd_elf_size_dynamic_sections): Adjust callers accordingly.
+       
        * elf-bfd.h (_bfd_elf_link_adjust_dynindx): New function.
        * elflink.c (_bfd_elf_link_adjust_dynindx): Define it.
        * elflink.h (elf_link_remove_section_and_adjust_dynindices): New
 
 static boolean elf_link_read_relocs_from_section 
   PARAMS ((bfd *, Elf_Internal_Shdr *, PTR, Elf_Internal_Rela *));
 static void elf_link_remove_section_and_adjust_dynindices 
-  PARAMS ((bfd *, struct bfd_link_info *, asection *));
+  PARAMS ((struct bfd_link_info *, asection *));
 
 /* Given an ELF BFD, add symbols to the global hash table as
    appropriate.  */
    subsequent entries.  */
 
 static void
-elf_link_remove_section_and_adjust_dynindices (abfd, info, section)
-     bfd *abfd;
+elf_link_remove_section_and_adjust_dynindices (info, section)
      struct bfd_link_info *info;
      asection *section;
 {
   asection **spp;
 
   /* Remove the section from the output list.  */
-  for (spp = &abfd->sections;
-       *spp != section->output_section;
-       spp = &(*spp)->next)
-    ;
-  *spp = section->output_section->next;
-  --abfd->section_count;
+  _bfd_strip_section_from_output (section);
 
   if (elf_section_data (section->output_section)->dynindx)
     {
       verdefs = asvinfo.verdefs;
 
       if (verdefs == NULL)
-       elf_link_remove_section_and_adjust_dynindices (output_bfd,
-                                                      info,
-                                                      s);
+       elf_link_remove_section_and_adjust_dynindices (info, s);
       else
        {
          unsigned int cdefs;
                                (PTR) &sinfo);
 
        if (elf_tdata (output_bfd)->verref == NULL)
-         elf_link_remove_section_and_adjust_dynindices (output_bfd,
-                                                        info,
-                                                        s);
+         elf_link_remove_section_and_adjust_dynindices (info, s);
        else
          {
            Elf_Internal_Verneed *t;
       if (dynsymcount == 0
          || (verdefs == NULL && elf_tdata (output_bfd)->verref == NULL))
        {
-         elf_link_remove_section_and_adjust_dynindices (output_bfd,
-                                                        info,
-                                                        s);
+         elf_link_remove_section_and_adjust_dynindices (info, s);
          /* The DYNSYMCOUNT might have changed if we were going to
             output a dynamic symbol table entry for S.  */
          dynsymcount = elf_hash_table (info)->dynsymcount;