diff options
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 6 | ||||
-rw-r--r-- | bfd/elfnn-aarch64.c | 6 |
2 files changed, 10 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index e2378fe..f4acd03 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,11 @@ 2015-08-11 Jiong Wang <jiong.wang@arm.com> + * bfd/elfnn-aarch64.c (aarch64_type_of_stub): New parameter "sym_sec". + Loose the check for symbol from ABS section. + (elfNN_aarch64_size_stubs): Pass sym_sec. + +2015-08-11 Jiong Wang <jiong.wang@arm.com> + PR ld/18668 * elfnn-aarch64.c (aarch64_type_of_stub): Update destination for calls go through plt stub. diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c index 097a275..37fe1a6 100644 --- a/bfd/elfnn-aarch64.c +++ b/bfd/elfnn-aarch64.c @@ -2316,6 +2316,7 @@ static enum elf_aarch64_stub_type aarch64_type_of_stub (struct bfd_link_info *info, asection *input_sec, const Elf_Internal_Rela *rel, + asection *sym_sec, unsigned char st_type, struct elf_aarch64_link_hash_entry *hash, bfd_vma destination) @@ -2327,7 +2328,8 @@ aarch64_type_of_stub (struct bfd_link_info *info, enum elf_aarch64_stub_type stub_type = aarch64_stub_none; bfd_boolean via_plt_p; - if (st_type != STT_FUNC) + if (st_type != STT_FUNC + && (sym_sec != bfd_abs_section_ptr)) return stub_type; globals = elf_aarch64_hash_table (info); @@ -3815,7 +3817,7 @@ elfNN_aarch64_size_stubs (bfd *output_bfd, /* Determine what (if any) linker stub is needed. */ stub_type = aarch64_type_of_stub - (info, section, irela, st_type, hash, destination); + (info, section, irela, sym_sec, st_type, hash, destination); if (stub_type == aarch64_stub_none) continue; |