the last four multibyte relocations emitted.
(enum pa_symbol_type): Type to fully describe the symbol types
associated with .import/.export assembler directives.
information needed to build/write symbol tables and fixup streams.
(struct som_section_data_struct): Add new fields to hold additional
information needed to build/write space and subspace headers.
(som_symbol_data): New accessor macro for SOM symbol information.
(R_HPPA_*): Basic relocation types to be used by the assembler.
which is either commented out or ifdef'd out. Add, update and
clean comments. Fix various indention and spacing problems. Handle
problems related to using "ble" to jump to a stub rather than "bl"
(%r31 is trashed by "ble", but not by "bl").
(NEW_INSTRUCTION): Put inside curly braces.
(CURRENT_STUB_OFFSET): Fix indention problems.
(hppa_elf_build_arg_reloc_stub): Fix indention and spacing problems.
Add, update and clean comments. Handle "ble" %r31 lossage problems.
(hppa_elf_build_long_branch_stub): Likewise.
(hppa_look_for_stubs_in_section): Likewise.
(hppa_elf_stub_check): Remove obsolete function.
* hppa_stubs.h: Add new instructions to deal with %r31 lossage
problems. Delete unused instructions.
of architectures, get the ELF EM_xxx code from the backend
information. Let the generic ELF target match any EM_xxx code not
matched by another ELF target. Call elf_backend_object_p to let
the backend do more checks and set global information.
* libelf.h (struct elf_backend_data): Added elf_machine_code and
elf_backend_object_p fields.
(struct bfd_elf_arch_map): Removed.
(bfd_elf_arch_map, bfd_elf_arch_map_size): Don't declare.
* elf32-target.h, elf64-target.h: Initialize elf_machine_code
field with ELF_MACHINE_CODE. Initialize elf_backend_object_p
field with elf_backend_object_p (if it is defined).
* elf32-gen.c, elf32-hppa.c, elf32-i386.c, elf32-i860.c,
elf32-m68k.c, elf32-m88k.c, elf32-mips.c, elf32-sparc.c,
elf64-gen.c (ELF_MACHINE_CODE): Defined.
* elf32-mips.c: Include ecoffswap.h to get ECOFF swapping
routines.
(mips_elf_object_p): Set the right machine number.
(mips_elf_ecoff_debug_swap): Defined.
(elf_backend_object_p): Defined to be mips_elf_object_p.
(elf_backend_ecoff_debug_swap): Defined to be
mips_elf_ecoff_debug_swap.
* elf.c (bfd_elf_arch_map, bfd_elf_arch_map_size): Removed.
* elf32-mips.c (elf_mips_howto_table): Don't complain on overflow
for R_MIPS_26. Correct overflow detection requires matching the
upper four bits of the destination against the PC. From Ted Lemon
<mellon@pepper.ncd.com>.
* elf32-hppa.c (elf_hppa_reloc_type_lookup): Return type
should point to const data.
(struct elf_backend_data): Added elf_backend_ecoff_debug_swap
field. Removed unused write_relocs field.
* elf32-target.h: Adjusted elf_backend_data initialization
accordingly.
* elf64-target.h: Corrected elf_backend_data initialization to
fill in all fields and to set elf_64_p to 1.
* elf32-hppa.c (hppa_elf_get_section_contents): Fix logic error
in last change. Always rebuild symbol extension section the first
time though if output sections exist (fixes ld -r problems).
MY_bfd_debug_info_accumulat [sic]): Remove unused definitions.
(MY_bfd_get_relocated_section_contents, MY_bfd_relax_section,
MY_bfd_seclet_link): Define.
(MY_bfd_reloc_type_lookup): Rename from
MY_reloc_howto_type_lookup.
(MY_bfd_make_debug_symbol): Rename from MY_make_debug_symbol.
(MY(vec)): Use JUMP_TABLE rather than listing functions.
* hp300hpux.c (MY_get_symtab, MY_get_symtab_upper_bound,
MY_canonicalize_reloc, MY_write_object_contents): Don't define in
terms of MY, because that causes a recusive invocation of CAT when
expanded within JUMP_TABLE, and ANSI compilers don't expand
recursive macros.
* mipsbsd.c (MY_bfd_reloc_type_lookup): Rename from
MY_reloc_howto_type_lookup, and don't define in terms of MY.
(MY_canonicalize_reloc): Don't define in terms of MY.
(aout_mips_little_vec, aout_mips_big_vec): Use JUMP_TABLE rather
than listing functions.
* elf32-hppa.h (hppa_elf_stub_finish): Add prototype.
(ELF32_HPPA_R_ARG_RELOC): Renamed without the ELF32 prefix
and moved into libhppa.h. All references changed.
(ELF32_HPPA_R_CONSTANT, ELF32_HPPA_R_ADDEND): Likewise.
(get_opcode and opcode defines): Move into libhppa.h
* elf32-hppa.c (hppa_elf_insn2fmt): Rename and move info libhppa.h.
* libhppa.h (HPPA_R_*): Moved here. Reformatted slightly to make for easier
reading.
(get_opcode): Moved here. FIXME! this really should be a C function
inside the opcode library!
(bfd_hppa_insn2fmt): Likewise.
* targets.c (target_vector): Enable elf32-hppa vector.
* elf32-hppa.c (hppa_elf_get_section_contents): Add new comments and clarify
existing comments. Do not use DEFUN to declare this function. Fix numerous
indention problems. Correctly handle cases where symbol extension section may
need to be read from disk, read from memory, or built then read from memory.
* elf32-hppa.h: Reformat with gnu-indent and hand fix numerous
formatting and indention problems gnu-indent can not handle.
Clarify some comments about relocation types. Comment basic
relocation "classes". Group PARAM declarations together.
(HPPA_SXT_{NULL, SYMNDX, RG_RELOC}): Make members of a new
enumerated type rather than #defines.
* coffgen.c (coff_print_symbol): Use %lx and cast n_value to
unsigned long. Use %ld for tagndx. Use %lx for offset + vma and
cast it to unsigned long.
* ecoff.c (ecoff_emit_aggregate): Use %ld.
(ecoff_print_symbol): Use %ld, and cast indx and sym_base to long.
* coffcode.h (dummy_reloc16_estimate): Specify return type.
bfd_error to system_call_error. If the return value is
non-negative, set errno to ENOSPC (if ENOSPC is defined).
(bfd_seek): If the seek fails, set bfd_error to system_call_error.
(bfd_generic_set_section_contents): For a bad offset + count, set
bfd_error to bad_value.
* seclet.c (rel): Don't abort. Instead, return false.
(mips_elf_fake_sections): Force size of .reginfo section to sizeof
Elf32_External_RegInfo.
(mips_elf_seclet_link): New function. Link the .reginfo section
specially, and pass everything else to the generic routine.
(bfd_elf32_bfd_seclet_link): Define macro.
* elf32-target.h: If bfd_elf32_bfd_seclet_link is already defined,
don't override it.
(nlm_signature): New macro.
* nlmcode.h (nlm_object_p, nlm_write_object_contents): Use the NLM
signature from the backend rather than the constant NLM_SIGNATURE.
* nlm32-i386.c (nlm32_i386_backend): Initialize signature field.
(.dep): Depend on $(CFILES) and $(HFILES). Delete .dep1 and remake it, so that
"$?" is complete.
(.dep1): Don't need to remove .dep1 first.
(dep.sed): Depend on config.status, not Makefile.
(CFILES): Add nlm.c.
various other related changes.
* libecoff.h (ecoff_backend_data): Added rdata_in_text field.
Renamed finish_reloc to adjust_reloc_in. Added adjust_reloc_out
field.
(ecoff_bfd_get_relocated_section_contents): Don't define.
* ecoff.c (ecoff_sec_to_styp_flags, ecoff_styp_to_sec_flags):
Handle .lita section.
(ecoff_slurp_reloc_table): Handle RELOC_SECTION_FINI.
finish_reloc backend field renamed to adjust_reloc_in.
(ecoff_bfd_seclet_link): Adjust number of aux entries to
debug_align boundary.
(ecoff_compute_section_file_positions): If rdata_in_text put
.rdata section in text segment, not data segment. Put .pdata
section in text segment.
(ecoff_write_object_contents): Likewise. Also, call
adjust_reloc_out, and handle .lita, .xdata, .pdata, .fini and
absolute sections when writing out relocs.
* coffswap.h (coff_swap_aouthdr_out): For ALPHAECOFF, output 2 for
bldrev field, as on Alpha OSF/1. Padding field is now 2 bytes.
* coff-mips.c (mips_ecoff_swap_reloc_out): Added assertion.
(mips_adjust_reloc_in): Renamed from mips_finish_reloc.
(mips_adjust_reloc_out): New function (does nothing).
(mips_ecoff_backend_data): Initialize new fields.
(ecoff_bfd_get_relocation_section_contents): Define to be
bfd_generic_get_relocated_section_contents.
* reloc.c (bfd_perform_relocation): Added casts to avoid Alpha
OSF/1 cc bug.
is made to work.
(coff_compute_section_file_positions): Remove check for
USE_DISCARDED_SECTIONS_COUNT.
* coff-i386.c: Don't define USE_DISCARDED_SECTIONS_COUNT. Basing
it on host defines is wrong.
handle MIPS specific sections.
* libelf.h (elf_backend_data): Pass fourth argument to
elf_backend_section_from_bfd_section to permit it to control the
section index to use.
(elf_obj_tdata): Add gp and gp_size fields.
(elf_gp, elf_gp_size): New accessor macros.
* elfcode.h: Removed a number of unused local variables.
(elf_fake_sections): Clear section header before calling
elf_backend_fake_sections, not after.
(prep_headers): Return true at end.
(elf_section_from_bfd_section): Pass retval argument to
elf_backend_section_from_bfd_section.
* elf32-hppa.c (elf32_hppa_backend_section_from_bfd_section):
Accept and ignore new retval argument.
* bfd.c: Include libelf.h.
(bfd_set_gp_size): Handle ELF targets.
* Makefile.in (bfd.o): Depends upon libelf.h.
(elf32-mips.o): Depends upon $(INCDIR)/elf/mips.h.
(ecoff_mkobject_hook): New function.
(ecoff_new_section_hook, ecoff_sizeof_headers,
ecoff_compute_section_file_positions, ecoff_set_section_contents,
ecoff_write_object_contents): Handle dummy REGINFO section.
(ecoff_get_section_contents): New function to handle reading
REGINFO section.
* libecoff.h (ecoff_get_section_contents): Change from macro
definition to function prototype.
(ecoff_mkobject_hook): New prototype.
* coff-alpha.c (alpha_ecoff_mkobject_hook): Removed.
(alpha_ecoff_backend_data): Use ecoff_mkobject_hook.
* coff-mips.c (mips_ecoff_mkobject_hook): Removed.
(mips_ecoff_backend_data): Use ecoff_mkobject_hook.
* reloc16.c: Add new target entry - bfd_coff_reloc16_estimate,
fix bit rot.
* libcoff.h, libcoff-in.h: declarations. Prototypes
* coffcode.h (bfd_coff_std_swap_table): Add calls to
coff_reloc_16_extra_cases and coff_reloc16_estimate.
(dummy_reloc16_estimate): New function.
* coff-h8300.c (h8300_reloc16_estimate): New function
(align_file_position): New function.
(elf_locate_sh): Disabled function deleted.
(assign_file_positions_for_symtab_and_strtabs): Align position, then place
symtab, then do other sections.
(map_program_segments): Align program header.
(assign_file_positions_except_relocs): Align section headers.
(assign_file_positions_for_relocs): Align relocation sections.
Fixes ld/3584.
* section.c: Change comments to say several sections can have
the same name.
* bfd-in2.h: Re-generate to reflect above change.
* coffgen.c (make_a_section_from_file): Call bfd_make_section_anyway
if still no section after the bfd_coff_make_section_hook.
* coffcode.h: Add comment about TWO_DATA_SECS.
* section.c: Change comments to say several sections can have
the same name.
* bfd-in2.h: Re-generate to reflect above change.
* coffgen.c (make_a_section_from_file): Call bfd_make_section_anyway
if still no section after the bfd_coff_make_section_hook.
* coffcode.h: Add comment about TWO_DATA_SECS.
* config/alphaosf.mh (HDEFINES): Set to -DHPUX_CORE.
(HDEPFILES): Set to hpux-core.o.
* bfd-in2.h (union tdata): Add osf_core_data member.
* targets.c: If OSF_CORE is defined, add osf_core_vec to target list.
* Makefile.in (OPTIONAL_BACKENDS): Add osf-core.o.
(osf-core.o): New dependency.
armap.
* elfcode.h (fix_up_strtabs): Set sh_entsize for the .stab
section, not the .stabstr section. Set the type of the .stabstr
section to SHT_STRTAB.
(elf_section_from_bfd_section): Handle SHT_STRTAB sections.
Also set SEC_DEBUGGING for appropriate SHT_STRTAB sections.
* elfcode.h (bfd_section_from_shdr): If section is SHT_PROGBITS,
and the name starts with .debug, .line or .stab, set
SEC_DEBUGGING.
* elf32-target.h (TARGET_BIG_SYM, TARGET_LITTLE_SYM): Added
SEC_DEBUGGING to section_flags.
* elf64-target.h (TARGET_BIG_SYM, TARGET_LITTLE_SYM): Added
SEC_DEBUGGING and SEC_CODE to section_flags.
* bfd-in2.h: Updated.
sections with SEC_LOAD set, even if SEC_HAS_CONTENTS is clear.
(ecoff_write_object_contents): Don't set scnptr to zero just
because size of section is zero. Needed for Irix 4.0.5F.
* bfd-in2.h (tdata): Add lynx_core_data;
* config.bfd configure.host: Get rid of superfluous netbsd and
lynxos entries.
* configure.in: Add lynx-core.o to Lynx config.
* i386lynx.c: Add defs for core file support.
* lynx-core.c: New file with Lynx core file support.
* hosts/i386lynx.h: Move lots of host specific includes to here.
Add def of HOST_LYNX. Remove unnecessary defs.
* bfd-in2.h (tdata): Add lynx_core_data;
* config.bfd configure.host: Get rid of superfluous netbsd and
lynxos entries.
* configure.in: Add lynx-core.o to Lynx config.
* i386lynx.c: Add defs for core file support.
* lynx-core.c: New file with Lynx core file support.
* hosts/i386lynx.h: Move lots of host specific includes to here.
Add def of HOST_LYNX. Remove unnecessary defs.
SHF_PROGBITS or SHT_STRTAB section if SEC_ALLOC is set. Never set
SEC_DATA for a SHF_NOBITS section.
* nlm32-i386.c (nlm_i386_mangle_relocs): Check SEC_LOAD rather
than SEC_CODE | SEC_DATA. Add some casts to avoid warnings.
* nlmcode.h: Add some casts to avoid warnings.
(nlm_write_object_contents): Ignore relocs for sections that are
neither code nor data. Just use the symbol value for debugging
symbols; don't offset by the section vma.
sections, not just allocated sections; debugging sections can have
relocs.
(elf_symbol_from_bfd_symbol): If there is an output section, use
the section index from that rather than the input section.
special function for all reloc entries.
* elf32-target.h (TARGET_LITTLE_SYM): Add SEC_CODE to
section_flags.
* libelf.h (elf_symbol_type): Remove desc, type and other fields.
* Makefile.in (elf32-*.o): These depend upon elf32-target.h.
warnings.
* libbfd.h (struct artdata): Add armap_timestamp and armap_datepos.
(bfd_flush, bfd_stat): Add prototypes.
* libbfd.c (bfd_flush): Add, does fflush on a BFD.
(bfd_stat): Add, does fstat on a BFD.
* archive.c (_bfd_write_archive_contents): At end of file writing,
verify and possibly update the timestamp in the armap, if a BSD
archive. FIXME! Kludge recognizes BSD archive, rather than
vectoring properly. Should add to xvec.
(compute_and_write_armap): Move prototype to top, avoid PROTO.
(bsd_write_armap): Save timestamp and file location thereof, when
writing the armap in a BSD file.
(bsd_update_armap_timestamp): New function to check and
rewrite the timestamp.
* sco-core.c: Remove, replace by trad-core.c.
* trad-core.c: If HOST_STACK_START_ADDR is defined, use it.
* config/i386sco.mh: Use trad-core not sco-core.
* hosts/i386isc.h, config/i386isc.mh: Remove.
* configure.host: Use i386sco for isc.
* config/i386-sco.mt: Remove, identical to i386-coff.mt.
* config.bfd: Use i386-coff not i386-sco.
* bfd-in.h: Added swapping routine declarations, and renamed them
from _do_* to bfd_*.
* libbfd.c: Renamed swapping routines from _do_* to _bfd_*.
* Changed all callers.
* libbfd.h, bfd-in2.h: Rebuilt.