the created .tc section to 2.
(xcoff_mark): Don't keep a .loader reloc for a call to an
undefined symbol when creating a shared library.
(xcoff_build_ldsyms): When creating a shared library, generate
global linkage code for a call to an undefined symbol.
Added some new interfaces, and a new entry in the target vector. Under the new
interfaces, mmap will be used if available, otherwise malloc/seek/read, as
before. Old interfaces all still intact.
Most configurations (including all used by "--enable-targets=all") simply
changed to call the default routine for that entry in the target vector. I
might've missed some targets only included in special configurations.
Support for a.out symbol and string table reading now goes through new
interfaces, and will use mmap when available.
Linker hooks (e.g., avoiding reallocation under malloc) not ready yet.
to o. Clobber and restore the list of new csects around the call
to _bfd_generic_link_add_one_symbol, in case it wants to report a
linker error and the linker wants to read the symbol table. Reset
the line number count of a real section even if it has no relocs.
(_bfd_xcoff_bfd_final_link): If shared, set the DYNAMIC flag.
* coff-m88k.c (rtype2howto): New static function.
(RTYPE2HOWTO): Use it rather than a macro definition.
* coffcode.h (coff_write_object_contents): set internal_a.magic
to PAGEMAGICPEXECPAGED #if defined (M68) && !defined (LYNXOS).
* configure.in: m68*-motorola-sysv3* does not use ptrace-core.o;
define TRAD_HEADER to new file hosts/delta68.h.
m88*-motorola-sysv*, however, does use ptrace-core.o.
* hosts/delta68.h: New file.
* ptrace-core.c (ptrace_unix_core_file_p): change bfd_zmalloc to
bfd_zalloc; provide proper parm abfd to calls to bfd_zalloc.
BFD is not of the right type.
(bfd_elf_get_needed_list): Likewise.
* i386linux.c (bfd_linux_size_dynamic_sections): Likewise.
* sunos.c (bfd_sunos_get_needed_list): Likewise.
* xcofflink.c (XCOFF_XVECP): Define.
(bfd_xcoff_link_record_set): Don't do anything if the BFD is not
of the right type.
(bfd_xcoff_import_symbol): Likewise.
(bfd_xcoff_export_symbol): Likewise.
(bfd_xcoff_link_count_reloc): Likewise.
(bfd_xcoff_record_link_assignment): Likewise.
(bfd_xcoff_size_dynamic_sections): Likewise.
systems that have a system <libelf.h>.
* Makefile.in: Globally replace libelf.h with elf-bfd.h.
* bfd.c, elf.c, elf32-arc.c, elf32-gen.c, elf32-hppa.c,
elf32-hppa.h, elf32-i386.c, elf32-i860.c, elf32-m68k.c,
elf32-m88k.c, elf32-mips.c, elf32-ppc.c, elf32-sparc.c,
elf64-gen.c, elf64-sparc.c, elfcode.h, elflink.c,
elfxx-target.h: Include elf-bfd.h rather than libelf.h.
* elfxx-target.h: Change libelf.h reference to elf-bfd.h.
* ecoff.c (ecoff_set_symbol_info): Add new parameter weak. If
set, set BSF_WEAK in symbol. Change all callers.
(ecoff_get_extr): Set weakext based on BSF_WEAK.
(ecoff_link_add_externals): If weakext is set, pass BSF_WEAK to
_bfd_generic_link_add_one_symbol.
(ecoff_indirect_link_order): Check that the section tdata relocs
are not NULL before using them.
* configure.in (alpha*-*-linux*): Set COREFILE to trad-core.o and
define TRAD_HEADER as hosts/alphalinux.h.
* configure: Rebuild.
* hosts/alphalinux.h: New file.
* trad-core.c (trad_unix_core_file_p): Cast u.u_ar0 to bfd_vma,
not int.
of xcoff_mark.
(xcoff_mark): Call xcoff_mark_symbol.
(bfd_xcoff_export_symbol): Call xcoff_mark_symbol.
(bfd_xcoff_link_count_reloc): Call xcoff_mark_symbol rather than
doing it by hand.
(xcoff_build_ldsyms): Build a .loader symbol for an export symbol.
field.
(xcoff_find_reloc): New static function.
(xcoff_link_add_symbols): Use it.
(_bfd_xcoff_bfd_final_link): Set finfo.line_filepos.
(xcoff_link_input_bfd): Handle C_BINCL and C_EINCL. Don't
relocate the value of C_DECL.
* cofflink.c (_bfd_coff_generic_relocate_section): Make
callback decide what goes in .relocs.
* pe[i]-i386.c (TARGET_UNDERSCORE): Define.
* peicode.h (pe_mkobject_hook): Only copy aouthdr if
there is one.
aoutx.h, gen-aout.c, host-aout.c, hp300bsd.c, i386aout.c
i386bsd.c, i386dynix.c, i386linux.c, i386lynx.c, i386mach3.c,
i386netbsd.c, m68klynx.c, m88kmach3.c, mipsbsd.c, newsos3.c,
ns32knetbsd.c, pc532-mach.c, riscix.c, sparclynx.c, sparcnetbsd.c:
Change PAGE_SIZE to TARGET_PAGE_SIZE.
* m68knetbsd.c: Ditto as well as add support for the m68k4k object
format.
* netbsd.h: Double ditto (incl. m68k4k support). NetBSD's text
segments includes the a.out header. See to that the magic number
*always* is big-endian.
* config.bfd: Add m68*-hp*-netbsd* case. Cross-pollinate m68k and
m68k4k NetBSD configurations.
* configure.in, configure: Separate i386 & mips NetBSD
configurations from other BSD ones. Don't assume DEC is the only
thing NetBSD/mips run on. Add {m68k,ns32k,sparc}-*-netbsd*
configurations. Add support for m68k4k NetBSD object format.
* libaout.h: Added M_68K4K_NETBSD magic.
* hosts/{m68k,sparc}nbsd.h: Don't define HOST_BIG_ENDIAN_P.
* hosts/nbsd.h: Define HOST_BIG_ENDIAN_P according to
<machine/endian.h>.
constructors and a few other special cases.
* coff-rs6000.c (rs6000coff_vec): Set symbol_leading_char back to
zero, reverting yesterday's change.
* bfd-in.h (bfd_xcoff_link_record_set): Declare.
(bfd_xcoff_link_count_reloc): Declare.
(bfd_xcoff_record_link_assignment): Declare.
* bfd-in2.h: Rebuild.
linker.
* libcoff-in.h (struct xcoff_tdata): Add full_aouthdr,
toc_section, and entry_section fields.
(struct xcoff_section_tdata): Remove ldrel_count field.
* libcoff.h: Rebuild.
* coffcode.h (coff_mkobject_hook): Initialize new xcoff_data
fields.
(coff_compute_section_file_positions): If RS6000COFF_C, generate
full a.out header if full_aouthdr is set in xcoff_data.
(coff_write_object_contents): Likewise. Set o_snentry and o_sntoc
based on sections stored in xcoff_data.
* coff-rs6000.c (xcoff_copy_private_bfd_data): Copy new xcoff_data
fields.
* coffgen.c (coff_get_symbol_info): If fix_value is set, fix the
value stored in ret rather than returning a pointer value.
* configure: Rebuild.
* mpw-config.in: Add xcofflink.c.o to powerpc-apple-macos.
* coff-pmac.c: Include coff-rs6000.c instead of duplicating its
contents.
(pmac_xcoff_vec): Update to use new xcoff support.
* coff-rs6000.c (xcoff_generic_stat_arch_elt): Make static.
(xcoff_write_armap): Declare buf as unsigned char.
* xcofflink.c (xcoff_link_add_symbols): Declare a local as PTR.
* mpw-make.sed: Generalize subdir_do edit.
* coff-i386.c (coff_i386_reloc_type_lookup): New.
* coffcode.h (coff_write_object_contents): If .bss is before
.data us that as data_start.
* cofflink.c (_bfd_coff_generic_relocate_section): Get reloc
calc correct.
* peicode.h (add_data_entry): Use _cooked_size of data directory.
(coff_swap_outhdr_out): Hardwire in version number.
now relative to the section, not absolute.
* ecofflink.c (_bfd_ecoff_locate_line): Use the right symbol to
get the file name when there is a N_SO directory name. When
handling stabs, remember that section->vma was added to the
offset.
PR 8223.
* coff-arm.c (in_reloc_p): New.
* coff-i386.c (in_reloc_p): New.
* coffcode.h: Allways include peicode.h if COFF_WITH_PE.
(coff_write_object_contents): Only set has_reloc_section
if PE_IMAGE.
* cofflink.c (_bfd_coff_generic_relocate_section): Call
in_reloc_p to decide if reloc should be emitted.
* libcoff.h (pe_data_type.in_reloc_p): New.
* peicode.h (pe_mkobject): Initialize in_reloc_p.
coff_link_hash_newfunc and make non-static.
(_bfd_coff_link_hash_table_init): New function, broken out of
_bfd_coff_link_hash_table_create.
(_bfd_coff_link_hash_table_create): Use it.
(process_embedded_commands): Make static.
* libcoff-in.h ((_bfd_coff_link_hash_newfunc): Declare.
(_bfd_coff_link_hash_table_init): Declare.
* libcoff-in.h (struct xcoff_tdata): Add cputype field.
* libcoff.h: Rebuild.
(coff_slurp_line_table): Warn if we try to set the lineno field of
a symbol twice.
(coff_slurp_symbol_table): If RS6000COFF_C, handle C_BINCL and
C_EINCL by setting fix_line. Fix C_BSTAT symbol value.
* coffgen.c (coff_mangle_symbols): Handle fix_line.
(coff_write_symbol): Only use N_DEBUG if the symbol is in the
absolute section.
(coff_print_symbol): Print fix_value symbols in a useful fashion.
* libcoff.h: Rebuild.
(xcoff_data): Define.
* bfd.c (struct _bfd): Add xcoff_obj_data field to tdata union.
* bfd-in2.h, libcoff.h: Rebuild.
* coff-rs6000.c (xcoff_mkobject): New static function.
(coff_mkobject): Define.
(xcoff_copy_private_bfd_data): New static function.
(coff_bfd_copy_private_bfd_data): Define.
(rs6000coff_howto_table): Change R_TOC complain_on_overflow from
signed to bitfield.
(rs6000coff_vec): Add DYNAMIC to object_flags.
* coffcode.h (sec_to_styp_flags): If RS6000COFF_C, handle .pad and
.loader sections specially.
(coff_new_section_hook): If RS6000COFF_C, get the .text and .data
section alignment from the XCOFF tdata information.
(coff_mkobject_hook): If RS6000COFF_C, set DYNAMIC based on
F_SHROBJ, and copy the extra a.out header information into the
XCOFF tdata structure.
(coff_write_object_contents): If RS6000COFF_C, set F_SHROBJ,
F_DYNLOAD and the extra a.out header information.
(coff_slurp_symbol_table): Set BSF_NOT_AT_END for a C_EXT or
C_HIDEXT symbol with attached csect information.
* coffswap.h (coff_swap_aouthdr_in): If RS6000COFF_C, swap
in the o_maxdata field.
(coff_swap_aouthdr_out): If RS6000COFF_C, swap extra XCOFF fields.
* coffgen.c (coff_renumber_symbols): Don't move any symbol to the
end if BSF_NOT_AT_END is set.
* archive.c (bfd_get_next_mapent): Return BFD_NO_MORE_SYMBOLS when the symbol
table is empty.
* elf32-m68k.c (elf_m68k_size_dynamic_sections): Don't reserve space for
section symbols, since we don't output them either.
(elf_m68k_adjust_dynindx): Removed.
* ptrace-core.c (rawptr): Make it a local variable of ptrace_unix_core_file_p.
* trad-core.c (rawptr): Likewise, for trad_unix_core_file_p.
_bfd_coff_print_aux.
(bfd_coff_print_aux): New static function.
(coff_pointerize_aux_hook (RS6000COFF_C version)): Pointerize the
scnlen field of an XTY_LD csect aux entry.
(coff_print_aux): New static function.
(coff_slurp_symbol_table): Don't pointerize scnlen field; now done
in coff_pointerize_aux_hook.
(bfd_coff_std_swap_table): Initialize new field.
* coffgen.c (coff_print_symbol): Call bfd_coff_print_aux.
* libcoff.h: Rebuild.
* coff-alpha.c (alpha_ecoff_backend_data): Initialize new field.
* coff-mips.c (mips_ecoff_backend_data): Likewise.
_bfd_coff_pointerize_aux_hook.
(coff_pointerize_aux_hook): Define as a function if RS6000COFF_C
or I960, and as 0 otherwise.
(bfd_coff_std_swap_table): Initialize new field.
* libcoff.h: Rebuild.
* coffgen.c (coff_pointerize_aux): Change parameters to take
symbol pointer instead of type and class, and to take aux index.
Call _bfd_coff_pointerize_aux_hook if it is defined.
(coff_get_normalized_symtab): Always call coff_pointerize_aux.
* coff-alpha.c (alpha_ecoff_backend_data): Initialize all fields.
* coff-mips.c (mips_ecoff_backend_data): Likewise.
field.
* ecoff.c (ecoff_sec_to_styp_flags): Check for various Alpha
sections, and set styp correctly for them: .got, .hash, .dynamic,
.liblist, .rel.dyn, .conflic, .dynstr, .dynsym, .comment.
(_bfd_ecoff_styp_to_sec_flags): Check for various Alpha section
types.
(ecoff_sort_hdrs): New static function.
(ecoff_compute_section_file_positions): Return boolean, not void.
Sort the sections by VMA before looking through them. Put the
first non SEC_ALLOC section on a new page. Put every SEC_ALLOC
section on an appropriate boundary within the page.
(ecoff_compute_reloc_file_positions): Check return value of
ecoff_compute_section_file_positions.
(_bfd_ecoff_set_section_contents): Likewise.
(_bfd_ecoff_write_object_contents): Check for various Alpha
section types when incrementing text_size and data_size. Call
adjust_headers backend function if it exists.
* coff-alpha.c (alpha_adjust_headers): New static function.
(alpha_ecoff_backend_data): Initialize adjust_headers field.
* coff-mips.c (mips_ecoff_backend_data): Likewise.
PR 8141.