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,