From 3aa14d16c669ca75f9fa4e995a2e2d13069dff3f Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Mon, 1 Jun 2009 12:53:00 +0000 Subject: bfd/ 2009-06-01 H.J. Lu * elf-bfd.h (struct bfd_elf_section_data): Remove indirect_relocs. (_bfd_elf_make_ifunc_reloc_section): Removed. (_bfd_elf_is_ifunc_symbol): Likewise. (_bfd_elf_create_static_ifunc_sections): New. * elflink.c (_bfd_elf_adjust_dynamic_symbol): Move STT_GNU_IFUNC symbol check to ... (elf_link_add_object_symbols): Here. (_bfd_elf_link_hash_hide_symbol): Don't clean plt on STT_GNU_IFUNC symbol. (elf_link_output_extsym): Call elf_backend_finish_dynamic_symbol if a STT_GNU_IFUNC symbol is referenced in a non-shared object. (IFUNC_INFIX): Removed. (get_ifunc_reloc_section_name): Likewise. (_bfd_elf_make_ifunc_reloc_section): Likewise. (_bfd_elf_is_ifunc_symbol): Likewise. (_bfd_elf_create_static_ifunc_sections): New. ld/ 2009-06-01 H.J. Lu * scripttempl/elf.sc (PLT): Add "*(.iplt)". (GOT): Add "*(.igot.plt)a" and "*(.igot)". (GOTPLT): Add "*(.igot)". (__rel_iplt_start): New. (__rel_iplt_end): Likewise. (__rela_iplt_start): Likewise. (__rela_iplt_end): Likewise. --- bfd/elf-bfd.h | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) (limited to 'bfd/elf-bfd.h') diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index adac206..258d11c 100644 --- a/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h @@ -1299,9 +1299,6 @@ struct bfd_elf_section_data /* A pointer to the bfd section used for dynamic relocs. */ asection *sreloc; - /* A pointer to the bfd section used for dynamic relocs against ifunc symbols. */ - asection *indirect_relocs; - union { /* Group name, if this section is a member of a group. */ const char *name; @@ -2149,15 +2146,12 @@ extern int _bfd_elf_obj_attrs_arg_type (bfd *, int, int); extern void _bfd_elf_parse_attributes (bfd *, Elf_Internal_Shdr *); extern bfd_boolean _bfd_elf_merge_object_attributes (bfd *, bfd *); -extern asection * _bfd_elf_make_ifunc_reloc_section - (bfd *, asection *, bfd *, unsigned int); +extern bfd_boolean _bfd_elf_create_static_ifunc_sections + (bfd *, struct bfd_link_info *); /* Large common section. */ extern asection _bfd_elf_large_com_section; -extern bfd_boolean _bfd_elf_is_ifunc_symbol - (bfd *, struct elf_link_hash_entry *); - /* This is the condition under which finish_dynamic_symbol will be called. If our finish_dynamic_symbol isn't called, we'll need to do something about initializing any .plt and .got entries in relocate_section. */ -- cgit v1.1