symbol if the real definition is in the dynamic symbol table.
After finding the real definition, then, if it is dynamic, add the
weak symbol to the dynamic symbol table.
PR 11244.
even if SEC_ALLOC is not set.
* elf32-i386.c (elf_i386_check_relocs): Don't check SEC_ALLOC
when deciding whether to copy a reloc into a shared object.
(elf_i386_relocate_section): Likewise.
* elf32-sparc.c (elf32_sparc_check_relocs): Likewise.
(elf32_sparc_relocate_section): Likewise.
* elf32-i386.c (elf_i386_check_relocs): Don't set SEC_ALLOC in a
reloc section if it is not set in the source section.
* elf32-sparc.c (elf32_sparc_check_relocs): Likewise.
* elf.c (bfd_section_from_shdr): Mark a reloc section associated
with a SEC_DEBUGGING section as SEC_DEBUGGING.
PR 11174.
* elf.c (_bfd_elf_link_hash_newfunc): Initialize other field.
(swap_out_syms): Set st_other from existing st_other field.
* elflink.h (elf_link_add_object_symbols): Store st_other in hash
table other field.
(elf_link_output_extsym): Set the other field from the global hash
table entry.
* elf32-mips.c (enum reloc_type): Add R_MIPS16_26.
(elf_mips16_jump_howto): New static variable.
(mips16_jump_reloc): New static function.
(bfd_elf32_bfd_reloc_type_lookup): Handle BFD_RELOC_MIPS16_JMP.
(mips_info_to_howto_rel): Handle R_MIPS16_26.
(mips_elf_relocate_section): Handle R_MIPS16_26. Handle R_MIPS_26
to a mips16 symbol.
* reloc.c (BFD_RELOC_MIPS16_JMP): Add to list of relocs.
* bfd-in2.h, libbfd.h: Rebuild.
* cpu-mips.c (arch_info_struct): Add mips:16 entry.
* bfd-in2.h: Rebuild.
* aoutx.h (NAME(aout,final_link)): Mark sections included in the
link.
(aout_link_input_bfd): Don't link unmarked sections.
* cofflink.c (_bfd_coff_final_link): Mark sections included in the
link.
(_bfd_coff_link_input_bfd): Don't link unmarked sections.
* coff-ppc.c (ppc_bfd_coff_final_link): Mark sections included in
the link.
* elflink.h (elf_bfd_final_link): Mark sections included in the
link.
(elf_link_input_bfd): Don't link unmarked sections.
* xcofflink.c (_bfd_xcoff_bfd_final_link): Mark sections included
in the link.
(xcoff_link_input_bfd): Don't link unmarked sections.
(_bfd_generic_link_add_one_symbol): Remove BFD_ASSERT on hash
table string. Use bfd_wrapped_link_hash_lookup.
(_bfd_generic_link_write_global_symbol): Remove BFD_ASSERT on hash
table string.
* aoutx.h (aout_link_write_symbols): Use the name from the hash
table, if any, when writing out symbols.
(aout_link_input_section_std): Use the name from the hash table,
if any, when reporting undefined symbols.
(aout_link_input_section_ext): Likewise.
(aout_link_reloc_link_order): Use bfd_wrapped_link_hash_lookup.
* bout.c (get_value): Likewise.
* cofflink.c (_bfd_coff_reloc_link_order): Likewise.
* ecoff.c (ecoff_reloc_link_order): Likewise.
* elflink.h (elf_link_add_object_symbols): Likewise.
(elf_reloc_link_order): Likewise.
* linker.c (_bfd_generic_link_output_symbols): Likewise.
(_bfd_generic_reloc_link_order): Likewise.
(default_indirect_link_order): Likewise.
* reloc16.c (bfd_coff_reloc16_get_value): Likewise.
* sunos.c (sunos_add_one_symbol): Likewise.
* xcofflink.c (xcoff_link_add_symbols): Likewise.
(bfd_xcoff_link_count_reloc): Likewise.
(xcoff_reloc_link_order): Likewise.
dt_name.
(elf_dt_name): Rename from elf_dt_needed_name.
* elf.c (bfd_elf_set_dt_needed_name): Use elf_dt_name, not
elf_dt_needed_name.
(bfd_elf_get_dt_soname): New function.
* elflink.h (elf_link_add_object_symbols): Use elf_dt_name, not
elf_dt_needed_name. Save the SONAME back in elf_dt_name.
* bfd-in.h (bfd_elf_get_dt_soname): Declare.
* bfd-in2.h: Rebuild.
* elf.c (_bfd_elf_link_hash_newfunc): Set elf_link_hash_flags to
ELF_LINK_NON_ELF.
* elflink.h (elf_link_add_object_symbols): Reset ELF_LINK_NON_ELF
flag for a newly defined symbol.
(NAME(bfd_elf,record_link_assignment)): Likewise.
(elf_adjust_dynamic_symbol): If ELF_LINK_NON_ELF is set, try to
set the DEF or REF_REGULAR flags correctly.
symbol or section symbols if stripping all symbols and this is not
a relocateable link. Don't output the symbol string table if
there are no symbols.
(elf_link_flush_output_syms): Don't do anything if there are no
symbols to flush.
support, from Kazumoto Kojima <kkojima@info.kanagawa-u.ac.jp>.
* elf-bfd.h (struct elf_backend_data): Add type_change_ok field.
(struct elf_backend_data): Remove
elf_backend_create_program_headers field. Add
elf_backend_additional_program_headers and
elf_backend_modify_segment_map fields.
* elfxx-target.h (elf_backend_type_change_ok): Define if not
defined.
(elf_backend_additional_program_headers): Likewise.
(elf_backend_modify_segment_map): Likewise.
(elf_backend_create_program_headers): Don't define.
(elfNN_bed): Change to account for field changes.
* elf.c (assign_file_positions_for_segments): Call new
modify_segment_map backend function. Don't call old
create_program_headers backend function.
(get_program_header_size): Call additional_program_headers rather
than create_program_headers.
* elflink.h (elf_link_add_object_symbols): Initialize
type_change_ok from new backend field.
(elf_link_output_extsym): Don't warn if _rld_new_interface is
defined.
(elf_reloc_link_order): Treat a reloc against a defined symbol as
a reloc against the appropriate section.
(bfd_zmalloc): Return PTR, not char *. Take size_t, not
bfd_size_type.
* libbfd-in.h (bfd_malloc, bfd_realloc): Declare.
(bfd_zmalloc): Change declaration.
* libbfd.h: Rebuild.
* Many files: Use bfd_malloc and bfd_realloc rather than malloc
and realloc. Don't set bfd_error_no_memory if they fail.
obstack_alloc fails.
(bfd_alloc_finish): Set bfd_error_no_memory if obstack_finish
fails.
* libbfd.c (bfd_zmalloc): Set bfd_error_no_memory if malloc fails.
* Many files: don't set bfd_error_no_memory if one of the above
routines fails.
dynamic symbol override a common symbol. Don't change the size or
type if they have been set and the new symbol is not a definition.
Warn if the size or type changes.
* Makefile.in (BFD32_BACKENDS): Remove coff-arm.o.
* archures.c (bfd_arch_info_type): Change mach field from long to
unsigned long.
(bfd_lookup_arch): Change machine parameter from long to unsigned
long.
* elflink.h (elf_bfd_final_link): Don't change a DT_INIT or
DT_FINI entry if the appropriate symbol is not in the hash table.
* libelf.h (struct elf_backend_data): Add create_program_headers
and want_hdr_in_seg fields.
* elfxx-target.h (elf_backend_want_hdr_in_seg): Define if not
defined.
(elf_backend_create_program_headers): Likewise.
(elfNN_bed): Initialize create_program_headers and
want_hdr_in_seg.
* elf.c (get_program_header_size): Call create_program_headers
backend routine.
(map_program_segments): Check want_hdr_in_seg backend field. Call
create_program_headers backend routine.
* elf.c (assign_file_positions_except_relocs): Align non allocated
sections when creating an executable.
* elfcode.h (elf_swap_phdr_in): Make non static.
(elf_swap_phdr_out): Make non static.
* libelf.h (bfd_elf32_swap_phdr_in): Declare.
(bfd_elf32_swap_phdr_out): Declare.
(bfd_elf64_swap_phdr_in): Declare.
(bfd_elf64_swap_phdr_out): Declare.
warning symbols. If any section is named .gnu.warning.XXX, treat
the contents as a warning to be issued if the symbol XXX is
referenced.
(elf_link_output_extsym): For an indirect or warning symbol, just
output the symbol it points to.
undefined weak reference, change the type to undefined.
* elflink.h (elf_link_add_archive_symbols): Don't record an
undefined weak reference as defined, in case it turns into a real
undefined reference later in the same archive.
definition, add it to the dynamic symbol table if any dynamic
object mentions it. If we do add it, make sure we add the
corresponding real symbol.
(elf_adjust_dynamic_symbol): Adjust a weak defined symbol which we
put in the dynamic symbol table, even if no regular object refers
to it.
* elf32-i386.c (elf_i386_check_relocs): When creating a shared
library, don't allocate space for a PC relative reloc against a
local symbol.
* elf32-m68k.c (elf_m68k_check_relocs): Likewise.
* elf32-sparc.c (elf32_sparc_check_relocs): Likewise.
* elf32-i386.c (elf_i386_adjust_dynamic_symbol): Change assertion
to accept symbol with weakdef set.
* elf32-m68k.c (elf_m68k_adjust_dynamic_symbol): Likewise.
* elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Likewise.
* elf32-m68k.c (elf_m68k_relocate_section): When creating a shared
libary, don't copy over a PC relative reloc against a local
symbol.
* elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
PR 7711.