--- /dev/null
+--- a/bfd/elfxx-mips.c
++++ b/bfd/elfxx-mips.c
+@@ -5696,9 +5696,9 @@ mips_elf_create_dynamic_relocation (bfd
+
+ /* We must now calculate the dynamic symbol table index to use
+ in the relocation. */
+- if (h != NULL
+- && (!h->root.def_regular
+- || (info->shared && !info->symbolic && !h->root.forced_local)))
++ if (!(h == NULL
++ || (h->root.def_regular
++ && (info->executable || info->symbolic || h->root.forced_local))))
+ {
+ indx = h->root.dynindx;
+ if (SGI_COMPAT (output_bfd))