From here:
https://sourceware.org/bugzilla/show_bug.cgi?id=19516

diff -Nur binutils-2.25.1.orig/bfd/elf32-microblaze.c binutils-2.25.1/bfd/elf32-microblaze.c
--- binutils-2.25.1.orig/bfd/elf32-microblaze.c	2015-07-21 10:20:58.000000000 +0200
+++ binutils-2.25.1/bfd/elf32-microblaze.c	2016-02-14 11:38:45.822387506 +0100
@@ -3293,8 +3293,7 @@
          The entry in the global offset table will already have been
          initialized in the relocate_section function.  */
       if (info->shared
-          && (info->symbolic || h->dynindx == -1)
-          && h->def_regular)
+          && ((info->symbolic && h->def_regular) || h->dynindx == -1))
         {
           asection *sec = h->root.u.def.section;
           microblaze_elf_output_dynamic_relocation (output_bfd,
