binutils: backport a fix for broken relocation entries on mips with -fPIE, fixes...
[openwrt-10.03/.git] / toolchain / binutils / patches / 2.19.1 / 310-backport_fPIE_mips_fix.patch
diff --git a/toolchain/binutils/patches/2.19.1/310-backport_fPIE_mips_fix.patch b/toolchain/binutils/patches/2.19.1/310-backport_fPIE_mips_fix.patch
new file mode 100644 (file)
index 0000000..19c0772
--- /dev/null
@@ -0,0 +1,15 @@
+--- a/bfd/elfxx-mips.c
++++ b/bfd/elfxx-mips.c
+@@ -5670,9 +5670,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))