diff options
author | Jiong Wang <jiong.wang@arm.com> | 2015-08-18 16:50:56 +0100 |
---|---|---|
committer | Jiong Wang <jiong.wang@arm.com> | 2015-08-18 16:50:56 +0100 |
commit | 44b4145b723b43b175d4378c77bd79faaaa80312 (patch) | |
tree | b46e07e4dd25336fb9ce308b8bc8154325af50f8 | |
parent | 566f5e3b385a99c09b5babc9f90dae93e052d52c (diff) | |
download | fsf-binutils-gdb-44b4145b723b43b175d4378c77bd79faaaa80312.zip fsf-binutils-gdb-44b4145b723b43b175d4378c77bd79faaaa80312.tar.gz fsf-binutils-gdb-44b4145b723b43b175d4378c77bd79faaaa80312.tar.bz2 |
[AArch64] Cleanup TLS relocation types which don't go through GOT table
This patch done two types of cleanup:
* in aarch64_reloc_got_type and elfNN_aarch64_relocate_section
We don't need those redundant "case" check, as they can be merged
with the "default" which just "break".
* in elfNN_aarch64_gc_sweep_hook and elfNN_aarch64_check_relocs
All TLS local executable relocations and some local dynamic
relocations (those calculate module offset) actually don't need GOT
entry, so remove them from GOT entry counting.
2015-08-18 Jiong Wang <jiong.wang@arm.com>
bfd/
* elfnn-aarch64.c (aarch64_reloc_got_type): Delete useless check.
(elfNN_aarch64_relocate_section): Likewise.
(elfNN_aarch64_gc_sweep_hook): Likewise.
(elfNN_aarch64_check_relocs): Likewise.
-rw-r--r-- | bfd/ChangeLog | 7 | ||||
-rw-r--r-- | bfd/elfnn-aarch64.c | 37 |
2 files changed, 7 insertions, 37 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index a182d2f..14290ab 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2015-08-18 Jiong Wang <jiong.wang@arm.com> + + * elfnn-aarch64.c (aarch64_reloc_got_type): Delete useless check. + (elfNN_aarch64_relocate_section): Likewise. + (elfNN_aarch64_gc_sweep_hook): Likewise. + (elfNN_aarch64_check_relocs): Likewise. + 2015-08-18 H.J. Lu <hongjiu.lu@intel.com> * bfd/aoutx.h: Replace shared, executable, relocatable and pie diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c index 9773e3e..beedb70 100644 --- a/bfd/elfnn-aarch64.c +++ b/bfd/elfnn-aarch64.c @@ -4193,17 +4193,6 @@ aarch64_reloc_got_type (bfd_reloc_code_real_type r_type) case BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19: return GOT_TLS_IE; - case BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12: - case BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12: - case BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12: - case BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC: - case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0: - case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC: - case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1: - case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC: - case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2: - return GOT_UNKNOWN; - default: break; } @@ -5710,16 +5699,6 @@ elfNN_aarch64_relocate_section (bfd *output_bfd, } break; - case BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12: - case BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12: - case BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC: - case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0: - case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC: - case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1: - case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC: - case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2: - break; - case BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC: case BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21: case BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21: @@ -6115,14 +6094,6 @@ elfNN_aarch64_gc_sweep_hook (bfd *abfd, case BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC: case BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21: case BFD_RELOC_AARCH64_TLSLD_ADR_PREL21: - case BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12: - case BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12: - case BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC: - case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0: - case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC: - case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1: - case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC: - case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2: if (h != NULL) { if (h->got.refcount > 0) @@ -6590,14 +6561,6 @@ elfNN_aarch64_check_relocs (bfd *abfd, struct bfd_link_info *info, case BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC: case BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21: case BFD_RELOC_AARCH64_TLSLD_ADR_PREL21: - case BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12: - case BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12: - case BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC: - case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0: - case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC: - case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1: - case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC: - case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2: { unsigned got_type; unsigned old_got_type; |