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.