+2011-06-09  Nick Clifton  <nickc@redhat.com>
+
+       PR ld/12845
+       * elf.c (_bfd_elf_init_private_section_data): Add an assertion
+       that the output section has an allocated bfd_elf_section_data
+       structure.
+       * elfxx-mips.c (mips_elf_check_symbols): Do not create a stub for
+       symbols in sections that have been removed by garbage collection.
+
 2011-06-08  H.J. Lu  <hongjiu.lu@intel.com>
 
        * elf64-x86-64.c (elf_x86_64_check_relocs): Allow R_X86_64_64
 
       || obfd->xvec->flavour != bfd_target_elf_flavour)
     return TRUE;
 
+  BFD_ASSERT (elf_section_data (osec) != NULL);
+
   /* For objcopy and relocatable link, don't copy the output ELF
      section type from input if the output BFD section flags have been
      set to something different.  For a final link allow some flags
 
 
   if (mips_elf_local_pic_function_p (h))
     {
+      /* PR 12845: If H is in a section that has been garbage
+        collected it will have its output section set to *ABS*.  */
+      if (bfd_is_abs_section (h->root.root.u.def.section->output_section))
+       return TRUE;
+
       /* H is a function that might need $25 to be valid on entry.
         If we're creating a non-PIC relocatable object, mark H as
         being PIC.  If we're creating a non-relocatable object with
 
+2011-06-09  Nick Clifton  <nickc@redhat.com>
+
+       PR ld/12845
+       * emultempl/mipself.em (mips_add_stub_section): Do not add stubs
+       for sections that have been removed by garbage collection.
+
 2011-06-08  Alan Modra  <amodra@gmail.com>
 
        * ldlang.c (lang_one_common): Handle warning symbols.
 
   lang_output_section_statement_type *os;
   struct hook_stub_info info;
 
+  /* PR 12845: If the input section has been garbage collected it will
+     not have its output section set to *ABS*.  */
+  if (bfd_is_abs_section (output_section))
+    return NULL;
+
   /* Create the stub file, if we haven't already.  */
   if (stub_file == NULL)
     {