View | Details | Raw Unified
Collapse All | Expand All

(-) bfd/elf64-x86-64.c (+1 lines)
 Lines 3658-3663   static const struct bfd_elf_special_sect Link Here 
  elf64_x86_64_reloc_name_lookup
  elf64_x86_64_reloc_name_lookup
#define elf_backend_adjust_dynamic_symbol   elf64_x86_64_adjust_dynamic_symbol
#define elf_backend_adjust_dynamic_symbol   elf64_x86_64_adjust_dynamic_symbol
#define elf_backend_relocs_compatible	    _bfd_elf_relocs_compatible
#define elf_backend_check_relocs	    elf64_x86_64_check_relocs
#define elf_backend_check_relocs	    elf64_x86_64_check_relocs
#define elf_backend_copy_indirect_symbol    elf64_x86_64_copy_indirect_symbol
#define elf_backend_copy_indirect_symbol    elf64_x86_64_copy_indirect_symbol
#define elf_backend_create_dynamic_sections elf64_x86_64_create_dynamic_sections
#define elf_backend_create_dynamic_sections elf64_x86_64_create_dynamic_sections
(-) bfd/elf64-sparc.c (+2 lines)
 Lines 870-875   const struct elf_size_info elf64_sparc_s Link Here 
#define elf_backend_create_dynamic_sections \
#define elf_backend_create_dynamic_sections \
  _bfd_sparc_elf_create_dynamic_sections
  _bfd_sparc_elf_create_dynamic_sections
#define elf_backend_relocs_compatible \
  _bfd_elf_relocs_compatible
#define elf_backend_check_relocs \
#define elf_backend_check_relocs \
  _bfd_sparc_elf_check_relocs
  _bfd_sparc_elf_check_relocs
#define elf_backend_adjust_dynamic_symbol \
#define elf_backend_adjust_dynamic_symbol \
(-) bfd/elf64-alpha.c (+2 lines)
 Lines 5329-5334   static const struct elf_size_info alpha_ Link Here 
#define elf_backend_add_symbol_hook \
#define elf_backend_add_symbol_hook \
  elf64_alpha_add_symbol_hook
  elf64_alpha_add_symbol_hook
#define elf_backend_relocs_compatible \
  _bfd_elf_relocs_compatible
#define elf_backend_check_relocs \
#define elf_backend_check_relocs \
  elf64_alpha_check_relocs
  elf64_alpha_check_relocs
#define elf_backend_create_dynamic_sections \
#define elf_backend_create_dynamic_sections \
(-) bfd/elf32-i386.c (-2 / +4 lines)
 Lines 3816-3824   elf_i386_hash_symbol (struct elf_link_ha Link Here 
#define bfd_elf32_bfd_is_local_label_name     elf_i386_is_local_label_name
#define bfd_elf32_bfd_is_local_label_name     elf_i386_is_local_label_name
#define bfd_elf32_bfd_link_hash_table_create  elf_i386_link_hash_table_create
#define bfd_elf32_bfd_link_hash_table_create  elf_i386_link_hash_table_create
#define bfd_elf32_bfd_reloc_type_lookup	      elf_i386_reloc_type_lookup
#define bfd_elf32_bfd_reloc_type_lookup	      elf_i386_reloc_type_lookup
#define bfd_elf32_bfd_reloc_name_lookup elf_i386_reloc_name_lookup
#define bfd_elf32_bfd_reloc_name_lookup	      elf_i386_reloc_name_lookup
#define elf_backend_adjust_dynamic_symbol     elf_i386_adjust_dynamic_symbol
#define elf_backend_adjust_dynamic_symbol     elf_i386_adjust_dynamic_symbol
#define elf_backend_relocs_compatible	      _bfd_elf_relocs_compatible
#define elf_backend_check_relocs	      elf_i386_check_relocs
#define elf_backend_check_relocs	      elf_i386_check_relocs
#define elf_backend_copy_indirect_symbol      elf_i386_copy_indirect_symbol
#define elf_backend_copy_indirect_symbol      elf_i386_copy_indirect_symbol
#define elf_backend_create_dynamic_sections   elf_i386_create_dynamic_sections
#define elf_backend_create_dynamic_sections   elf_i386_create_dynamic_sections
 Lines 3904-3910   elf_i386_vxworks_link_hash_table_create Link Here 
}
}
#undef	elf_backend_post_process_headers
#undef elf_backend_relocs_compatible
#undef elf_backend_post_process_headers
#undef bfd_elf32_bfd_link_hash_table_create
#undef bfd_elf32_bfd_link_hash_table_create
#define bfd_elf32_bfd_link_hash_table_create \
#define bfd_elf32_bfd_link_hash_table_create \
  elf_i386_vxworks_link_hash_table_create
  elf_i386_vxworks_link_hash_table_create
