(struct elf_backend_data): Add can_refcount.
* elf.c (_bfd_elf_link_hash_newfunc): Get rid of a few casts. Set
got.refcount and plt.refcount from init_refcount.
(_bfd_elf_link_hash_table_init): Set up init_refcount.
(_bfd_elf_link_hash_copy_indirect): Reference got/plt.refcount
rather than got/plt.offset, and test for <= 0 rather than -1.
* elflink.h (size_dynamic_sections): Set init_refcount to -1.
* elfxx-target.h (elf_backend_can_refcount): Define.
(elfNN_bed): Init can_refcount.
* linker.c (_bfd_link_hash_newfunc): Get rid of a few casts.
(_bfd_generic_link_hash_newfunc): Likewise.
* elf32-cris.c (cris_elf_check_relocs): Modify for refcounts
starting from zero.
(elf_backend_can_refcount): Define.
* elf32-hppa.c (elf32_hppa_check_relocs): Modify for refcounts
starting from zero.
(elf32_hppa_copy_indirect_symbol): Make static to agree with
prototype.
(elf_backend_can_refcount): Define.
* elf32-i386.c (elf_i386_check_relocs): Modify for refcounts
starting from zero.
(allocate_dynrelocs): Set plt/got.offset rather than *.refcount.
(elf_i386_finish_dynamic_symbol): Expand SHN_UNDEF comment.
(elf_i386_finish_dynamic_sections): Use local var so line < 80 chars.
(elf_backend_can_refcount): Define.
(elf_i386_copy_indirect_symbol): Make static to agree with
prototype. Formatting fix.
* elf32-m68k.c (elf_m68k_check_relocs): Modify for refcounts
starting from zero.
(elf_backend_can_refcount): Define.
* elf32-ppc.c (ppc_elf_check_relocs): Modify for refcounts
starting from zero.
(elf_backend_can_refcount): Define.
* elf32-s390.c (elf_s390_check_relocs): Modify for refcounts
starting from zero.
(elf_backend_can_refcount): Define.
* elf64-s390.c (elf_s390_check_relocs): Modify for refcounts
starting from zero.
(elf_backend_can_refcount): Define.
* elf64-x86-64.c (elf64_x86_64_check_relocs): Modify for refcounts
starting from zero.
(elf_backend_can_refcount): Define.
o bfd_read and bfd_write lose an unnecessary param and become
bfd_bread and bfd_bwrite.
o bfd_*alloc now all take a bfd_size_type arg, and will error if
size_t is too small. eg. 32 bit host, 64 bit bfd, verrry big files
or bugs in linker scripts etc.
o file_ptr becomes a bfd_signed_vma. Besides matching sizes with
various other types involved in handling sections, this should make
it easier for bfd to support a 64 bit off_t on 32 bit hosts that
provide it.
o I've made the H_GET_* and H_PUT_* macros (which invoke bfd_h_{get,put}_*)
generally available. They now cast their args to bfd_vma and
bfd_byte * as appropriate, which removes a swag of casts from the
source.
o Bug fixes to bfd_get8, aix386_core_vec, elf32_h8_relax_section, and
aout-encap.c.
o Zillions of formatting and -Wconversion fixes.
reloc is against read-only section.
(elf_cris_size_dynamic_sections): Use DF_TEXTREL flag instead of
looking up section names for DT_TEXTREL.
(elf_cris_reloc_type_class): New.
(elf_backend_reloc_type_class): Define.
* elf32-sh.c (sh_elf_check_relocs): Set DF_TEXTREL if the reloc is
against read-only section.
(elf_backend_reloc_type_class): Define.
(sh_elf_reloc_type_class): New.
(sh_elf_size_dynamic_sections): Use DF_TEXTREL flag instead of
looking up section names for DT_TEXTREL.
* elf32-arm.h (elf32_arm_check_relocs): Set DF_TEXTREL if the
reloc is against read-only section.
(elf32_arm_size_dynamic_sections): Use DF_TEXTREL flag instead of
looking up section names for DT_TEXTREL.
(elf32_arm_reloc_type_class): New.
(cris_elf_relocate_section): When not creating shared object, fill
in the .got table for any symbol not in the dynamic symbol table.
(elf_cris_finish_dynamic_symbol): When not creating shared object,
only emit a .got.rela reloc if the symbol is in the dynamic symbol
table.
(cris_elf_check_relocs): Use variable r_type in all places rather
than the original expression. Add default case in switch for
reloc types.
(elf_cris_size_dynamic_sections): Iterate over
elf_cris_discard_excess_program_dynamics when not creating shared
library.
(elf_cris_discard_excess_dso_dynamics): Renamed from
elf_cris_discard_copies. Correct typo, s/Rel/Rela/.
(elf_cris_discard_excess_program_dynamics): New.
underscore on symbols. Make sure to only link same kind.
* elf32-cris.c (cris_elf_object_p,
cris_elf_final_write_processing, cris_elf_print_private_bfd_data,
cris_elf_merge_private_bfd_data): New.
(elf_backend_object_p, elf_backend_final_write_processing,
bfd_elf32_bfd_print_private_bfd_data,
bfd_elf32_bfd_merge_private_bfd_data): Define.
<Target vector definition>: Include elf32-target.h twice with
different macro settings:
(TARGET_LITTLE_SYM): First as bfd_elf32_cris_vec, then as
bfd_elf32_us_cris_vec.
(TARGET_LITTLE_NAME): First as "elf32-cris", then "elf32-us-cris".
(elf_symbol_leading_char): First as 0, then '_'.
(INCLUDED_TARGET_FILE): Define for second include of elf32-target.h.
* config.bfd (cris-*-*): Add bfd_elf32_us_cris_vec to targ_selvecs.
* configure.in (bfd_elf32_cris_vec, cris_aout_vec): New vector.
* configure: Regenerate.
* targets.c: Declare bfd_elf32_us_cris_vec.
* po/bfd.pot: Regenerate.