+2013-11-26 Will Newton <will.newton@linaro.org>
+
+ * elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Ensure
+ PLT_INDEX is calculated using correct header size.
+
2013-11-22 Cory Fields <cory@coryfields.com>
* libcoff-in.h: Add insert_timestamp flag to the pe_data struct.
if (globals->root.splt != NULL)
{
- plt_index = h->plt.offset / globals->plt_entry_size - 1;
+ plt_index = ((h->plt.offset - globals->plt_header_size) /
+ globals->plt_entry_size);
off = (plt_index + 3) * GOT_ENTRY_SIZE;
base_got = globals->root.sgotplt;
}
+2013-11-26 Will Newton <will.newton@linaro.org>
+
+ * ld-aarch64/aarch64-elf.exp: Add ifunc-21 test.
+ * ld-aarch64/ifunc-21.d: New file.
+ * ld-aarch64/ifunc-21.s: Likewise.
+
2013-11-21 H.J. Lu <hongjiu.lu@intel.com>
* ld-x86-64/mpx.exp: Run bnd-branch-1.
run_dump_test "ifunc-19a"
run_dump_test "ifunc-19b"
run_dump_test "ifunc-20"
+run_dump_test "ifunc-21"
--- /dev/null
+#source: ifunc-21.s
+#ld: -shared -z nocombreloc
+#objdump: -d -s -j .got.plt -j .text
+#target: aarch64*-*-*
+
+# Ensure the .got.plt slot used is correct
+
+.*: file format elf64-(little|big)aarch64
+
+Contents of section .text:
+ 02a0 .*
+Contents of section .got.plt:
+ 103a8 0+ 0+ 0+ 0+ .*
+ 103b8 0+ 0+ [0-9a-f]+ 0+ .*
+
+Disassembly of section .text:
+
+0+2a0 <ifunc>:
+ 2a0: d65f03c0 ret
+
+0+2a4 <bar>:
+ 2a4: 90000080 adrp x0, 10000 <.*>
+ 2a8: f941e000 ldr x0, \[x0,#960\]
+ 2ac: d65f03c0 ret
+
+Disassembly of section .got.plt:
+
+.*:
+.*
+.*
+.*
--- /dev/null
+ .text
+ .type ifunc, @gnu_indirect_function
+ .hidden ifunc
+ifunc:
+ ret
+ .size ifunc, .-ifunc
+ .type bar, @function
+ .globl bar
+bar:
+ adrp x0, :got:ifunc
+ ldr x0, [x0, #:got_lo12:ifunc]
+ ret
+ .size bar, .-bar