bfd/
PR ld/14980
* elf32-i386.c (elf_i386_adjust_dynamic_symbol): Properly
adjust h->plt.refcount.
* elf64-x86-64.c (elf_x86_64_adjust_dynamic_symbol): Likewise.
ld/testsuite/
PR ld/14980
* ld-ifunc/ifunc-14c.s: New file.
* ld-ifunc/ifunc-14e-i386.d: Likewise.
* ld-ifunc/ifunc-14e-x86-64.d: Likewise.
* ld-ifunc/ifunc-14f-i386.d: Likewise.
* ld-ifunc/ifunc-14f-x86-64.d: Likewise.
+2012-12-21 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/14980
+ * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Properly
+ adjust h->plt.refcount.
+ * elf64-x86-64.c (elf_x86_64_adjust_dynamic_symbol): Likewise.
+
2012-12-19 H.J. Lu <hongjiu.lu@intel.com>
* elf32-i386.c (elf_i386_relocate_section): Replace
if (pc_count || count)
{
h->needs_plt = 1;
- h->plt.refcount += 1;
h->non_got_ref = 1;
+ if (h->plt.refcount <= 0)
+ h->plt.refcount = 1;
+ else
+ h->plt.refcount += 1;
}
}
if (pc_count || count)
{
h->needs_plt = 1;
- h->plt.refcount += 1;
h->non_got_ref = 1;
+ if (h->plt.refcount <= 0)
+ h->plt.refcount = 1;
+ else
+ h->plt.refcount += 1;
}
}
+2012-12-21 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/14980
+ * ld-ifunc/ifunc-14c.s: New file.
+ * ld-ifunc/ifunc-14e-i386.d: Likewise.
+ * ld-ifunc/ifunc-14e-x86-64.d: Likewise.
+ * ld-ifunc/ifunc-14f-i386.d: Likewise.
+ * ld-ifunc/ifunc-14f-x86-64.d: Likewise.
+
2012-12-19 Alan Modra <amodra@gmail.com>
PR ld/14962
--- /dev/null
+ .text
+ .globl xxx
+ .type xxx, @function
+xxx:
+ jmp foo
+ .size xxx, .-xxx
+ .hidden foo
--- /dev/null
+#source: ifunc-14a.s
+#source: ifunc-14c.s
+#source: ifunc-14b.s
+#ld: -shared -m elf_i386 -z nocombreloc
+#as: --32
+#readelf: -r --wide
+#target: x86_64-*-* i?86-*-*
+
+#failif
+#...
+.* +R_386_NONE +.*
+#...
--- /dev/null
+#source: ifunc-14a.s
+#source: ifunc-14c.s
+#source: ifunc-14b.s
+#ld: -shared -m elf_x86_64 -z nocombreloc
+#as: --64
+#readelf: -r --wide
+#target: x86_64-*-*
+
+#failif
+#...
+.* +R_X86_64_NONE +.*
+#...
--- /dev/null
+#source: ifunc-14a.s
+#source: ifunc-14b.s
+#source: ifunc-14c.s
+#ld: -shared -m elf_i386 -z nocombreloc
+#as: --32
+#readelf: -r --wide
+#target: x86_64-*-* i?86-*-*
+
+#failif
+#...
+.* +R_386_NONE +.*
+#...
--- /dev/null
+#source: ifunc-14a.s
+#source: ifunc-14b.s
+#source: ifunc-14c.s
+#ld: -shared -m elf_x86_64 -z nocombreloc
+#as: --64
+#readelf: -r --wide
+#target: x86_64-*-*
+
+#failif
+#...
+.* +R_X86_64_NONE +.*
+#...