Yufeng Zhang
bce06a5f2f
[AArch64, ILP32] 3/6 Support for ELF32 relocs and refactor reloc handling
bfd/
* bfd-in2.h: Re-generated.
* elfnn-aarch64.c (HOWTO64, HOWTO32): New define.
(IS_AARCH64_TLS_RELOC): Change to be based on the
bfd reloc enumerators.
(IS_AARCH64_TLSDESC_RELOC): Likewise.
(PG, PG_OFFSET): Cast literal to bfd_vma.
(elf64_aarch64_howto_table): Removed.
(elf64_aarch64_howto_dynrelocs): Removed.
(elf64_aarch64_tls_howto_table): Removed.
(elf64_aarch64_tlsdesc_howto_table): Removed.
(elfNN_aarch64_howto_table): New table to host all howto entires..
(R_AARCH64_*): Replaced by AARCH64_R (*) and AARCH64_R_STR (*).
(elfNN_aarch64_bfd_reloc_from_howto): New function.
(elfNN_aarch64_bfd_reloc_from_type): Ditto.
(struct elf_aarch64_reloc_map): New.
(elf_aarch64_reloc_map): New table.
(elfNN_aarch64_howto_from_bfd_reloc): New function.
(elfNN_aarch64_howto_from_type): Update to look up the new table
elfNN_aarch64_howto_table.
(struct elf64_aarch64_reloc_map): Remove.
(elf64_aarch64_reloc_map): Remove.
(elfNN_aarch64_reloc_type_lookup): Change to call
elfNN_aarch64_howto_from_bfd_reloc.
(elfNN_aarch64_reloc_name_lookup): Change to look up the new table
elfNN_aarch64_howto_table.
(aarch64_resolve_relocation): Refactor to switch on the bfd
reloc enumerators.
(bfd_elf_aarch64_put_addend): Likewise.
(elfNN_aarch64_final_link_relocate): Likewise.
(aarch64_tls_transition_without_check): Likewise.
(aarch64_reloc_got_type): Likewise.
(aarch64_can_relax_tls): Likewise.
(aarch64_tls_transition): Likewise.
(elfNN_aarch64_tls_relax): Likewise.
(elfNN_aarch64_final_link_relocate): Likewise.
(elfNN_aarch64_relocate_section): Likewise.
(elfNN_aarch64_gc_sweep_hook): Likewise.
(elfNN_aarch64_check_relocs): Likewise.
(aarch64_tls_transition): Change to return a bfd reloc enumerator.
* libbfd.h: Re-generated.
* reloc.c: Re-order the AArch64 bfd reloc enumerators.
(BFD_RELOC_AARCH64_RELOC_START)
(BFD_RELOC_AARCH64_RELOC_END)
(BFD_RELOC_AARCH64_LD_GOT_LO12_NC)
(BFD_RELOC_AARCH64_LD32_GOT_LO12_NC)
(BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC)
(BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC)
(BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC)
(BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC)
(BFD_RELOC_AARCH64_IRELATIVE): New relocs.
gas/
* config/tc-aarch64.c (reloc_table): Replace
BFD_RELOC_AARCH64_LD64_GOT_LO12_NC with
BFD_RELOC_AARCH64_LD_GOT_LO12_NC; likewise to
BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC and
BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC.
(md_apply_fix): Handle BFD_RELOC_AARCH64_LD_GOT_LO12_NC,
BFD_RELOC_AARCH64_LD32_GOT_LO12_NC,
BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC,
BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC,
BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC and
BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC.
(aarch64_force_relocation): Likewise.
gas/testsuite/
* gas/aarch64/ilp32-basic.d: New file.
* gas/aarch64/ilp32-basic.s: New file.
include/elf/
* aarch64.h: Add ELF32 reloc codes and remove fake ELF64 ones.
(R_AARCH64_IRELATIVE): New reloc.
2013-06-26 10:47:06 +00:00
..
2013-06-26 10:47:06 +00:00
2010-04-15 10:26:09 +00:00
2010-04-15 10:26:09 +00:00
2012-10-30 12:44:57 +00:00
2012-05-16 14:52:16 +00:00
2010-11-15 22:30:47 +00:00
2013-06-26 10:47:06 +00:00
2012-12-10 12:48:00 +00:00
2013-05-22 17:02:35 +00:00
2010-04-15 10:26:09 +00:00
2010-04-15 10:26:09 +00:00
2010-04-15 10:26:09 +00:00
2010-04-15 10:26:09 +00:00
2010-04-15 10:26:09 +00:00
2010-04-15 10:26:09 +00:00
2010-04-15 10:26:09 +00:00
2010-04-15 10:26:09 +00:00
2011-10-27 14:27:16 +00:00
2010-04-15 10:26:09 +00:00
2010-04-15 10:26:09 +00:00
2010-04-15 10:26:09 +00:00
2013-03-21 16:08:06 +00:00
2010-04-15 10:26:09 +00:00
2010-05-18 03:31:06 +00:00
2013-01-16 20:31:57 +00:00
2010-04-15 10:26:09 +00:00
2010-04-15 10:26:09 +00:00
2011-06-09 08:53:05 +00:00
2011-03-14 15:54:57 +00:00
2010-04-15 10:26:09 +00:00
2010-04-15 10:26:09 +00:00
2010-04-15 10:26:09 +00:00
2010-04-15 10:26:09 +00:00
2010-04-15 10:26:09 +00:00
2012-08-02 20:08:54 +00:00
2010-04-15 10:26:09 +00:00
2010-04-15 10:26:09 +00:00
2010-04-15 10:26:09 +00:00
2013-01-10 09:49:18 +00:00
2012-12-11 16:56:53 +00:00
2013-06-24 23:55:45 +00:00
2010-04-15 10:26:09 +00:00
2010-04-15 10:26:09 +00:00
2012-03-07 17:51:56 +00:00
2010-04-15 10:26:09 +00:00
2013-05-02 21:06:14 +00:00
2010-04-15 10:26:09 +00:00
2013-02-06 23:22:18 +00:00
2010-04-15 10:26:09 +00:00
2010-05-18 03:31:06 +00:00
2010-04-15 10:26:09 +00:00
2011-10-10 13:21:05 +00:00
2012-05-14 19:45:27 +00:00
2011-06-02 13:43:23 +00:00
2011-12-23 01:49:37 +00:00
2012-11-09 17:00:42 +00:00
2012-07-13 15:47:25 +00:00
2009-03-02 10:33:07 +00:00
2010-05-25 14:12:41 +00:00
2012-04-27 18:00:52 +00:00
2010-04-15 10:26:09 +00:00
2010-11-02 14:36:37 +00:00
2011-05-09 13:17:58 +00:00
2012-08-28 02:43:22 +00:00
2012-02-25 22:24:21 +00:00
2013-01-24 11:14:01 +00:00
2010-04-15 10:26:09 +00:00
2010-04-15 10:26:09 +00:00
2013-01-16 20:31:57 +00:00
2010-04-15 10:26:09 +00:00
2012-05-03 13:12:06 +00:00
2010-04-15 10:26:09 +00:00
2010-04-15 10:26:09 +00:00