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
..
2012-12-17 16:56:03 +00:00
2012-12-10 12:48:00 +00:00
2013-02-04 05:25:41 +00:00
2013-06-26 10:47:06 +00:00
2013-03-15 17:53:41 +00:00
2012-12-10 12:48:00 +00:00
2012-12-10 12:48:00 +00:00
2013-06-26 07:04:57 +00:00
2012-12-10 12:48:00 +00:00
2012-12-10 12:48:00 +00:00
2012-12-17 16:56:03 +00:00
2012-12-18 17:41:27 +00:00
2013-02-18 23:50:26 +00:00
2010-04-15 10:26:09 +00:00
2013-06-08 10:22:55 +00:00
2012-12-10 12:48:00 +00:00
2013-04-03 18:21:40 +00:00
2013-02-06 23:22:18 +00:00
2012-11-11 22:37:19 +00:00
2013-03-01 23:40:38 +00:00
2012-07-13 23:39:46 +00:00
2011-01-03 21:05:50 +00:00
2012-12-17 16:56:03 +00:00
2012-12-17 16:56:03 +00:00
2012-12-17 16:56:03 +00:00
2010-06-10 18:30:17 +00:00
2010-04-15 10:26:09 +00:00
2012-05-24 01:18:15 +00:00
2011-09-28 20:01:37 +00:00
2012-12-17 16:56:03 +00:00
2013-01-30 16:52:35 +00:00
2010-04-15 10:26:09 +00:00
2012-10-10 03:11:22 +00:00
2011-10-22 01:35:29 +00:00
2013-02-11 19:36:56 +00:00
2010-04-15 10:26:09 +00:00
2013-01-30 16:52:35 +00:00
2010-11-17 02:03:39 +00:00
2012-04-10 17:07:28 +00:00
2011-09-28 20:01:37 +00:00
2011-07-25 17:11:44 +00:00
2011-01-03 21:05:50 +00:00
2010-04-15 10:26:09 +00:00
2010-04-15 10:26:09 +00:00