+2013-06-14 Yufeng Zhang <yufeng.zhang@arm.com>
+
+ * elf64-aarch64.c (elf64_aarch64_final_link_relocate): Call
+ aarch64_resolve_relocation and bfd_elf_aarch64_put_addend to
+ handle the relocations of R_AARCH64_JUMP26, R_AARCH64_CALL26,
+ R_AARCH64_LD64_GOT_LO12_NC, R_AARCH64_ADR_GOT_PAGE and
+ R_AARCH64_GOT_LD_PREL19.
+
2013-06-13 Terry Guo <terry.guo@arm.com>
PR ld/15302
internal symbol, we have updated addend. */
return bfd_reloc_ok;
}
- /* FALLTHROUGH */
- case R_AARCH64_JUMP26:
- case R_AARCH64_CALL26:
return _bfd_final_link_relocate (howto, input_bfd, input_section,
contents, rel->r_offset, value,
signed_addend);
+
+ case R_AARCH64_JUMP26:
+ case R_AARCH64_CALL26:
+ value = aarch64_resolve_relocation (r_type, place, value,
+ signed_addend, weak_undef_p);
+ return bfd_elf_aarch64_put_addend (input_bfd, hit_data, howto, value);
+
case R_AARCH64_LD64_GOT_LO12_NC:
case R_AARCH64_ADR_GOT_PAGE:
case R_AARCH64_GOT_LD_PREL19:
unresolved_reloc_p);
value = aarch64_resolve_relocation (r_type, place, value,
0, weak_undef_p);
- return _bfd_final_link_relocate (howto, input_bfd, input_section,
- contents, rel->r_offset, value,
- signed_addend);
+ return bfd_elf_aarch64_put_addend (input_bfd, hit_data, howto, value);
+
case R_AARCH64_ADR_PREL_PG_HI21:
case R_AARCH64_ADD_ABS_LO12_NC:
break;
+2013-06-14 Yufeng Zhang <yufeng.zhang@arm.com>
+
+ * ld-aarch64/aarch64-elf.exp: Add 'ifunc-7c'.
+ * ld-aarch64/ifunc-7c.d: New test.
+
2013-06-14 Yufeng Zhang <yufeng.zhang@arm.com>
* ld-aarch64/ifunc-1-local.d: Replace hard-coded immediate offset
--- /dev/null
+#source: ifunc-7.s
+#ld: -shared
+#objdump: -dr -j .text
+#target: aarch64*-*-*
+
+# Check if adrp and ldr have been relocated correctly.
+
+.*: file format elf.+aarch64.*
+
+
+Disassembly of section \.text:
+
+[0-9a-f]+ <foo>:
+ [0-9a-f]+: d65f03c0 ret
+
+[0-9a-f]+ <__start>:
+ [0-9a-f]+: [0-9a-f]+ bl [0-9a-f]+ <\*ABS\*\+0x[0-9a-f]+@plt>
+ [0-9a-f]+: [0-9a-f]+ adrp x0, [0-9]+ <__start\+0x[0-9a-f]+>
+ [0-9a-f]+: [0-9a-f]+ ldr x0, \[x0,.+\]