+2020-04-16  Nick Clifton  <nickc@redhat.com>
+
+       PR 25803
+       * elfxx-mips.c (_bfd_mips_elf_adjust_dynamic_symbol): Replace an
+       abort with a more helpful error message.
+
 2020-04-16  Alan Modra  <amodra@gmail.com>
 
        PR 25827
 
   hmips = (struct mips_elf_link_hash_entry *) h;
 
   /* Make sure we know what is going on here.  */
-  BFD_ASSERT (dynobj != NULL
-             && (h->needs_plt
-                 || h->is_weakalias
-                 || (h->def_dynamic
-                     && h->ref_regular
-                     && !h->def_regular)));
+  if (dynobj == NULL
+      || (! h->needs_plt
+         && ! h->is_weakalias
+         && (! h->def_dynamic
+             || ! h->ref_regular
+             || h->def_regular)))
+    {
+      if (h->type == STT_GNU_IFUNC)
+       _bfd_error_handler (_("IFUNC symbol %s in dynamic symbol table - IFUNCS are not supported"),
+                           h->root.root.string);
+      else
+       _bfd_error_handler (_("non-dynamic symbol %s in dynamic symbol table"),
+                           h->root.root.string);
+      return TRUE;
+    }
 
   hmips = (struct mips_elf_link_hash_entry *) h;
 
 
+2020-04-16  Gagan Singh Sidhu  <broly@mac.com>
+           Nick Clifton  <nickc@redhat.com>
+
+       PR 25803
+       * config/obj-elf.c (obj_elf_type): Reject ifunc symbols on MIPS
+       targets.
+       * testsuite/gas/elf/elf.exp: Add MIPS targets to the list to skip
+       for the type-2 test.
+       * testsuite/gas/elf/type-noifunc.e: Update to allow for MIPS
+       targets running this test.
+
 2020-02-16  David Faust  <david.faust@oracle.com>
 
        * testsuite/gas/bpf/bpf.exp: Run jump32 tests.
 
               && bed->elf_osabi != ELFOSABI_FREEBSD)
        as_bad (_("symbol type \"%s\" is supported only by GNU "
                  "and FreeBSD targets"), type_name);
+      /* MIPS targets do not support IFUNCS.  */
+      else if (bed->target_id == MIPS_ELF_DATA)
+       as_bad (_("symbol type \"%s\" is not supported by "
+                    "MIPS targets"), type_name);
       elf_tdata (stdoutput)->has_gnu_osabi |= elf_gnu_osabi_ifunc;
       type = BSF_FUNCTION | BSF_GNU_INDIRECT_FUNCTION;
     }
 
     # in the symbol type test.
     # We also need to exclude targets that do not support unique objects.
     if {    [istarget "*-*-hpux*"]
-        || [istarget "arm*-*-*"]
-        || [istarget "msp*-*-*"]
+        || [istarget "arm*-*-*"]       
+         || [istarget "mips*-*-*"]
+         || [istarget "msp*-*-*"]
         || [istarget "visium-*-*"]
         || ![supports_gnu_unique]
      } then {
 
  +.: 0+0 +1 +FUNC +LOCAL +DEFAULT +. function
  +.: 0+0 +1 +OBJECT +LOCAL +DEFAULT +. object
- +.: 0+1 +1 +TLS +LOCAL +DEFAULT +. tls_object
+ +[0-9]+: 0+1 +1 +TLS +LOCAL +DEFAULT +. tls_object
  +..: 0+2 +1 +NOTYPE +LOCAL +DEFAULT +. notype
  +..: 0+1 +1 +(COMMON|OBJECT) +GLOBAL +DEFAULT +(ANSI_|)COM common