(-) bfd/elfxx-target.h (+4 lines)
 Lines 378-383    Link Here 
#ifndef elf_backend_omit_section_dynsym
#ifndef elf_backend_omit_section_dynsym
#define elf_backend_omit_section_dynsym _bfd_elf_link_omit_section_dynsym
#define elf_backend_omit_section_dynsym _bfd_elf_link_omit_section_dynsym
#endif
#endif
#ifndef elf_backend_relocs_compatible
#define elf_backend_relocs_compatible _bfd_elf_default_relocs_compatible
#endif
#ifndef elf_backend_check_relocs
#ifndef elf_backend_check_relocs
#define elf_backend_check_relocs	0
#define elf_backend_check_relocs	0
#endif
#endif
 Lines 636-641   static struct elf_backend_data elfNN_bed Link Here 
  elf_backend_link_output_symbol_hook,
  elf_backend_link_output_symbol_hook,
  elf_backend_create_dynamic_sections,
  elf_backend_create_dynamic_sections,
  elf_backend_omit_section_dynsym,
  elf_backend_omit_section_dynsym,
  elf_backend_relocs_compatible,
  elf_backend_check_relocs,
  elf_backend_check_relocs,
  elf_backend_check_directives,
  elf_backend_check_directives,
  elf_backend_as_needed_cleanup,
  elf_backend_as_needed_cleanup,
(-) bfd/elflink.c (-1 / +36 lines)
 Lines 3243-3248   elf_finalize_dynstr (bfd *output_bfd, st Link Here 
  return TRUE;
  return TRUE;
}
}
/* Return TRUE iff relocations for INPUT are compatible with OUTPUT.
   The default is to only match when the INPUT and OUTPUT are exactly
   the same target.  */
bfd_boolean
_bfd_elf_default_relocs_compatible (const bfd_target *input,
				    const bfd_target *output)
{
  return input == output;
}
/* Return TRUE iff relocations for INPUT are compatible with OUTPUT.
   This version is used when different targets for the same architecture
   are virtually identical.  */
bfd_boolean
_bfd_elf_relocs_compatible (const bfd_target *input,
			    const bfd_target *output)
{
  const struct elf_backend_data *obed, *ibed;
  if (input == output)
    return TRUE;
  ibed = xvec_get_elf_backend_data (input);
  obed = xvec_get_elf_backend_data (output);
  if (ibed->arch != obed->arch)
    return FALSE;
  /* If both backends are using this function, deem them compatible.  */
  return ibed->relocs_compatible == obed->relocs_compatible;
}


