* libbfd.h: Rebuild.
* i386lynx.c (KEEPIT): Define as udata.i.
(NAME(lynx,swap_std_reloc_out)): Don't use stoi.
(NAME(lynx,swap_ext_reloc_out)): Likewise.
* riscix.c (riscix_swap_std_reloc_out): Use udata.i rather than
flags. Don't use stoi.
with XCOFF_DEF_DYNAMIC set is really defined.
(xcoff_link_check_dynamic_ar_symbols): Likewise.
The above is for PR 9997.
(xcoff_link_add_symbols): Only create special sections if using an
XCOFF hash table.
* elf64-alpha.c (struct alpha_elf_link_hash_entry): Add flags
field.
(ALPHA_ELF_LINK_HASH_LU_ADDR): Define.
(ALPHA_ELF_LINK_HASH_LU_MEM): Define.
(ALPHA_ELF_LINK_HASH_LU_FUNC): Define.
(elf64_alpha_link_hash_newfunc): Initialize flags field.
(elf64_alpha_check_relocs): Record types of LITUSE entries that
are found for LITERAL relocs.
(elf64_alpha_adjust_dynamic_symbol): If a symbol has its address
taken, we cannot generate a .plt entry for the symbol.
(coff_swap_filehdr_out): Use FILHSZ, not sizeof.
(coff_swap_sym_out): Use SYMESZ, not sizeof.
(coff_swap_aux_out): Use AUXESZ, not sizeof.
(coff_swap_lineno_out): Use LINESZ, not sizeof.
(coff_swap_aouthdr_out): Use AOUTSZ, not sizeof.
(coff_swap_scnhdr_out): Use SCNHSZ, not sizeof.
* peicode.h: Corresponding changes.
* elf64-alpha.c (elf64_alpha_adjust_dynamic_symbol): Don't
increment the .rela.plt size until after we're done creating the
.plt entry.
(elf64_alpha_finish_dynamic_symbol): Change .plt entry to load the
.rela.plt offset directly rather than calculating it.
for R_MIPS_REL32 and R_MIPS_32 relocs if no dynamic sections were
created.
(mips_elf_check_relocs): Only create .rel.dyn for R_MIPS_REL32 and
R_MIPS_32 relocs if creating a shared library.
* coffcode.h (coff_write_object_contents): If there are long
section names, always set the f_symptr field, even if there are no
symbols.
* peicode.h (coff_swap_filehdr_in): Don't clear the f_symptr field
if there are no symbols.
_bfd_coff_read_string_table.
(coff_real_object_p): Check return value of
make_a_section_from_file.
(_bfd_coff_read_string_table): Check that there are some symbols
before trying to read the string table size.
to replace a symbol in a dynamic object with a symbol from another
dynamic object, do the replacement if the existing symbol is
global linkage code.
PR 9860.
Also fix a couple of comment typos and indentation problems.
problems.
(h8300_reloc16_estimate, cases R_JMP1, R_JMP2): Adjust "dot"
correctly for the two variants. Allow relaxing if the target
is 128 bytes away since after relaxation it'll be 126 bytes away.
(h8300_reloc16_estimate, case R_PCRWORD): Correctly adjust
"dot" and "value". Allow relaxing if the target is 128 bytes
away since after relaxation it'll be 126 bytes away.
* reloc16.c (bfd_coff_reloc16_relax_section): Keep relaxing
the given section until nothing changes.
Improving corner case relaxing for jmp:16->bra:8, jmp:24->bra:8 and
bCC:16->bCC:8.
Re-relax a section if something changes; more relaxing opportunities
may be available.
* ecoff.c (_bfd_ecoff_new_section_hook): Remove the _PDATA
alignment hack--we can get the lnnoptr info another way without
suddenly increasing the alignment requirements. Set the flags for
the _PDATA section.
(ecoff_compute_section_file_positions): Do so.
SHT_MIPS_OPTIONS section.
* elf32-mips.c (_bfd_mips_elf_hi16_reloc): Rename from
mips_elf_hi16_reloc and make globally visible.
(_bfd_mips_elf_lo16_reloc): Rename from mips_elf_lo16_reloc and
make globally visible.
(_bfd_mips_elf_got16_reloc): Rename from mips_elf_got16_reloc and
make globally visible.
(_bfd_mips_elf_gprel16_reloc): Rename from mips_elf_gprel16_reloc
and make globally visible.
(gprel16_with_gp): Check howto->src_mask before using value in
insn.
(_bfd_mips_elf_gprel32_reloc): Rename from mips_elf_gprel32_reloc
and make globally visible.
(gprel32_with_gp): Check howto->src_mask before fetching value.
(bfd_mips_elf_swap_options_in): New function.
(bfd_mips_elf_swap_options_out): New function.
(_bfd_mips_elf_set_private_flags): Rename from
mips_elf_set_private_flags and make globally visible.
(_bfd_mips_elf_copy_private_bfd_data): Rename from
mips_elf_copy_private_bfd_data and make globally visible.
(_bfd_mips_elf_merge_private_bfd_data): Rename from
mips_elf_merge_private_bfd_data and make globally visible.
(_bfd_mips_elf_section_from_shdr): Accept .MIPS.options as a name
for a SHT_MIPS_OPTIONS section.
(mips_elf32_section_from_shdr): Handle SHT_MIPS_OPTIONS section.
(_bfd_mips_elf_fake_sections): Consider .MIPS.options to be the
name of a SHT_MIPS_OPTIONS section.
(_bfd_mips_elf_set_section_contents): New function.
(mips_elf32_section_processing): Set the GP value in a
SHT_MIPS_OPTIONS section.
(_bfd_mips_elf_find_nearest_line): Rename from
mips_elf_find_nearest_line and make globally visible.
(bfd_elf32_set_section_contents): Define.
* elf-bfd.h (_bfd_mips_elf_hi16_reloc): Declare.
(_bfd_mips_elf_lo16_reloc): Declare.
(_bfd_mips_elf_gprel16_reloc): Declare.
(_bfd_mips_elf_got16_reloc): Declare.
(_bfd_mips_elf_gprel32_reloc): Declare.
(_bfd_mips_elf_set_private_flags): Declare.
(_bfd_mips_elf_copy_private_bfd_data): Declare.
(_bfd_mips_elf_merge_private_bfd_data): Declare.
(_bfd_mips_elf_find_nearest_line): Declare.
(_bfd_mips_elf_set_section_contents): Declare.
writing files and for gas.
* elf32-mips.c (_bfd_mips_elf_object_p): New function, broken out
of mips_elf_object_p.
(mips_elf32_object_p): Rename from mips_elf_object_p; call
_bfd_mips_elf_object_p.
(_bfd_mips_elf_final_write_processing): Rename from
mips_elf_final_write_processing and make globally visible.
(_bfd_mips_elf_fake_sections): Rename from
mips_elf_fake_sections and make globally visible.
(_bfd_mips_elf_section_from_bfd_section): Rename from
mips_elf_section_from_bfd_section and make globally visible.
(_bfd_mips_elf_section_processing): New function, broken out of
mips_elf_section_processing.
(mips_elf32_section_processing): Rename from
mips_elf_section_processing; call
_bfd_mips_elf_section_processing.
(_bfd_mips_elf_symbol_processing): Rename from
mips_elf_symbol_processing and make globally visible.
(_bfd_mips_elf_read_ecoff_info): Rename from
mips_elf_read_ecoff_info and make globally visible.
(mips_elf32_ecoff_debug_swap): Rename from
mips_elf_ecoff_debug_swap.
* elf.c (_bfd_elf_symbol_from_bfd_symbol): Use asymbol rather than
struct symbol_cache_entry.
(_bfd_elf_validate_reloc): New function, moved in from
elfcode.h:validate_reloc.
* elfcode.h (validate_reloc): Remove; moved into elf.c and renamed
to _bfd_elf_validate_reloc. Change all callers.
* elf-bfd.h (bfd_section_from_shdr): Declare.
(_bfd_elf_symbol_from_bfd_symbol): Declare.
(_bfd_elf_validate_reloc): Declare.
(_bfd_mips_elf_object_p): Declare.
(_bfd_mips_elf_fake_sections): Declare.
(_bfd_mips_elf_section_from_bfd_section): Declare.
(_bfd_mips_elf_section_processing): Declare.
(_bfd_mips_elf_symbol_processing): Declare.
(_bfd_mips_elf_read_ecoff_info): Declare.
(_bfd_mips_elf_final_write_processing): Declare.
* elfxx-target.h (bfd_elfNN_get_reloc_upper_bound): Don't define
if already defined.
* elf64-mips.c: New file.
* Makefile.in: Rebuild dependencies.
(BFD64_BACKENDS): Add elf64-mips.o.
(BFD64_BACKENDS_CFILES): Add elf64-mips.c.
* config.bfd (mips*el-*-elf*) Add bfd_elf64_bigmips_vec and
bfd_elf64_littlemips_vec to targ_selvecs.
(mips*-*-elf*): Likewise.
* confingure.in: Add bfd_elf64_bigmips_vec and
bfd_elf64_littlemips_vec to vector switch.
* configure: Rebuild.
* elf32-mips.c (_bfd_mips_elf_section_from_shdr): New function,
broken out of mips_elf_section_from_shdr.
(mips_elf32_section_from_shdr): Rename from
mips_elf_section_from_shdr. Call new function.
(elf_backend_section_from_shdr): Update name of renamed function.
* elf-bfd.h (struct elf_size_info): Change second parameter of
write_out_phdrs to be const. Likewise for second parameter of
swap_symbol_out.
(struct bfd_elf_section_data): Add rel_hdr2 field.
(bfd_elf32_swap_symbol_in): Change second parameter to be const.
(bfd_elf32_swap_symbol_out): Likewise.
(bfd_elf32_swap_reloc_in): Likewise.
(bfd_elf32_swap_reloc_out): Likewise.
(bfd_elf32_swap_reloca_in): Likewise.
(bfd_elf32_swap_reloca_out): Likewise.
(bfd_elf32_swap_phdr_in): Likewise.
(bfd_elf32_swap_phdr_out): Likewise.
(bfd_elf32_swap_dyn_in): Likewise.
(bfd_elf32_swap_dyn_out): Likewise.
(bfd_elf32_slurp_symbol_table): Declare.
(bfd_elf32_write_shdrs_and_ehdr): Declare.
(bfd_elf32_write_out_phdrs): Declare.
(bfd_elf64_swap_symbol_in): Change second parameter to be const.
(bfd_elf64_swap_symbol_out): Likewise.
(bfd_elf64_swap_reloc_in): Likewise.
(bfd_elf64_swap_reloc_out): Likewise.
(bfd_elf64_swap_reloca_in): Likewise.
(bfd_elf64_swap_reloca_out): Likewise.
(bfd_elf64_swap_phdr_in): Likewise.
(bfd_elf64_swap_phdr_out): Likewise.
(bfd_elf64_swap_dyn_in): Likewise.
(bfd_elf64_swap_dyn_out): Likewise.
(bfd_elf64_slurp_symbol_table): Declare.
(bfd_elf64_write_shdrs_and_ehdr): Declare.
(bfd_elf64_write_out_phdrs): Declare.
(_bfd_mips_elf_section_from_shdr): Declare.
* elf.c (bfd_section_from_shdr): Remove assertion requiring
SHT_REL/SHT_RELA to match use_rela_p. If there is already a reloc
section for the section, add the new one to rel_hdr2. Increment
reloc_count rather than setting it.
* elfcode.h (elf_slurp_symbol_table): Define name as macro.
Remove static declaration.
(elf_write_shdrs_and_ehdr): Define name as macro.
(elf_write_out_phdrs): Likewise.
(elf_swap_ehdr_in, elf_swap_ehdr_out): Declare.
(elf_swap_shdr_in, elf_swap_shdr_out): Declare.
(elf_swap_symbol_in): Change second parameter to be const.
(elf_swap_symbol_out): Likewise.
(elf_swap_ehdr_in, elf_swap_ehdr_out): Likewise.
(elf_swap_shdr_in, elf_swap_shdr_out): Likewise.
(elf_swap_phdr_in, elf_swap_phdr_out): Likewise.
(elf_swap_reloc_in, elf_swap_reloc_out): Likewise.
(elf_swap_reloca_in, elf_swap_reloca_out): Likewise.
(elf_write_out_phdrs): Rename from write_out_phdrs. Change second
parameter to be const. Make non-static.
(elf_write_shdrs_and_ehdr): Rename from write_shdrs_and_ehdr.
Make non-static.
(elf_slurp_symbol_table): Make non-static.
(NAME(_bfd_elf,size_info)): Update names of renamed functions.
* elfxx-target.h (elf_info_to_howto): Define if not defined.
(elf_backend_size_info): Likewise.
(elfNN_bed): Use elf_backend_size_info.
* targets.c (bfd_elf64_bigmips_vec): Declare.
(bfd_elf64_littlemips_vec): Declare.
(bfd_target_vector): Add bfd_elf64_bigmips_vec and
bfd_elf64_littlemips_vec if BFD64 is defined.
(pei_section_data): Define macro.
* libcoff.h: Rebuild.
* coffcode.h (coff_set_alignment_hook): If COFF_IMAGE_WITH_PE,
store s_paddr field in pei_section_data.
(coff_compute_section_file_positions): Use pei_section_data rather
than _cooked_size, and don't overwrite an existing value.
(coff_write_object_contents): If COFF_OBJ_WITH_PE, set s_paddr to
0. If COFF_IMAGE_WITH_PE, set s_paddr to pei_section_data.
* peicode.h (coff_bfd_copy_private_section_data): Define if
COFF_IMAGE_WITH_PE.
(pe_bfd_copy_private_section_data): New static function if
COFF_IMAGE_WITH_PE.
PR 9667.
changes to include/coff/internal.h. Fix minor errors in the
existing relocs. Add R_MOVL1 and R_MOVL2.
(rtype2howto): Similarly.
(h8300_reloc16_estimate): Rewrite to simplify, fix bugs in the
existing relaxing code and peform more relaxing.
(h8300_reloc16_extra_cases): Likewise.
Simplify, cleanup, fix bugs and improve existing relaxing code.
Add code for changing a 24/32bit absolute address into a 16bit absolute
address.
HMSE.
e_machine matches an alternate machine code in a specific backend.
* netbsd-core.c (netbsd_core_vec): Remove initializer for
obsolete align_power_min field.
R_PCRWORD_B.
(rtype2howto): Handle R_PCRWORD_B.
(h8300_reloc16_extra_cases): Handle R_PCRWORD_B.
(h8300_reloc_16_estimate): Likewise. Try to turn a 16bit
pc-relative branch (R_PCRWORD) into an 8bit pc-relative
branch (R_PCWORD_B).
So we can turn 16bit pcrel branches into 8bit pcrel branches on the H8/300H.
HMSE.
mips_32_relocs field.
(mips_elf_link_hash_newfunc): Initialize mips_32_relocs field.
(mips_elf_relocate_section): Copy R_MIPS_REL32 and R_MIPS_32
relocs against a global symbol which is not defined in a regular
file.
(mips_elf_check_relocs): For a R_MIPS_REL32 or R_MIPS_32 reloc
against a global symbol, increment mips_32_relocs.
(mips_elf_adjust_dynamic_symbol): If mips_32_relocs is set, and
the symbol is not defined in a regular file, make room in the
.rel.dyn section.
file position and the virtual file position separately. Set
filepos information bsaed on the real file position.
(_bfd_ecoff_set_section_contents): Handle .lib sections like the
Jan 23 change to coffcode.h.
Make Irix 4 shared libraries work again.
members of an archive for dynamic objects with no symbols, and
pass them directly to check_archive_element.
(xcoff_link_check_ar_symbols): Pass dynamic objects to
xcoff_link_check_dynamic_ar_symbols.
(xcoff_link_check_dynamic_ar_symbols): New static function.
The above is for PR 9520.
* coff-rs6000.c (rs6000coff_vec): Change BFD_JUMP_TABLE_DYNAMIC
from _bfd_nodynamic to _bfd_xcoff.
* libcoff-in.h (_bfd_xcoff_get_dynamic_symtab_upper_bound):
Declare.
(_bfd_xcoff_canonicalize_dynamic_symtab): Declare.
(_bfd_xcoff_get_dynamic_reloc_upper_bound): Declare.
(_bfd_xcoff_canonicalize_dynamic_reloc): Declare.
* libcoff.h: Rebuild.
* xcofflink.c (xcoff_swap_ldrel_in): New static function.
(xcoff_get_section_contents): New static function.
(_bfd_xcoff_get_dynamic_symtab_upper_bound): New function.
(_bfd_xcoff_canonicalize_dynamic_symtab): New function.
(_bfd_xcoff_get_dynamic_reloc_upper_bound): New function.
(xcoff_dynamic_reloc): New static variable.
(_bfd_xcoff_canonicalize_dynamic_reloc): New function.
(xcoff_link_add_dynamic_symbols): Use xcoff_get_section_contents.
(mips_hi16_addr, mips_hi16_addend): Remove.
(mips_hi16_list): New static variable.
(mips_elf_hi16_reloc): Maintain a list of unmatched HI16 relocs.
(mips_elf_lo16_reloc): Process mips_hi16_list.
(mips_elf_relocate_section): Permit an arbitrary number of HI16
relocs before the associated LO16 reloc.
aren't any symbols.
* aoutx.h (NAME(aout,swap_std_reloc_out)): Set r_index to N_ABS,
not 0, for an absolute symbol.
(NAME(aout,swap_ext_reloc_out)): Likewise.
PR 7387.
entry point, not just for DYNAMIC objects.
* sunos.c (sunos_add_dynamic_symbols): Always call
sunos_create_dynamic_sections. If called with a non DYNAMIC
object, don't do anything else.
(sunos_add_one_symbol): Don't call sunos_create_dynamic_sections.
(AC_CHECK_HEADERS): Check for sys/time.h
(AC_HEADER_TIME): Add macro.
* configure: Rebuild.
* sysdep.h: Use TIME_WITH_SYS_TIME and HAVE_SYS_TIME_H
to control what combination of <time> and <sys/time.h>
get included.
* elf.c (_bfd_elf_link_hash_table_init): Initialize hgot field.
* elflink.c (_bfd_elf_create_got_section): Store the
_GLOBAL_OFFSET_TABLE_ hash table entry in the hgot field.
* elf32-sparc.c (elf32_sparc_check_relocs): If the size of the
global offset table goes over 0x1000, set the value of
_GLOBAL_OFFSET_TABLE_ to 0x1000 into the section.
(elf32_sparc_relocate_section): Subtract the offset of
_GLOBAL_OFFSET_TABLE_ when handling GOT relocations.
PR 9323.
generic_link_hash_newfunc. All references changed.
* genlink.h (_bfd_generic_link_hash_newfunc): Declaration
moved here from libbfd-in.h.
* libbfd-in.h: Corresponding changes.
* libbfd.h: Regenerated.
Minor changes suggested by Ian.
(SEC_LINK_DUPLICATES): Define.
(SEC_LINK_DUPLICATES_DISCARD): Define.
(SEC_LINK_DUPLICATES_ONE_ONLY): Define.
(SEC_LINK_DUPLICATES_SAME_SIZE): Define.
(SEC_LINK_DUPLICATES_SAME_CONTENTS): Define.
* bfd-in2.h: Rebuild.
* coffcode.h (sec_to_styp_flags): If COFF_WITH_PE, turn
SEC_LINK_ONCE into IMAGE_SCN_LNK_COMDAT.
(styp_to_sec_flags): If COFF_WITH_PE, turn IMAGE_SCN_LNK_REMOVE
into SEC_EXCLUDE. If IMAGE_SCN_LNK_COMDAT is set, set
SEC_LINK_ONCE, and look through the symbol table for the setting
for SEC_LINK_DUPLICATES.
(coff_write_object_contents): If COFF_WITH_PE, if SEC_LINK_ONCE is
set for a section, find the section symbol in the symbol table,
and set the aux entry based on SEC_LINK_DUPLICATES.
* coffgen.c (coff_print_symbol): Add a space before "checksum".
* coff-arm.c (armcoff_big_vec): If COFF_WITH_PE is defined, add
SEC_LINK_ONCE and SEC_LINK_DUPLICATES to section_flags.
* coff-i386.c (i386coff_vec): Likewise.
* coff-ppc.c (TARGET_LITTLE_SYM, TARGET_BIG_SYM): Likewise.
* libbfd.h: Rebuilt.
* linker.c (generic_link_hash_newfunc): No longer static.
* coffcode.h (coff_bfd_link_hash_create): Allow specific targets
to override.
* coff-h8300.c: Add two derived hash tables and their associated
funtions and #defines for use by the h8300 linker.
(h8300_reloc16_extra_cases, case R_MEM_INDIRECT): Create entries in
the function vector as needed. Place the address of the function
vector entry in the location specified by the R_MEM_INDIRECT reloc.
Rewrite the vectors section contents as necessary.
(h8300_bfd_link_add_symbols): New function for the h8300 linker.
(coff_bfd_link_add_symbols): Define to use h8300 specific version.
(coff_bfd_link_hash_table_create): Likewise.
Linker changes for function vectors. HMSE.
__attribute__ ((__unused__)) so that -Wall doesn't warn about
them.
(hppa_rebuild_insn): Pass pointer to correct type to
low_sign_unext and dis_assemble_21.
(coff_swap_aux_out): Swap out extra PE x_scn fields.
* coffswap.h (coff_swap_aux_in): Zero out extra PE x_scn fields.
* coffgen.c (coff_print_symbol): If any of the extra PE x_scn
fields is non-zero, print them.
the #ifdef where they are used. Always return a value.
(pe_print_edata): Change fprintf strings and add cast to make
fprintf strings correspond to actual types. Always return a
value.
(pe_print_pdata): Removed unused variable addr_value. Always
return a value.
(pe_print_reloc): Remove unused variable onaline. Make fprintf
strings and arguments correspond. Always return a value.
* cpu-ns32k.h: Include ns32k.h. Rename externally visible
functions to start with _bfd_.
* aout-ns32k.c: Include ns32k.h. Change references to renamed
functions in cpu-ns32k.h.
* Makefile.in: Rebuild dependencies.
(HFILES): Add ns32k.h.
* 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.
* ieee.c: Changed #ifdef KEEPMINUSPCININST to #if KEEPMINUSPCININST.
(ieee_generic_stat_arch_elt): Restructured to prevent
ieee_object_p from being called repeatedly.