change it.
(_bfd_coff_generic_relocate_section): If r_symndx is -1, it is an
absolute reloc. Don't dump core using r_symndx as an array index.
* cf-m68klynx.c (coff_bfd_link_add_symbols): Define.
(lynx_link_add_symbols): New static function (copy of function in
coff-i386.c).
(coff_m68k_lynxrtype_to_howto): sym argument may be NULL.
* coff-i386.c (coff_i386_rtype_to_howto): Likewise.
* coff-a29k.c (coff_a29k_relocate_section): Handle an r_symndx
value of -1, meaning an absolute reloc.
error of some sort (for example, undefined symbols), then do not
apply any relocs, just notify the user of the errors.
(elf32_hppa_backend_begin_write_processing): Do not build a symbol
extension section for an executable (it's useless).
(elf32_hppa_link_output_symbol_hook): Do nothing if there was a
link error of some sort (for example, undefined symbols).
(elf32_hppa_read_symext_info): Kludge. Turn off SEC_HAS_CONTENTS
for all the input symbol extension sections to keep the generic
BFD code happy. Temporarily turn it on to read the contents of
the symbol extension section.
* cf-i386lynx.c: Remove #if 0 code.
(i386_lynxos_coff_object_p): Remove unused function.
(coff_bfd_link_add_symbols): Define.
(lynx_link_add_symbols): New static function.
* coffcode.h (coff_bfd_link_hash_table_create): If
coff_relocate_section is defined, only define this if not already
defined.
(coff_bfd_link_add_symbols, coff_bfd_final_link): Likewise.
* linker.c (_bfd_generic_final_link): Handle
bfd_indirect_link_order explicitly, rather than via
_bfd_default_link_order.
(set_symbol_from_hash): New static function, broken out of
_bfd_generic_link_write_global_symbol.
(_bfd_generic_link_write_global_symbol): Symbol setting code moved
to set_symbol_from_hash; call it.
(default_indirect_link_order): Add generic_linker argument.
Change all callers. If false, set the generic symbols based on
the hash table entries.
* coff-i960.c (RTYPE2HOWTO): Likewise.
* coff-m88k.c (RTYPE2HOWTO): Likewise.
* coff-we32k.c (RTYPE2HOWTO): Likewise.
Make i386 COFF use new COFF backend linker.
* coff-i386.c (RTYPE2HOWTO): Fully parenthesize arguments.
(coff_relocate_section): Define.
(coff_i386_rtype_to_howto): New function.
* configure.in (i386coff_vec): Use cofflink.o.
(i386lynx_coff_vec): Likewise.
* coffcode.h (bfd_coff_backend_data): Add new field
_bfd_coff_rtype_to_howto.
(bfd_coff_rtype_to_howto): Define.
(coff_rtype_to_howto): Define to use RTYPE2HOWTO, if not already
defined.
(bfd_coff_std_swap_table): Initialize new field.
* cofflink.c (_bfd_coff_final_link): Allocate section_count + 1
section_info structures, since the target_index is 1 based.
(coff_link_input_bfd): Set *secpp to bfd_com_section_ptr for a
common symbol. Adjust rel_hash by the output reloc count.
(_bfd_coff_generic_relocate_section): New function.
* libcoff-in.h (_bfd_coff_generic_relocate_section): Declare.
* libcoff.h: Rebuild.
* coff-alpha.c (alpha_ecoff_backend_data): Initialize new field.
* coff-mips.c (mips_ecoff_backend_data): Likewise.
symbols and undefined symbols which no type in the same manner
if the associated BFD symbol has BSF_FUNCTION set. For a defined
symbol which no type, select a SOM type based on the flags of the
section containing the symbol.
(som_slurp_symbol_type): Set BSF_FUNCTION for undefined ST_STUB
or ST_CODE symbols (importing a non-function code symbol is
meaningless in SOM).
(som_set_reloc_info): Don't set "offset" to the section's vma; it
should always start at zero.
* cofflink.c: New file.
* libcoff-in.h: Include bfdlink.h.
(obj_coff_external_syms, obj_coff_strings): Define accessor macro.
(obj_coff_sym_hashes): Define accessor macro.
(struct coff_tdata): Add fields external_syms, strings, and
sym_hashes.
(struct coff_link_hash_entry): Define.
(struct coff_link_hash_table): Define.
(coff_link_hash_lookup, coff_link_hash_traverse): Define.
(coff_hash_table): Define.
(_bfd_coff_link_hash_table_create): Declare.
(_bfd_coff_link_add_symbols, _bfd_coff_final_link): Declare.
* coffcode.h (bfd_coff_backend_data): Add fields _bfd_relsz,
_bfd_coff_swap_reloc_in, _bfd_coff_sym_is_global,
_bfd_coff_compute_section_file_positions,
_bfd_coff_relocate_section.
(bfd_coff_relsz, bfd_coff_swap_reloc_in): Define.
(bfd_coff_sym_is_global): Define.
(bfd_coff_compute_section_file_positions): Define.
(bfd_coff_relocate_section): Define.
(coff_mkobject_hook): Initialize obj_raw_syment_count and
obj_conv_table_size.
(coff_compute_section_file_positions): Set target_index of all
sections. Set output_has_begun field.
(coff_write_object_contents): Don't set target_index; now done by
coff_compute_section_file_positions. Remove obsolete handling of
scn_base and data_base. Don't bother to check that target_index
is positive, since it always is. Remove use of pad, which is
always zero. Check obj_raw_syment_count, not bfd_get_symcount,
for the number of symbols, but only write them out if
bfd_get_symcount is non-zero.
(coff_slurp_symbol_table): Use obj_raw_syment_count, not
bfd_get_symcount for the number of symbols. Don't set
obj_conv_table_size.
(coff_sym_is_global): New static function or macro.
(coff_slurp_reloc_table): Call coff_swap_reloc_in, not
bfd_swap_reloc_in.
(coff_bfd_link_hash_table_create): If coff_relocate_section is
defined, define as _bfd_coff_link_hash_table_create.
(coff_bfd_link_add_symbols): Similar change.
(coff_bfd_final_link): Similar change.
(coff_relocate_section): Define as NULL if not defined.
(bfd_coff_std_swap_table): Initialize new fields.
* coffgen.c (coff_real_object_p): Don't set obj_raw_syment_count
and obj_conv_table_size here.
(coff_count_linenumbers): Reindent. If bfd_get_symcount is zero,
add up the line numbers from the sections.
(coff_write_symbols): Don't set bfd_get_symcount.
(coff_pointerize_aux): Don't pointerize a nonpositive x_endndx
field.
(coff_get_normalized_symtab): Use obj_raw_syment_count, not
bfd_get_symcount.
(coff_print_symbol): If auxp->fix_end, print x_endndx value.
* coffswap.h (coff_swap_reloc_in): Rename from bfd_swap_reloc_in.
Reindent. Change argument type to PTR.
* coff-a29k.c (coff_a29k_relocate_section): New static function.
(coff_relocate_section): Define.
* configure.in (a29kcoff_big_vec): Compile cofflink.o.
* coff-alpha.c (alpha_ecoff_backend_data): Initialize new fields.
* coff-mips.c (mips_ecoff_backend_data): Likewise.
* libcoff.h: Rebuilt.
* Makefile.in: Rebuilt dependencies.
(BFD32_BACKENDS): Add cofflink.o.
(CFILES): Add cofflink.c.
commands for simultaneous definition of enumerator and enumerator name table.
(bfd_get_reloc_code_name): New function, for retrieving a symbolic name
associated with an enumerator.
* libbfd.h, bfd-in2.h: Regenerated.
argument, and use it to set DT_SONAME dynamic entry.
* bfd-in.h (bfd_elf32_size_dynamic_sections): Update prototype.
(bfd_elf64_size_dynamic_sections): Update prototype.
* bfd-in2.h: Rebuilt.
and use %ld to print it.
* osf-core.c (osf_core_core_file_p): Remove unused variable
dseccnt.
* ecoffswap.h (ecoff_swap_ext_out): If ECOFF_64, clear remaining
bytes in bits2.
(and output_offset) if there is one.
* aoutx.h (aout_link_check_archive_element): Discard the symbols
if the archive element was not needed.
* aoutx.h (aout_get_external_symbols): Ensure that a zero string
index yields an empty string.
(aout_link_write_symbols): If info->keep_memory is false, use name
from original hash table entry, not from entry in *sym_hash.
* aoutx.h (struct aout_final_link_info): Add fields contents,
relocs, symbol_map and output_syms.
(NAME(aout,final_link)): Work out the largest section size, reloc
size, and number of symbols. Use them to preallocate buffers that
are large enough for all cases.
(aout_link_input_bfd): Use preallocated symbol_map.
(aout_link_write_symbols): Remove symbol_map argument; use
preallocated symbol_map instead. Change all callers. Use
preallocated output_syms.
(aout_link_input_section): Remove symbol_map argument. Change all
callers. Use preallocated contents and relocs.
(aout_link_input_section_std): Remove symbol_map argument; use
preallocated symbol_map instead. Change all callers.
(aout_link_input_section_ext): Likewise.
* aoutx.h: String hash functions moved to hash.c. Retain
simplified versions of add_to_stringtab and emit_stringtab.
Change all callers to use new function and structure names.
* libbfd-in.h (_bfd_stringtab_init, _bfd_stringtab_free): Declare.
(_bfd_stringtab_size, _bfd_stringtab_add): Declare.
(_bfd_stringtab_emit): Declare.
* libbfd.h: Rebuilt.
* i386linux.c (linux_add_one_symbol): Create a fixup for any
defined absolute symbol, not just GOT or PLT symbols.
(linux_tally_symbols): Correct handling of references to defined
symbols.
* aoutx.h (adjust_o_magic): If the .bss VMA was set outside of
BFD, pad the .data section up to the VMA of the .bss section.
(aout_link_add_symbols): If a set symbol does not get modified,
treat it as a local symbol.
(aout_link_write_symbols): Set the value of set symbols
correctly. Don't discard set symbols even if discarding local
symbols.
(aout_link_write_other_symbol): Don't abort on bfd_link_hash_new,
since it can now happen for set symbols.
".rel", not ".rela." and ".rel."; make this work by checking
use_rela_p.
* elf32-i386.c (elf_i386_check_relocs): Just check for ".rel", not
".rel."
(elf_i386_size_dynamic_sections): Likewise.
(elf_i386_relocate_section): Likewise.
* elf32-sparc.c (elf32_sparc_check_relocs): Just check for
".rela", not ".rela."
(elf32_sparc_size_dynamic_sections): Likewise.
(elf32_sparc_relocate_section): Likewise.
no aux entries, use the symbol name as the file name.
(coff_find_nearest_line): Look for the right C_FILE symbol, rather
than always using the first one. If there is a debugging symbol
after a function symbol, skip it. Add the section VMA to the line
offset, since it was subtracted out in coff_slurp_line_table.
PR 5010.
allocate and attach an exec header to the BFD private data.
(som_begin_writing): Don't fill fields of the exec header based
on BFD private data here (like the exec flags). Do not write
the exec header here.
(som_write_headers): Instead do it here.
* som.h (struct somdata): New field "exec_hdr" for the executable
file header.
(obj_som_exec_hdr): New accessor macro.
named .linux-dynamic, not .dynamic.
(linux_add_one_symbol): Use .linux-dynamic, not .dynamic.
(bfd_linux_size_dynamic_sections): Likewise.
(linux_finish_dynamic_link): Likewise.
are recognized, chose section flags based on the name.
(bfd_coff_backend_data): _bfd_styp_to_sec_flags_hook field: Add
name argument.
(bfd_coff_styp_to_sec_flags_hook): Add name argument.
(coff_compute_section_file_positions): Don't adjust the section
position by COFF_PAGE_SIZE unless SEC_ALLOC is set.
* libcoff.h: Rebuilt.
* coffgen.c (make_a_section_from_file): Pass section name to
bfd_coff_styp_to_sec_flags_hook.
* ecoff.c (_bfd_ecoff_styp_to_sec_flags): Add unused name
argument.
* libecoff.h (_bfd_ecoff_styp_to_sec_flags): Add name argument to
prototype.
* aout-ns32k.c: Add declarations that were in aout-ns32k.h, change
declarations to traditional form.
(MY_reloc_howto, MY_put_reloc): Change from macro to function.
(ns32k_relocate_contents): New function.
* aout-ns32k.h: Remove.
* cpu-ns32k.c: Add declarations that were in aout-ns32k.h, change
declarations to traditional form.
(ns32k_final_link_relocate): Call ns32k_relocate_contents.
* netbsd532.c: Reformat to standards, add copyright notice.
(ARCH): Don't define.
(aout-ns32k.h): Don't include.
* pc532-mach.c: Ditto.