obstack_alloc returns NULL unless the size is non-zero.
* linker.c (archive_hash_allocate): Define.
(_bfd_generic_link_add_archive_symbols): Use archive_hash_allocate
rather than obstack_alloc, for clarity.
* libaout.h (struct aoutdata): Add field zmagic_disk_block_size.
* aout-target.h (MY(callback)): Only set alignment according to
architecture if the section sizes are aligned to that alignment,
for backward compatibility.
(MY(set_sizes)): Initialize zmagic_disk_block_size field.
* aoutx.h (adjust_z_magic): Set ztih if using q_magic_format. Set
text section filepos to zmagic_disk_block_size if not ztih. Use a
different padding algorithm if not ztih.
* i386linux.c (MY_text_includes_header): Don't define.
(bfd_abs_section_ptr, bfd_is_abs_section): Define.
(bfd_und_section): Make const.
(bfd_und_section_ptr, bfd_is_und_section): Define.
(bfd_com_section): Make const.
(bfd_com_section_ptr): Define.
(bfd_ind_section): Make const.
(bfd_ind_section_ptr, bfd_is_ind_section): Define.
(bfd_abs_symbol, bfd_com_symbol): Make const.
(bfd_und_symbol, bfd_ind_symbol): Likewise.
(global_syms): Cast initialization of section field.
(STD_SECTION): Define as const, and cast initializations.
* bfd-in2.h: Rebuilt.
* Many files: Change uses of bfd_abs_section, etc., to use
bfd_abs_section_ptr or bfd_is_abs_section, etc.
when computing reloc sizes. From Eric Youngdale
<ericy@cais.cais.com>.
* elfcode.h (elf_bfd_final_link): Don't try to compute maximum
reloc count or size for a non-ELF file.
echoing config file name, echo whether target uses leading
underscores on symbol names. Add appropriate settings to
different cases. Used by binutils/configure.in to set default for
c++filt.
* i386linux.c: Many new functions and definitions for linker
support for Linux shared libraries.
* bfd-in.h (bfd_linux_size_dynamic_sections): Declare.
* bfd-in2.h: Rebuild.
(elf_dt_needed_name): New accessor macro.
* elfcode.h (elf_link_add_object_symbols): If elf_dt_needed_name
is set, use that instead of the filename for the DT_NEEDED dynamic
entry.
* elf.c (bfd_elf_set_dt_needed_name): New function.
* bfd-in.h (bfd_elf_set_dt_needed_name): Declare.
* bfd-in2.h: Rebuilt.
argument, and set it to the .interp section.
* bfd-in.h (bfd_elf32_size_dynamic_sections): Update prototype.
(bfd_elf64_size_dynamic_sections): Likewise.
* bfd-in2.h: Rebuilt.
enum.
* aout-target.h (MY_bfd_copy_private_bfd_data): Define as function
if not already defined. Copy subformat information.
(MY_text_includes_header): Define as 0 if not already defined.
(MY(backend_data)): Use MY_text_includes_header rather than 0.
(MY_final_link_callback): Rename from final_link_callback, and
define only if MY_final_link_callback is not already defined.
(MY_bfd_final_link): Rename use of final_link_callback to
MY_final_link_callback.
* aoutx.h (NAME(aout,some_aout_object_p)): Handle QMAGIC like
ZMAGIC, but set the subformat to q_magic_format. Abort if the
magic number if not recognized.
(adjust_z_magic): Use QMAGIC if q_magic_format.
* i386linux.c (MY_text_includes_header): Define as 1.
(i386linux_bfd_final_link): New static function.
(MY_bfd_final_link): Define as i386linux_bfd_final_link.
* aoutx.h (translate_to_native_sym_flags): Check both section and
output_section against sections of abfd.
* libecoff.h (struct ecoff_link_hash_entry): Change type of
written from boolean to char. Add new field small.
* ecoff.c (ecoff_link_hash_newfunc): Initialize written to 0
rather than false. Initialize small to 0.
(ecoff_link_add_externals): If ECOFF type is scSUndefined, set
small. If small is set, and hash table type is common, force the
symbol into a section named SCOMMON and change the ECOFF type from
scCommon to scSCommon.
(ecoff_link_write_external): Set written to 1 rather than true.
* coff-mips.c (mips_relocate_section): Correct JMPADDR reloc
overflow check to consider section VMA of input file.
machine type of 68000.
* aoutx.h (NAME(aout,machine_type)): Add new argument unknown.
Set *unknown to true if machine type is really unknown, as opposed
to M_UNKNOWN for the 68000.
(NAME(aout,set_arch_mach)): Change NAME(aout,machine_type) call
accordingly.
* libaout.h (NAME(aout,machine_type)): Add new argument to
prototype.
or HIUX_AUX_ID.
(som_begin_writing): Use EXEC_AUX_ID instead of HPUX_AUX_ID.
(som_write_armap): Use CPU_PA_RISC1_0 as the magic number. Note
som.c is careful to always define CPU_PA_RISC1_0.
* aoutx.h (sym_in_text_section): Don't define.
(sym_in_data_section, sym_in_bss_section): Likewise.
(sym_is_undefined, sym_is_global_defn): Likewise.
(sym_is_debugger_info, sym_is_fortrancommon): Likewise.
(sym_is_absolute, sym_is_indirect): Likewise.
(translate_from_native_sym_flags): Rewrite for clarity. Rearrange
arguments and change caller. Handle weak symbols.
(translate_to_native_sym_flags): Likewise.
(aout_link_check_ar_symbols): Don't ignore weak symbols. Pull
object in from archive if a weak defintion is found for an
existing undefined symbol.
(aout_link_add_symbols): Put all cases in switch. Set flags of an
undefined symbol to 0. Handle weak symbols.
(aout_link_write_symbols): Handle weak symbols.
(aout_link_write_other_symbol): Likewise.
(aout_link_input_section_std): Likewise.
(aout_link_input_section_ext): Likewise.
* sunos.c (sunos_write_dynamic_symbol): Likewise.
set SEC_DEBUGGING for STYP_INFO sections.
(coff_compute_section_file_positions): If COFF_PAGE_SIZE is
defined, and D_PAGED is set, set the file position equal to the
section VMA modulo COFF_PAGE_SIZE.
* coffgen.c (coff_real_object_p): If F_EXEC is set, set D_PAGED.
* coff-i386.c: Set D_PAGED in BFD target.
(COFF_PAGE_SIZE): Define.
* coff-m68k.c, coff-sparc.c: Likewise.
into a BFD section just because SHF_ALLOC is set; require that it
not use the normal symbol table.
(elf_section_from_bfd_section): Corresponding change.
Quick <stuck@cs.man.ac.uk>.
* linker.c (enum link_action): Add REF, MIND, CWARN, REFC.
(link_action): Change UNDEF_ROW/def and UNDEFW_ROW/def from NOACT
to REF. Change UNDEF_ROW/indr and UNDEFW_ROW/indr from CYCLE to
REFC. Change DEF_ROW/indr and COMMON_ROW/indr from CYCLE to MDEF.
Change DEFW_ROW/indr from CYCLE to NOACT. Change INDR_ROW/indr
from MDEF to MIND. Change INDR_ROW/warn from WARNC to CYCLE.
Change WARN_ROW/def and WARN_ROW/indr from MWARN to CWARN. Change
WARN_ROW/com from MWARN to WARN. Change WARN_ROW/warn from NOACT
to CYCLE. Change SET_ROW/warn from WARNC to CYCLE>
(_bfd_generic_link_add_one_symbol): Handle REF, MIND, CWARN and
REFC. If a new indirect symbol has been referenced, push the
reference down to the symbol it points to. FIx handling of WARN.
* aoutx.h (translate_from_native_sym_flags): If N_WARNING, don't
clobber e_type of next symbol.
(translate_to_native_sym_flags): Likewise.
(aout_link_write_symbols): Loop on bfd_link_hash_warning as well
as bfd_link_hash_indirect.
* ecoff.c (ecoff_write_object_contents): Check new tdata linker
field, rather than outsymbols being non-NULL, to decide whether to
output the symbols and relocs.
(ecoff_bfd_final_link): Set new tdata linker field to true.
files.
* elfcode.h (elf_fake_sections): Add prototype.
(bfd_section_from_shdr): Make a BFD section from an SHT_HASH
section, and from an SHT_DYNSYM section, and from the dynamic
string table section.
(elf_object_p): Set D_PAGED if there is a program header.
(elf_make_sections): Remove.
(fix_up_strtabs): Remove.
(elf_fake_sections): Rewrite. Now sets sh_entsize.
(assign_section_numbers): Rewrite. Now sets sh_link and sh_info
for all sections.
(elf_compute_section_file_positions): Don't call obsolete
functions elf_make_sections or fix_up_strtabs.
(swap_out_syms): Set sh_addralign to FILE_ALIGN rather than 4.
(NAME(bfd_elf,write_object_contents)): Permit writing DYNAMIC
objects.
(elf_section_from_bfd_section): Treat SHT_DYNSYM like other normal
sections. If an SHT_REL or SHT_RELA section is allocated or uses
an unusual symbol table, permit a BFD section to map to it.
Permit most SHT_STRTAB sections to have a BFD section mapped to
them.
(elf_bfd_final_link): Don't set sh_link, sh_info or sh_entsize
fields of dynamic sections here; do it in assign_section_numbers.
* elf32-target.h, elf64-target.h: Add D_PAGED to permitted object
flags.