if it is not large enough to accomodate the entire TOC area with
signed 16 bit offsets.
(xcoff_write_global_symbol): Handle negative TOC offsets in global
linkage code.
(_bfd_ppc_xcoff_relocate_section): Adjust relocations against a
TOC anchor to use the TOC value used in the output file.
_bfd_print_private_bfd_data from void * to PTR.
* libbfd-in.h (_bfd_generic_bfd_print_private_bfd_data): Cast
using PTR rather than void *.
* bfd-in2, libbfd.h: Rebuild.
* peicode.h (pe_print_private_bfd_data): Change vfile from void *
to PTR.
* elfxx-target.h (bfd_elfNN_bfd_print_private_bfd_data): Define as
_bfd_generic_bfd_print_private_bfd_data rather than casting
bfd_true.
not at the file position of the first section.
* coffcode.h (coff_compute_section_file_positions): Avoid using
unportable #elif.
(coff_write_object_contents): When generating a PPC PE executable
with no symbols, round up the file size to a COFF_PAGE_SIZE
boundary.
* cofflink.c (_bfd_coff_final_link): If there are no symbols,
don't write out a string table.
header, pass the new one to _bfd_elf_make_section_from_shdr.
(elf_fake_sections): Don't set sh_info and sh_entsize fields.
(elf_map_symbols): Add section VMA to symbol value when comparing
against 0.
(_bfd_elf_compute_section_file_positions): Only build symbol table
if there are some symbols. Set file offset of symtab and strtab
sections.
(assign_file_positions_except_relocs): Remove dosyms parameter.
Change all callers. Never set file offset of symtab and strtab
sections.
(_bfd_elf_copy_private_section_data): New function.
(MAP_ONESYMTAB, MAP_DYNSYMTAB, MAP_STRTAB, MAP_SHSTRTAB): Define.
(_bfd_elf_copy_private_symbol_data): New function.
(swap_out_syms): Check for special mapping of st_shndx created by
copy_private_symbol_data.
* elfxx-target.h: Use new copy routines.
* elf-bfd.h (_bfd_elf_copy_private_symbol_data): Declare.
(_bfd_elf_copy_private_section_data): Declare.
* coff-rs6000.c (rs6000coff_vec): Add conditional defines
TARGET_SYM and TARGET_NAME for vector and BFD name.
* coff-pmac.c (pmac_xcoff_vec): Remove.
(TARGET_SYM, TARGET_NAME): Define.
* coffcode.h (coff_set_arch_mach_hook) [POWERMAC]: Set the
machine to 0, not all PowerMacs are 601s.
be represented, report the name via _bfd_error_handler.
(translate_to_native_sym_flags): Likewise.
* elf32-mips.c (mips_elf_final_link): Likewise.
* oasys.c (oasys_write_sections): Likewise.
which checks for STYP_OVRFLO sections.
(coff_compute_section_file_positions): If RS6000COFF_C, handle
reloc and lineno count overflows.
(coff_write_object_contents): Call coff_count_linenumbers before
coff_compute_section_file_positions. If RS6000COFF_C, handle
reloc and lineno count overflows.
* xcofflink.c (_bfd_xcoff_bfd_final_link): Count line numbers and
relocs before dealing with .pad sections. Count overflow section
headers when handling .pad sections.
(struct xcoff_link_hash_table): Add descriptor_section and
special_sections fields.
(_bfd_xcoff_bfd_link_hash_table_create): Initialize new fields.
(xcoff_link_add_symbols): Set linkage section alignment. Create
descriptor section. Check for magic symbol names (_text, etc.),
and record them in special_sections if found. Set
XCOFF_DESCRIPTOR flag for a function descriptor, and set its
descriptor field to point back to the function code symbol.
(xcoff_sweep): Always mark the special descriptor_section.
(bfd_xcoff_export_symbol): Check whether the symbol might be a
function descriptor, and mark it if it is.
(bfd_xcoff_size_dynamic_sections): Add new special_sections
parameter, and fill it in. Allocate space for the descriptor
section.
(xcoff_build_ldsyms): Set XCOFF_DEF_REGULAR flag when defining
global linkage code. If an undefined function descriptor is
exported, arrange to define it. Warn about any other undefined
exported symbol.
(_bfd_xcoff_bfd_final_link): Write out the descriptor section.
(xcoff_write_global_symbol): Create a function descriptor when
necessary.
* bfd-in.h (bfd_xcoff_size_dynamic_sections): Update declaration.
* bfd-in2.h: Rebuild.
and mmep is available.
* acconfig.h: Undef USE_MMAP.
* configure, config.in: Regenerated.
* aoutx.h: If USE_MMAP is not defined, do all symbol and string table handling
the old way.
(aout_get_external_symbols): Don't complain if last byte of string table is
nonzero.
* libbfd.c [HAVE_MADVISE]: Include sys/types.h and sys/mman.h.
(bfd_free_window) [! USE_MMAP]: Don't define.
(bfd_get_file_window, _bfd_generic_get_section_contents_in_window)
[! USE_MMAP]: Abort.
int to boolean; update all callers. Pass MAP_SHARED if not
writable--it's required on Solaris. Cast fprintf argument to
avoid warning.
* bfd-in.h (bfd_get_file_window): Update declaration.
* bfd-in2.h: Rebuild.
* aoutx.h: Update calls to bfd_get_file_window.
Change all uses.
(xcoff_swap_ldhdr_in): New static function.
(xcoff_swap_ldsym_in): New static function.
(xcoff_link_add_symbols): If we just created a descriptor, pass it
to _bfd_generic_link_add_one_symbol, to save a hash lookup.
(xcoff_link_add_dynamic_symbols): Rewrite to read .loader symbols
rather than normal symbol table.
(xcoff_mark): When considering called symbols, check whether the
descriptor is from a dynamic object, rather than the symbol
itself.
(xcoff_build_ldsyms): Likewise.
Cast realloc and malloc return values. If malloc or realloc fail,
set bfd_error_no_memory.
* bfd-in.h (bfd_get_file_window): Change type to boolean.
* bfd-in2.h: Rebuild.
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_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.