aarch64: remove unnecessary loc_hash_table traversal
The loc_hash_table should only contain local ifunc symbols. The current code already aborts if there is anything else and for defined ifunc symbols elfNN_aarch64_allocate_dynrelocs is a no-op. bfd/ChangeLog: * elfnn-aarch64.c (elfNN_aarch64_allocate_local_dynrelocs): Remove. (elfNN_aarch64_size_dynamic_sections): Remove loc_hash_table traversal with elfNN_aarch64_allocate_local_dynrelocs.
This commit is contained in:
parent
08bb0061ba
commit
39c05d9435
@ -1,3 +1,9 @@
|
|||||||
|
2019-06-17 Szabolcs Nagy <szabolcs.nagy@arm.com>
|
||||||
|
|
||||||
|
* elfnn-aarch64.c (elfNN_aarch64_allocate_local_dynrelocs): Remove.
|
||||||
|
(elfNN_aarch64_size_dynamic_sections): Remove loc_hash_table traversal
|
||||||
|
with elfNN_aarch64_allocate_local_dynrelocs.
|
||||||
|
|
||||||
2019-06-14 Szabolcs Nagy <szabolcs.nagy@arm.com>
|
2019-06-14 Szabolcs Nagy <szabolcs.nagy@arm.com>
|
||||||
|
|
||||||
* elfnn-aarch64.c: Enable MOVW_PREL relocs for ELF32.
|
* elfnn-aarch64.c: Enable MOVW_PREL relocs for ELF32.
|
||||||
|
@ -8860,25 +8860,6 @@ elfNN_aarch64_allocate_ifunc_dynrelocs (struct elf_link_hash_entry *h,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Allocate space in .plt, .got and associated reloc sections for
|
|
||||||
local dynamic relocs. */
|
|
||||||
|
|
||||||
static bfd_boolean
|
|
||||||
elfNN_aarch64_allocate_local_dynrelocs (void **slot, void *inf)
|
|
||||||
{
|
|
||||||
struct elf_link_hash_entry *h
|
|
||||||
= (struct elf_link_hash_entry *) *slot;
|
|
||||||
|
|
||||||
if (h->type != STT_GNU_IFUNC
|
|
||||||
|| !h->def_regular
|
|
||||||
|| !h->ref_regular
|
|
||||||
|| !h->forced_local
|
|
||||||
|| h->root.type != bfd_link_hash_defined)
|
|
||||||
abort ();
|
|
||||||
|
|
||||||
return elfNN_aarch64_allocate_dynrelocs (h, inf);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Allocate space in .plt, .got and associated reloc sections for
|
/* Allocate space in .plt, .got and associated reloc sections for
|
||||||
local ifunc dynamic relocs. */
|
local ifunc dynamic relocs. */
|
||||||
|
|
||||||
@ -9066,11 +9047,6 @@ elfNN_aarch64_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
|||||||
elf_link_hash_traverse (&htab->root, elfNN_aarch64_allocate_ifunc_dynrelocs,
|
elf_link_hash_traverse (&htab->root, elfNN_aarch64_allocate_ifunc_dynrelocs,
|
||||||
info);
|
info);
|
||||||
|
|
||||||
/* Allocate .plt and .got entries, and space for local symbols. */
|
|
||||||
htab_traverse (htab->loc_hash_table,
|
|
||||||
elfNN_aarch64_allocate_local_dynrelocs,
|
|
||||||
info);
|
|
||||||
|
|
||||||
/* Allocate .plt and .got entries, and space for local ifunc symbols. */
|
/* Allocate .plt and .got entries, and space for local ifunc symbols. */
|
||||||
htab_traverse (htab->loc_hash_table,
|
htab_traverse (htab->loc_hash_table,
|
||||||
elfNN_aarch64_allocate_local_ifunc_dynrelocs,
|
elfNN_aarch64_allocate_local_ifunc_dynrelocs,
|
||||||
|
Loading…
Reference in New Issue
Block a user