X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=bfd%2Felf-bfd.h;h=3184e573224060a45b04d39bca6b16275dce6dd5;hb=bb7c96deb1a14ef7e8b51d5339a65a8064515c78;hp=5c93d78c394ec29dd479c1db8c23675315e06b7a;hpb=84865015459b4e9e8ac67f9b91617fbd856d5119;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index 5c93d78c39..3184e57322 100644 --- a/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h @@ -124,7 +124,8 @@ struct elf_link_hash_entry struct bfd_link_hash_entry root; /* Symbol index in output file. This is initialized to -1. It is - set to -2 if the symbol is used by a reloc. */ + set to -2 if the symbol is used by a reloc. It is set to -3 if + this symbol is defined in a discarded section. */ long indx; /* Symbol index as a dynamic symbol. Initialized to -1, and remains @@ -520,8 +521,8 @@ struct elf_link_hash_table union gotplt_union init_got_offset; union gotplt_union init_plt_offset; - /* The number of symbols found in the link which must be put into - the .dynsym section. */ + /* The number of symbols found in the link which is intended for the + mandatory DT_SYMTAB tag (.dynsym section) in .dynamic section. */ bfd_size_type dynsymcount; /* The string table of dynamic symbols, which becomes the .dynstr @@ -702,9 +703,9 @@ struct elf_size_info { enum elf_reloc_type_class { reloc_class_normal, reloc_class_relative, - reloc_class_plt, reloc_class_copy, - reloc_class_ifunc + reloc_class_ifunc, + reloc_class_plt }; struct elf_reloc_cookie @@ -1300,13 +1301,15 @@ struct elf_backend_data /* Return the section which RELOC_SEC applies to. */ asection *(*get_reloc_section) (asection *reloc_sec); - /* Called when setting the sh_link and sh_info fields of a section with a - type >= SHT_LOOS. Returns TRUE if these fields were initialised in - OHEADER, FALSE otherwise. IHEADER is the best guess matching section - from the input bfd IBFD. */ - bfd_boolean (*elf_backend_set_special_section_info_and_link) - (const bfd *ibfd, bfd *obfd, const Elf_Internal_Shdr *iheader, - Elf_Internal_Shdr *oheader); + /* Called to set the sh_flags, sh_link and sh_info fields of OSECTION which + has a type >= SHT_LOOS. Returns TRUE if the fields were initialised, + FALSE otherwise. Can be called multiple times for a given section, + until it returns TRUE. Most of the times it is called ISECTION will be + set to an input section that might be associated with the output section. + The last time that it is called, ISECTION will be set to NULL. */ + bfd_boolean (*elf_backend_copy_special_section_fields) + (const bfd *ibfd, bfd *obfd, const Elf_Internal_Shdr *isection, + Elf_Internal_Shdr *osection); /* Used to handle bad SHF_LINK_ORDER input. */ bfd_error_handler_type link_order_error_handler; @@ -2261,6 +2264,8 @@ extern bfd_boolean bfd_elf_link_add_symbols (bfd *, struct bfd_link_info *); extern bfd_boolean _bfd_elf_add_dynamic_entry (struct bfd_link_info *, bfd_vma, bfd_vma); +extern bfd_boolean _bfd_elf_link_check_relocs + (bfd *, struct bfd_link_info *); extern bfd_boolean bfd_elf_link_record_dynamic_symbol (struct bfd_link_info *, struct elf_link_hash_entry *); @@ -2334,6 +2339,9 @@ extern bfd_boolean bfd_elf_gc_common_finalize_got_offsets extern bfd_boolean bfd_elf_gc_common_final_link (bfd *, struct bfd_link_info *); +extern asection *_bfd_elf_is_start_stop + (const struct bfd_link_info *, struct elf_link_hash_entry *); + extern bfd_boolean bfd_elf_reloc_symbol_deleted_p (bfd_vma, void *); @@ -2586,12 +2594,11 @@ extern asection _bfd_elf_large_com_section; bfd_boolean err; \ err = (info->unresolved_syms_in_objects == RM_GENERATE_ERROR \ || ELF_ST_VISIBILITY (h->other) != STV_DEFAULT); \ - if (!info->callbacks->undefined_symbol (info, \ - h->root.root.string, \ - input_bfd, \ - input_section, \ - rel->r_offset, err)) \ - return FALSE; \ + (*info->callbacks->undefined_symbol) (info, \ + h->root.root.string, \ + input_bfd, \ + input_section, \ + rel->r_offset, err); \ warned = TRUE; \ } \ (void) unresolved_reloc; \