information, and to write some of out directly rather than saving
it in memory. Several new functions and structures, and new
arguments to existing functions.
* ecoff.c (ecoff_compute_reloc_file_positions): Compute
sym_filepos as well.
(ecoff_get_extr): Use ifdmap instead of ifdbase.
(ecoff_write_object_contents): Don't compute sym_filepos here.
Only output symbols if outsymbols is not NULL.
(ecoff_bfd_final_link): Adjust for changes in ecoff_debug_info and
bfd_ecoff_debug functions. Write out debugging information here.
(ecoff_final_link_debug_accumulate): Adjust for changes in
bfd_ecoff_debug functions.
(ecoff_link_write_external): Use ifdmap rather than ifdbase.
* elf32-mips.c (mips_elf_read_ecoff_info): Read external symbols
first, to put them in the first memory buffer. Clear fdr field.
(mips_elf_get_extr): Use pointer to unswapped external symbol.
(mips_elf_final_link): Adjust for changes in bfd_ecoff functions.
Preserve .text, .data and .bss even if they are empty. Save
pointer to unswapped external symbol rather than copying it.
Don't free up the external symbols.
* libelf.h (elf_symbol_type): Change mips_extr to PTR.
* bfd-in.h (bfd_ecoff_debug_init, bfd_ecoff_debug_free): Declare.
(bfd_ecoff_debug_accumulate): Update declaration.
(bfd_ecoff_debug_accumulate_other): Rename declaration from
bfd_ecoff_debug_link_other and update.
(bfd_ecoff_write_accumulated_debug): Declare.
* bfd-in2.h: Rebuilt.
* Makefile.in: Rebuilt dependencies.
* bfd-in.h: (bfd_boolean): Add workaround for systems that also
define true and false as enums.
(ALMOST_STDC): Add as alternative to __STDC__.
* bfd-in2.h: Rebuilt.
* syms.c (bfd_print_symbol_vandf): Convert a PTR to FILE*.
* aoutf1.h (NAME(aout,sunos4_write_object_contents)):
If the DYNAMIC flag is set, set it in the exec header.
* aoutx.h (NAME(aout,some_aout_object_p)): If the object is
dynamically linked, set the DYNAMIC flag in the BFD.
* libaout.h (N_SET_DYNAMIC): New macro.
(N_DYNAMIC): Add missing 0 in mask.
(_bfd_add_bfd_to_archive_cache): Declare.
(_bfd_snarf_ar_hdr): Renamed from snarf_ar_hdr.
* libbfd.h: Rebuilt.
* archive.c: Cleaned up some more.
(_bfd_generic_mkarchive, bfd_generic_archive_p): Initialize
pointer elements of artdata.
(_bfd_add_bfd_to_archive_cache): Renamed from add_bfd_to_cache.
(_bfd_snarf_ar_hdr): Renamed from snarf_ar_hdr.
(get_extended_arelt_filename, get_elt_at_filepos,
bfd_construct_extended_name_table, bfd_ar_hdr_from_filesystem,
compute_and_write_armap): Made static.
* ecoff.c: Some comment changes.
(ecoff_slurp_armap): Handle rename of snarf_ar_hdr. Set
ardata->tdata to raw_armap.
(ecoff_archive_p): Initialize pointer elements of artdata.
* coff-rs6000.c (rs6000coff_get_elt_at_filepos): Handle rename of
add_bfd_to_cache.
and do the swapping here rather than calling ntohl from the N_*
macros. This cleans up assumptions about the size of a host long,
the existence to ntohl, etc.
more efficient backend code can be written for specific object
files. Only existing efficient backend is a.out.
* seclet.c, seclet.h: Removed.
* hash.c, linker.c, genlink.h: New files.
* bfd-in.h: Removed bfd_error_vector. Declared hash table
structures and functions.
(JUMP_TABLE): Removed bfd_seclet_link, added
bfd_link_hash_table_create, bfd_link_add_symbols and
bfd_final_link.
* All backends: Changed accordingly.
* bfd-in2.h: Rebuilt.
* bfd.c (struct _bfd): Added link_next and archive_pass fields.
Removed ld_symbols field.
(bfd_nonrepresentable_section, bfd_undefined_symbol,
bfd_reloc_value_truncated, bfd_reloc_is_dangerous,
bfd_error_vector): Removed.
(bfd_default_error_trap, bfd_error_trap,
bfd_error_nonrepresentabltrap): Removed.
(bfd_get_relocated_section_contents): Pass link_info. Pass
link_order instead of seclet. Pass symbols.
(bfd_relax_section): Pass link_info.
(bfd_seclet_link): Removed.
(bfd_link_hash_table_create, bfd_link_add_symbols,
bfd_final_link): New macros.
* libbfd-in.h: If __GNUC__ is defined and alloca is not, define
alloca as __builtin_alloca. Declare internal linking functions.
* libbfd.h: Rebuilt.
* libbfd.c (bfd_seek): Comment out fseek assertion. It's worked
for months.
* reloc.c (reloc_howto_type): Added error_message argument to
special_function field. Changed all callers and all definitions.
(bfd_get_reloc_size): Make argument a const pointer.
(bfd_perform_relocation): Add error_message argument to hold
string set if return value if bfd_reloc_dangerous. Changed all
callers.
(_bfd_final_link_relocate, _bfd_relocate_contents): New functions.
* section.c (asection): Renamed seclets_head and seclets_tail to
link_order_head and link_order_tail.
* targets.c (bfd_target): Replaced seclet argument with link_info
and link_order and symbols arguments in
bfd_get_relocated_section_contents. Added symbols argument to
bfd_relax_section. Removed bfd_seclet_link. Added
bfd_link_hash_table_create, bfd_link_add_symbols and
bfd_final_link.
* libaout.h (struct aoutdata): Added external_syms,
external_sym_count, external_strings, sym_hashes fields.
(obj_aout_external_syms, obj_aout_external_sym_count,
obj_aout_external_strings, obj_aout_sym_hashes): New accessor
macros.
(WRITE_HEADERS): Only output symbols if outsymbols is not NULL.
* aoutx.h: Wrote new back end linker routines.
(translate_to_native_sym_flags): Return boolean value. Don't use
bfd_error_vector.
(NAME(aout,write_syms)): Return boolean value. Check return value
of translate_to_native_sym_flags and bfd_write.
* aout-target.h (final_link_callback): New function.
(MY_bfd_final_link): New function.
* aout-adobe.c (aout_adobe_write_object_contents): Check return
value of aout_32_write_syms.
* hp300hpux.c (MY(write_object_contents)): Likewise.
* i386lynx.c (WRITE_HEADERS): Likewise.
* libaout.h (WRITE_HEADERS): Likewise.
* bout.c: Changed functions to use link_info->callbacks rather
than bfd_error_vector, and link_orders rather than seclets.
* coff-alpha.c: Likewise.
* coff-h8300.c: Likewise.
* coff-h8500.c: Likewise.
* coff-sh.c: Likewise.
* coff-z8k.c: Likewise.
* elf32-hppa.c: Likewise.
* reloc16.c: Likewise.
* coff-alpha.c (alpha_ecoff_get_relocated_section_contents): Look
up _gp in the hash table rather than in outsymbols.
* coff-a29k.c (a29k_reloc): Pass errors back in new error_message
argument rather than printing them.
* coffcode.h (bfd_coff_reloc16_extra_cases): Take link_info and
link_order arguments rather than seclet. Changed all uses and
definitions.
(bfd_coff_reloc16_estimate): Pass link_info arguments. Changed
all uses and definitions.
* libcoff.h: Rebuilt.
* ecoff.c (ecoff_get_extr): If symbol is defined by linker, but
not by ECOFF, make it scAbs.
(ecoff_bfd_final_link): Renamed from ecoff_bfd_seclet_link and
rewritten.
* elf32-mips.c (mips_elf_final_link): Renamed from
mips_elf_seclet_link and rewritten.
* elf32-hppa.c (elf32_hppa_stub_description): Added link_info
field.
(new_stub, add_stub_by_name, hppa_elf_build_arg_reloc_stub,
hppa_elf_build_long_branch_stub, hppa_look_for_stubs_in_section):
Added link_info arguments. Changed all callers.
* elfcode.h (elf_slurp_symbol_table): Don't quit if outsymbols is
not NULL.
* oasys.c (oasys_write_sections): Return boolean value rather than
using bfd_error_vector.
(oasys_write_object_contents): Check return value of
oasys_write_sections.
* hosts/std-host.h: Don't declare qsort or strtol.
* Makefile.in: Rebuild dependencies.
(BFD_LIBS): Removed seclet.o. Added hash.o and linker.o.
(CFILES): Removed seclet.c. Added hash.c and linker.c.
(HFILES): Removed seclet.h. Added genlink.h.
auxiliary headers.
(bfd_som_attach_aux_hdr): New function.
* som.h (struct somdata): Add fields for attaching version and
copyright headers. Add accessor macros.
definitions for old versions of HPUX which fail to define them.
(som_hppa_howto_talbe): Add R_DLT_REL, R_AUX_UNWIND, and R_SEC_STMT
now that they're safe. Delete bogus R_STATEMENT relocations.
extra R_DATA_OVERRIDE.
(hppa_som_gen_reloc_type): Generate a relocation for the rounding
mode selector if needed.
(som_write_fixups): Handle requests for a change in the default
rounding mode. Rounding modes do not consume input bytes, but
are just markers much like R_ENTRY and R_EXIT.
(ecoff_mkobject_hook): Set SEC_SHARED_LIBRARY for the .reginfo
section so that the linker ignores it.
* ecofflink.c: Added various casts for 32/64 bit cross targeting.
(ecoff_add_bytes): Changed need argument to size_t.
(bfd_ecoff_debug_link_other): Check return value of
ecoff_add_string.
(nlm_backend_data, nlm_alpha_backend_data): New accessor macros.
(struct nlm_backend_data): New field no_uninitialized_data.
(nlm_no_uninitialized_data): New accessor macro.
* nlmcode.h (nlm_compute_section_file_positions): Handle
no_uninitialized_data.
(nlm_external_reloc_compare): Sort relocs by address for a
particular symbol, to make the sort more stable.
(nlm_write_object_contents): Cast the arguments to qsort. Get the
value of a debugging symbol the same way we get the value of a
normal symbol.
* nlm32-alpha.c: Various changes. Write out GP and .lita relocs.
Set no_uninitialized_data to true.
* nlm32-i386.c (nlm32_i386_backend), nlm32-sparc.c
(nlm32_sparc_backend): Set no_uninitialized_data field false.
* nlmswap.h (nlm_swap_fixed_header_out): Zero out destination
before filling it in.
routines.
* ecoff.c (ecoff_clear_output_flags, ecoff_rel, ecoff_dump_seclet,
ecoff_add_string, ecoff_get_debug): Removed. Functionality now in
ecofflink.c.
(ecoff_get_extr, ecoff_set_index): New functions.
(ecoff_slurp_symbolic_info): Don't save raw_size.
(ecoff_bfd_seclet_link): Rewrote to use ecofflink.c functions.
(ecoff_compute_section_file_positions): Don't set EXEC_P just
because there is a start address.
(ecoff_write_object_contents): Handle external symbols here. Use
ecofflink.c functions to write out debugging information.
* elf32-mips.c (mips_elf_read_ecoff_info, mips_elf_get_extr,
mips_elf_set_index): New functions.
(mips_elf_seclet_link): Discard empty sections, the .options
section and .gptab sections. Handle linking .mdebug section.
* libecoff.h (ecoff_data_type): Removed raw_size and ifdbase.
* libelf.h (elf_symbol_type): Added mips_extr to tc_data union.
* bfd-in.h: Added prototypes for routines in ecofflink.c (some are
called by gas, so they are public).
* bfd-in2.h: Rebuilt.
* Makefile.in (BFD_LIBS): Added ecofflink.o.
(CFILES): Added ecofflink.c.
(ecofflink.o): New target. Rebuilt dependencies.
* bfd/config/delta88.mh (HDEPFILES): Defined to be ptrace-core.o.
* bfd/ptrace-core.c: New file for dealing with core files with
start with the ptrace_user structure found on BCS compliant systems.
* bfd/targets.c (ptrace_core_vec): New vector.
SHT_NOBITS sections.
(map_program_segments): Don't leave the loop after the first
SHT_NOBITS section.
(assign_file_positions_except_relocs): Only force sh_offset and
sh_addr to match modulo maxpagesize for a section which is not
SHT_NOBITS. Changed the method used to force page alignment after
a SHT_NOBITS section to only do it for the last such consecutive
section, and to really force page alignment.
(struct ecoff_backend_data): Move external debugging information
fields into a single field pointing to an ecoff_debug_swap
structure.
(ecoff_data_type): Move debugging information fields into a single
field pointing to an ecoff_debug_info structure.
* coff-alpha.c, coff-mips.c, ecoff.c: Corresponding changes.
* i386lynx.c (swap_std_reloc_in, swap_ext_reloc_in): Ignore
garbage bits appearing in the upper end of symbolnums.
* config/sparc-lynx.mt (TDEFINES): Add -DFPRINTF_ALREADY_DECLARED.
and ".bss" sections.
(setup_sections): Do not set SEC_HAS_CONTENTS if a section's size
is zero. Recognize BSS type sections and turn off SEC_LOAD and
SEC_DATA (so binutils/size works). Set the correct value for
a section's _raw_size.
(som_slurp_symbol_table): Program entry points, and millicode are
also functions. Mark them as such. Also mark L$* symbols as
debugging symbols.
the last four multibyte relocations emitted.
(enum pa_symbol_type): Type to fully describe the symbol types
associated with .import/.export assembler directives.
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.
(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.
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.
* 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.
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.
* 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.
references.
(nlm_swap_auxiliary_headers_{in,out}): The copyright length is
only one byte.
(nlm_get_symtab_upper_bound): Include debugging symbols in symbol
count.
(nlm_slurp_symbol_table): Make symlength unsigned. Read debugging
symbols as BFD local symbols.
(nlm_write_object_contents): Don't bother writing out exported
symbols more than once; they now appear in the symbol table more
than once (with and without a prefix) if necessary. Set offset
values to be non-zero as NLMLINK does.
(bfd_shdr_from_section): Ditto.
(write_relocs): Don't change section contents for addend.
(elf_locate_sh): Return type is now always elf_internal_shdr, since the other
types were really aliases for this type anyways. Don't compile this function,
since it is static and doesn't appear to be used in this file.
(sym_is_global): Return non-zero for weak symbols. Abort if sec ptr is null.
(swap_out_syms): Reorder tests so function symbols can be weak.
(elf_slurp_symbol_table): Don't use BSF_EXPORT.
(elf_slurp_reloca_table): Make RELOC_PROCESSING section smaller by
extracting out some common code. Abort if BFD section symbol has null name.
(elf_slurp_reloc_table): Translate ELF section symbols into BFD section
symbols. Don't read section contents to fill in addend field.
* Merged from OSF:
Tue Jun 15 14:38:32 1993 Michael Meissner (meissner@osf.org)
* libelf.h (struct Elf_Sym_Extra): New structure to contain ELF
specific information for a symbol. Put in elf_sym_num, which
gives the external symbol number in the elf object file, since
local symbols must come before global symbols.
(elf_sym_extra): New macro.
(elf_symtab_map): Delete, in favor of using Elf_Sym_Extra.
* elfcode.h (elf_map_symbols): Use Elf_Sym_Extra to map internal
symbol number to external number. Store the address of the
Elf_Sym_Extra field for the symbol in the udata field.
(elf_write_object_contents): Use Elf_Sym_Extra to map out symbols.
Sun Jun 20 16:30:11 1993 Michael Meissner (meissner@osf.org)
* elfcode.h (elf_obj_tdata): Add field to count the size of the
array of pointers to section symbols.
(elf_map_symbols): Bump the max index of the section symbols so
that we don't overwrite memory. Store the max index into the
elf_obj_tdata field.
Sat Jun 19 10:12:27 1993 Michael Meissner (meissner@osf.org)
* elfcode.h (elf_obj_tdata): Add pointer to an array of pointers
to the section symbols we created. Remove unused field internal_syms.
(elf_map_symbols): Fill in array of pointers to section symbols. Only create
section symbols for sections that have SEC_ALLOC set, and have non-zero size.
(elf_symbol_from_bfd_symbol): If udata is NULL, and this is a section symbol,
look up the section in the list of section symbols, and set the udata pointer
appropriately. Otherwise, if udata is still NULL, fail an assertion, and use
0, instead of dropping core.
from start of code segment, not start of file.
* config/i386-nlm.mt (DEFAULT_VECTOR): It's nlm32_i386_vec, not
bfd_nlm32_i386_vec.
* configure.in (SELECT_VECS switch): Likewise.
alpha_ecoff_swap_reloc_{in,out}, alpha_bfd_reloc_type_lookup):
Read and write Alpha relocs. Can't process them yet.
* ecoff.c (ecoff_slurp_reloc_table): Recognize new reloc sections.
If the section does not already exist, create it.
finish_reloc fields.
* ecoff.c: Move MIPS reloc support from here...
* coff-mips.c: to here.
* ecoff.c (ecoff_set_symbol_info): Get constructor reloc howto
from backend.
(ecoff_slurp_reloc_table): Removed MIPS specific stuff. Call
finish_reloc backend function.
(ecoff_write_object_contents): Removed MIPS specific assertions.
* coff-mips.c (mips_finish_reloc): New function.
(mips_ecoff_backend_data): Fill in new fields.
* coff-alpha.c (alpha_ecoff_backend_data): Use NULL for new
fields.
* targets.c: Added extern for ecoffalpha_little_vec.
Thu Aug 12 10:32:47 1993 David J. Mackenzie (djm@thepub.cygnus.com)
* config/u68k-coff.mt: Fix typo, DEFAULT_TARGET for
DEFAULT_VECTOR.
* config/h8300-coff.mt, h8500-coff.mt, sh-coff.mt, st2000.mt,
z8k-coff.mt (DEFAULT_VECTOR): Define. Don't explicitly add
S-records via SELECT_VECS.
* targets.c (target_vector), Makefile.in (BFD_LIBS): Always
support S-records, for convenience.
* config.bfd: New file, broken out of configure.in.
* configure.in: Use it, and use standard target names for
--with-targets, replacing --with-bfd-targets.
section before setting output_has_begun.
(nlm_set_section_contents): Remove argument names from
mangle_relocs_func prototype.
(nlm_write_object_contents): Remove shadowing local variable.
Don't write out debugging symbols if debugInfoOffset is -1. Add
the codeImageOffset to the start, exit, and check procedure
offsets.
* nlm32-i386.c (nlm_i386_write_reloc, nlm_i386_mangle_relocs):
Don't check partial_inplace field; its value is irrelevant.
* configure.host (i[34]86-*-sco*): Use i386sco rather than i386v.
* config/i386-sco.mt (TDEFINES): Removed.
* config/i386sco.mh: New file to use sco-core.
* hosts/i386sco.h: New file; just includes hosts/i386v.h.
Not needed for gdb 4.10.
(nlm_machine): New accessor macro.
* nlm.c (nlm_mkobject): Set architecture and machine from backend
information.
* nlm32-i386.c (nlm32_i386_backend): Initialize new mach field.
does and to watch out for side effects. Add FIXME for memory leaks.
Fix comment about checking for matching byte order. Preserve
pointer to old tdata (if any), and restore it if we don't match
file with target vector. If we are going to use goto's, use them
consistently and maintainably.
* nlmcode.h (nlm_object_p): Expand comments about leaked memory
to note that the problem is even more serious than just leaked
memory. Replace goto with more traditional return.
for 32 bits nor for 64.
Tue Jun 15 14:38:32 1993 Michael Meissner (meissner@osf.org)
* libelf.h (elf_hash): Change declaration to bfd_elf_hash, since
that is what is in elf.c.
of nlm_slurp_symbol_table as boolean, not pointer.
* nlmcode.h (nlm_canonicalize_reloc): Test return value
of nlm_slurp_reloc_fixups as boolean, not pointer.
(nlm_mangle_relocs_func): New macro.
* nlm32-i386.c (nlm_i386_write_reloc): Rewrote correctly.
(nlm_i386_mangle_relocs): New function.
* nlmcode.h (nlm_compute_section_file_positions): Move all common
symbols into the .bss section.
(nlm_set_section_contents): Call the mangle_relocs function.
(nlm_write_object_contents): Treat a reloc against any defined
symbol as an internal reloc. Fix bug in external reloc counting.
Get the offset and debugging type right for .bss symbols. Only
output debugging symbols for defined symbols.
using printf.
* coff-z8k.c (rtype2howto): Likewise.
* coffcode.h (dummy_reloc16_extra_cases): Likewise.
* elf32-i386.c (TRACE): Likewise.
* hp300hpux.c (convert_sym_type, swap_std_reloc_in): Likewise.
* rs6000-core.c (rs6000coff_get_section_contents): Likewise.
* coffgen.c (coff_print_symbol): Do an fprintf to the file
argument rather than using printf.
objdump -r.
* coffswap.h: Added macros used when accessing several fields;
default is the same as before.
(coff_swap_aouthdr_{in,out}): Handle the Alpha ECOFF fields.
* coff-alpha.c: Defined macros to use the right sizes in
coffswap.h.
* libecoff.h: Backend information is now in target vector, not
BFD. Start of backend information is COFF backend information.
* coff-alpha.c, coff-mips.c: Changed accordingly.
* ecoff.c (ecoff_mkobject): New function.
(ARMAP_START): Changed into backend information, since Alpha uses
a different name.
(ecoff_slurp_armap): Don't overlay archive header.
* bfd.c: Include libcoff.h.
* ecoffswap.h: New file for ECOFF swapping functions which differ
only slightly for different targets.
* libecoff.h: Added prototypes for ecoff.c functions.
(ecoff_backend_data): New structure.
(ecoff_tdata): Added backend_data field. Changed external data
pointers to be PTR rather than to a particular struct.
(ecoff_symbol_struct): Moved in from coff-mips.c.
* coff-alpha.c, coff-mips.c: Moved common functions into ecoff.c.
Added ECOFF backend structures. Include ecoffswap.h.
* coff-msym.c: Removed; superseded by ecoffswap.h.
* bfd.c: Include coff/internal.h.
* Makefile.in (BFD_LIBS): Removed coff-mips.o and coff-msym.o.
Added ecoff.o.
(BFD64_BACKENDS): Added coff-alpha.o.
(CFILES): Removed coff-msym.c. Added ecoff.c.
(bfd.o): Added dependency on $(INCDIR)/coff/sym.h.
(coff-mips.o): Added dependency on ecoffswap.h and coff/ecoff.h.
(ecoff.o, coff-alpha.o): New targets.
(coff-msym.o): Removed target.
* nlm{32,64}-gen.c (JUMP_TABLE_INIT): New macro that works with
older cpp's, that don't do additional replacement on the JUMP_TABLE
macro's argument.
* nlm-target.h (JUMP_TABLE_INIT): Use new macro in place of
JUMP_TABLE macro.
* nlm-target.h: New file, merged from nlm{32,64}-target.h
* libnlm.h (NLM_ARCH_SIZE): Define to ARCH_SIZE.
* nlm.c (ARCH_SIZE): Remove define to zero.
* nlm32-gen.c (ARCH_SIZE): Define to 32.
* nlm32-gen.c (JUMP_TABLE_PREFIX): Define to nlm32.
* nlm{32,64}-gen.c (nlm-target.h): Include.
* targets.c, libnlm.h, nlm.c, nlm{32,64}-gen.c, nlm{32,64}.c,
nlmcode.h: Convert prefixes from bfd_nlm<size> to just
nlm<size>, and use macros select size.
* bfd.c (struct _bfd): Renamed hppa_core_data field to
hpux_core_data.
* bfd-in2.h: Updated.
* hppa.c (make_bfd_asection, hppa_core_file_p,
hppa_core_file_failing_command, hppa_core_file_failing_signal,
hppa_core_file_matches_executable_p): Moved into hpux-core.c.
Removed from target vector.
* libhppa.h (struct hppa_core_struct and accessor macros): Moved
into hpux-core.c.
* targets.c: If HPUX_CORE is defined, add hpux_core_vec to
target list.
* config/hp300.mh (HDEFINES): Set to -DHPUX_CORE.
(HDEPFILES): Set to hpux-core.o.
* config/hppabsd.mh, config/hppahpux.mh: Likewise.
* hosts/hp300.h (HOST_HP300HPUX): Define.
* Makefile.in (OPTIONAL_BACKENDS): Added sco-core.o,
aix386-core.o, hpux-core.o.
(sco-core.o, aix386-core.o, hpux-core.o): New dependencies.
various flavours of overflow checking.
(srtuct reloc_howto_struct): Changed complain_on_overflow field
from boolean to emum complain_overflow. Removed obsolete absolute
field.
(HOWTO): Removed absolute argument.
(bfd_perform_relocation): Do overflow checking on all types of
fields.
* bfd-in2.h: Updated accordingly.
* all targets: Updated initialization of reloc howto tables.
Deleted `thunk' structure, merged into tdata, duplicate data eliminated.
Rearranged functions, grouping by function.
Broke up many functions in elfcode.h, re-ordered many parts of file writing
to handle unpredictable state of section relocation table as provided by
various applications.
Still needs cleanup: Merge functions back together, split out data structure
with only data that is used only when writing out object file.
* elf.c (bfd_elf_generic_reloc): New function, taken from coff-mips.c.
* elf32-sparc.c (elf_sparc_howto_table): Use it, to work around
bfd_perform_relocation lossage.
* aoutf1.h, libaout.h: Add M_386_DYNIX.
* trad-core.c (TRAD_CORE_USER_OFFSET, TRAD_CORE_STACK_FILEPOS):
New macros; use it if defined.
* config/symmetry.mh, hosts/symmetry.h: New files.
* trad-core.c: Don't include <sys/file.h>.
* i386linux.h: Include <sys/file.h>.
* coff-m68k-un.c: new file to handle names with underscores on
svr3 machines.
* coff-m68k.c (m68k_rtype2howto): added #ifdef ONLY_DECLARE_RELOCS
to not duplicate the function in the executable.
(TARGET_SYM, TARGET_NAME, NAMES_HAVE_UNDERSCORE): new macros needed
by coff-m68k-un.c.
* coffcode.h (MC68KBCSMAGIC): case added.
* targets.c: Add m68kcoffun_vec.
* configure.host: added support for Bull dpx/2.
* config/dpx2.mh, hosts/dpx2.h: new files.
* Makefile.in: added target coff-m68k-un.
argument. Just let an indirect symbol point to the next symbol
without forcing the next symbol to be undefined. Changed all
callers.
* hp300hpux.c (slurp_symbol_table): Changed call to
translate_from_native_sym_flags.
* targets.c: Added hp300hpux_vec.
* Makefile.in (hp300hpux.o): Added dependencies.
Use unsigned hash values for better hashing.
(hash): Hash in the string length for long strings.
* aoutx.h (compare): Replace 3 if's with a subtraction.
(translate_to_native_sym_flags, add_to_stringtab): Reorder tests
in decreasing order of success, as an optimization.
(hash): Take a length arg; ignore chars after #25, for speed.
(add_to_stringtab): Pass length to hash.
elf32-{mips,m88k,generic}.c: New files.
targets.c (target_vector): Include bfd_elf32_{mips,m88k,generic}_vec.
elfcode.h (elf_object_p): Match elf32-generic for all machines which
don't match a different target.
variants from the BFD universe. Leave the 64-bit types for now,
since they are in flux.
* aoutx.h, hp300hpux.c: Eliminate needless (int32_type) casts.
* libaout.h (GET_SWORD): Convert (int32_type) to (int).
* ieee.c: Convert uint8e_type => unsigned char.
* oasys.c: Extensive changes to eliminate obsolete types.
These depend on changes in ../include/oasys.h as well.
(ecoff_write_object_contents): If not D_PAGED, don't add the
section headers to text_size. If not D_PAGED, set the magic
number to OMAGIC rather than ZMAGIC. If creating a D_PAGED
executable, the executable must fully occupy an even number of
pages.
(ecoff_set_symbol_info, make_bfd_asection, ecoff_little_vec,
ecoff_big_vec): Consistently set section alignment power to 4,
since ECOFF sections should be multiples of 16 bytes.
(ecoff_little_vec, ecoff_big_vec): Added D_PAGED to object_flags.
Made ar_pad_char and ar_max_namelen agree for both.
casts to work on machine where sizeof(long) != sizeof(int) !=
sizeof(char *).
* coffgen.c (coff_get_normalized_symtab): Ditto.
* cpu-h8300.c coff-h8300.c: Support for H8/300-H.