/* Add symbols from an ELF object file to the linker hash table.  */
/* Add symbols from an ELF object file to the linker hash table.  */
 Lines 4628-4634   elf_link_add_object_symbols (bfd *abfd, Link Here 
  if (! dynamic
  if (! dynamic
      && is_elf_hash_table (htab)
      && is_elf_hash_table (htab)
      && htab->root.creator == abfd->xvec
      && htab->root.creator == abfd->xvec
      && bed->check_relocs != NULL)
      && bed->check_relocs != NULL
      && (*bed->relocs_compatible) (abfd->xvec, htab->root.creator))
    {
    {
      asection *o;
      asection *o;
(-) bfd/elf-bfd.h (+10 lines)
 Lines 700-705   struct elf_backend_data Link Here 
  bfd_boolean (*elf_backend_omit_section_dynsym)
  bfd_boolean (*elf_backend_omit_section_dynsym)
    (bfd *output_bfd, struct bfd_link_info *info, asection *osec);
    (bfd *output_bfd, struct bfd_link_info *info, asection *osec);
  /* Return TRUE if relocations of targets are compatible to the extent
     that CHECK_RELOCS will properly process them.  PR 4424.  */
  bfd_boolean (*relocs_compatible) (const bfd_target *, const bfd_target *);
  /* The CHECK_RELOCS function is called by the add_symbols phase of
  /* The CHECK_RELOCS function is called by the add_symbols phase of
     the ELF backend linker.  It is called once for each section with
     the ELF backend linker.  It is called once for each section with
     relocs of an object file, just after the symbols for the object
     relocs of an object file, just after the symbols for the object
 Lines 1926-1931   extern void bfd_elf64_write_relocs Link Here 
extern bfd_boolean bfd_elf64_slurp_reloc_table
extern bfd_boolean bfd_elf64_slurp_reloc_table
  (bfd *, asection *, asymbol **, bfd_boolean);
  (bfd *, asection *, asymbol **, bfd_boolean);
extern bfd_boolean _bfd_elf_default_relocs_compatible
  (const bfd_target *, const bfd_target *);
extern bfd_boolean _bfd_elf_relocs_compatible
  (const bfd_target *, const bfd_target *);
extern struct elf_link_hash_entry *_bfd_elf_archive_symbol_lookup
extern struct elf_link_hash_entry *_bfd_elf_archive_symbol_lookup
  (bfd *, struct bfd_link_info *, const char *);
  (bfd *, struct bfd_link_info *, const char *);
extern bfd_boolean bfd_elf_link_add_symbols
extern bfd_boolean bfd_elf_link_add_symbols
(-) bfd/config.bfd (-3 / +4 lines)
 Lines 140-146   case "${targ}" in Link Here 
#ifdef BFD64
#ifdef BFD64
  alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
  alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
    targ_defvec=bfd_elf64_alpha_freebsd_vec
    targ_defvec=bfd_elf64_alpha_freebsd_vec
    targ_selvecs=ecoffalpha_little_vec
    targ_selvecs="bfd_elf64_alpha_vec ecoffalpha_little_vec"
    want64=true
    want64=true
    # FreeBSD <= 4.0 supports only the old nonstandard way of ABI labelling.
    # FreeBSD <= 4.0 supports only the old nonstandard way of ABI labelling.
    case "${targ}" in
    case "${targ}" in
 Lines 188-194   case "${targ}" in Link Here 
    ;;
    ;;
  sparc64-*-freebsd* | sparc64-*-kfreebsd*-gnu)
  sparc64-*-freebsd* | sparc64-*-kfreebsd*-gnu)
    targ_defvec=bfd_elf64_sparc_freebsd_vec
    targ_defvec=bfd_elf64_sparc_freebsd_vec
    targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec"
    targ_selvecs="bfd_elf64_sparc_vec bfd_elf32_sparc_vec sunos_big_vec"
    ;;
    ;;
  sparc64-*-netbsd* | sparc64-*-openbsd*)
  sparc64-*-netbsd* | sparc64-*-openbsd*)
    targ_defvec=bfd_elf64_sparc_vec
    targ_defvec=bfd_elf64_sparc_vec
 Lines 535-541   case "${targ}" in Link Here 
    ;;
    ;;
  i[3-7]86-*-freebsd* | i[3-7]86-*-kfreebsd*-gnu | i[3-7]86-*-dragonfly*)
  i[3-7]86-*-freebsd* | i[3-7]86-*-kfreebsd*-gnu | i[3-7]86-*-dragonfly*)
    targ_defvec=bfd_elf32_i386_freebsd_vec
    targ_defvec=bfd_elf32_i386_freebsd_vec
    targ_selvecs=i386coff_vec
    targ_selvecs="bfd_elf32_i386_vec bfd_efi_app_ia32_vec i386coff_vec"
    targ64_selvecs="bfd_elf64_x86_64_freebsd_vec bfd_elf64_x86_64_vec bfd_efi_app_x86_64_vec"
    # FreeBSD <= 4.0 supports only the old nonstandard way of ABI labelling.
    # FreeBSD <= 4.0 supports only the old nonstandard way of ABI labelling.
    case "${targ}" in
    case "${targ}" in
      i[3-7]86-*-freebsd3* | i[3-7]86-*-freebsd4 | i[3-7]86-*-freebsd4.0*)
      i[3-7]86-*-freebsd3* | i[3-7]86-*-freebsd4 | i[3-7]86-*-freebsd4.0*)