1999-12-29  Richard Henderson  <rth@cygnus.com>

	* elflink.h (bfd_elf,size_dynamic_sections): Don't export all
	if no dynamic sections created.

1999-12-27  Nick Clifton  <nickc@cygnus.com>

	* peicode.h (pe_bfd_object_p): Only define for PE format
	targets.

1999-12-17  Nick Clifton  <nickc@cygnus.com>

	* coff-i386.c (i3coff_object_p): Delete.
	(i386coff_vec): Replace reference to i3coff_object_p with a
	reference to coff_object_p.

	* coff-mcore.c (pe_object_p): Delete.

	* peicode.h (pe_bfd_object_p): New function: Detect the
	presence of a PE format COFF object file.  Also detect and
	warn about the presence of LINK6 format Image Library Format
	object files.

1999-12-16  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c (NUM_ELEM): New macro.
	(NUM_RELOCS): New macro: The number of known ARM relocs.
	(RTYPE2HOWTO): Return NULL if the reloc type is out of range.
	(coff_arm_rtype_to_howto):  Return NULL if the reloc type is out
	of range.
	(bfd_arm_process_before_allocation): Produce a warning message if
	an out of range symbol index is encountered.

1999-12-14  Nick Clifton  <nickc@cygnus.com>

	* elflink.h (is_global_symbol_definition): New Function: Return
	true iff the symbol is being given a global definition in this
	bfd.
	(elf_link_is_defined_archive_symbol): Do not bother processing
	symbols for an archive element that has already been included
	in the link.
	Use is_global_symbol_definition().

1999-12-09  Andrew Cagney  <cagney@cygnus.com>

	* config.bfd: Add support for sparc-*-netbsdelf* and
	sparc-*-netbsdaout*.

1999-12-13  Nick Clifton  <nickc@cygnus.com>

	* elflink.h (elf_link_is_defined_archive_symbol): Check to see
	if the symbol is in the common section.

1999-12-10  Nick Clifton  <nickc@cygnus.com>

	* elflink.h (elf_link_is_defined_archive_symbol): New
	function: Decide if a symbol, in an archive map is there
	because it is defined in the archive element, or because it is
	just another common declaration of it.
	(elf_link_add_archive_symbols): Use
	elf_link_is_defined_archive_symbol to decide if an archive
	element contain a reference to a common symbol should be
	linked in or not.

1999-12-10  Nick Clifton  <nickc@cygnus.com>

	* elflink.h: Revert previous patch.
	* targets.c: Revert previous patch.
	* libbfd-in2.h: Revert previous patch.
	* libbfd.h: Revert previous patch.
	* elfxx-target.h: Revert previous patch.
	* archive.c: Revert previous patch.
	* aout-target.h: Revert previous patch.
	* aout-tic30.h: Revert previous patch.
	* bfd.c: Revert previous patch.
	* coff-alpha.c: Revert previous patch.
	* coff-rs6000.c: Revert previous patch.
	* elf64-mips.c: Revert previous patch.
	* ieee.c: Revert previous patch.
	* libecoff.h: Revert previous patch.
	* oasys.c: Revert previous patch.
	* som.c: Revert previous patch.
	* vms.c: Revert previous patch.

1999-12-09  Nick Clifton  <nickc@cygnus.com>

	* elflink.h (elf_link_add_archive_symbols): Add an archive
	element even if contains a symbol which is currently only
	considered to be a common.

	* targets.c (struct bfd_target): Add new field
	_bfd_allow_commons_in_armap.
	* bfd-in2.h:Regenerate.

	* libbfd-in2.h (_bfd_noarchive_allow_commons_in_armap):
	Define.
	 (_bfd_archive_bsd_allow_commons_in_armap): Define.
	* libbfd.h: Regenerate.

	* elfxx-target.h: If using COFF archive map, override
	definition of allow_commons_in_armap and replace with
	bfd_false.

	* archive.c (bfd_compute_and_write_armap): Do not place common
	symbols into the archive map unless _bfd_allow_commons_in_armap
	returns true.

	* aout-target.h (MY_allow_commons_in_armap): Define.
	* aout-tic30.h (MY_allow_commons_in_armap): Define.
	* bfd.c (bfd_allow_commons_in_armap): Define.
	* coff-alpha.h (alpha_ecoff_allow_commons_in_armap): Define.
	* coff-rs6000.h (xcoff_allow_commons_in_armap): Define.
	* elf64-mips.c (bfd_elf64_allow_commons_in_armap): Define.
	* ieee.c (ieee_ecoff_allow_commons_in_armap): Define.
	* libecoff.h (_bfd_ecoff_allow_commons_in_armap): Define.
	* oasys.c (oasys_allow_commons_in_armap): Define.
	* som.c (som_allow_commons_in_armap): Define.
	* vms.c (vms_allow_commons_in_armap): Define.

1999-12-07  Jim Blandy  <jimb@cygnus.com>

	Add support for SSE registers in ELF core files.
	* elf.c (elfcore_make_note_pseudosection): New function.
	(elfcore_grok_prfpreg): Use it.
	(elfcore_grok_prxfpreg): New function.
	(elfcore_grok_note): Recognize Linux NT_PRXFPREG notes.

1999-12-03  Ian Lance Taylor  <ian@zembu.com>

	* elf32-mips.c (mips_elf_calculate_relocation): Divide R_MIPS_PC16
	value by 4 before storing it back in the field.  From
	Koundinya. K <kk@ddeorg.soft.net>.

Tue Nov 30 22:41:14 1999  Jeffrey A Law  (law@cygnus.com)

	* archures.c (bfd_mach_am33): Define.
	* bfd-in2.h: Rebuilt.
	* cpu-m10300.c (bfd_am33_arch): Add to the mn103 architecture list
	* elf-m10300.c (mn10300_elf_relax_section): Handle am33 instructions.
	(compute_function_info): Handle additional registers saved by
	movm on the am33.
	(elf_mn10300_mach): Handle E_MN10300_MACH_AM33.
	(_bfd_mn10300_elf_final_write_processing): Handle bfd_mach_am33.

1999-11-29  Jim Blandy  <jimb@cygnus.com>

	* elf.c (bfd_get_elf_phdrs, bfd_get_elf_phdr_upper_bound): New
	functions.
	* bfd-in2.h (bfd_get_elf_phdrs, bfd_get_elf_phdr_upper_bound): New
	declarations.

1999-11-27  Michael Meissner  <meissner@cygnus.com>

	* reloc.c (BFD_RELOC_ALPHA_USER_LITERAL): New relocation for
	internal use within gas for alpha explicit relocations.
	(BFD_RELOC_ALPHA_USER_LITUSE_BASE): Ditto.
	(BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF): Ditto.
	(BFD_RELOC_ALPHA_USER_LITUSE_JSR): Ditto.
	(BFD_RELOC_ALPHA_USER_GPDISP): Ditto.
	(BFD_RELOC_ALPHA_USER_GPRELHIGH): Ditto.
	(BFD_RELOC_ALPHA_USER_GPRELLOW): Ditto.

	* elf64-alpha.c (elf64_alpha_reloc_map): Add mappings for
	BFD_RELOC_ALPHA_USER_*.

	* bfd-in2.h: Regenerate.
	* libbfd.h: Regenerate.

1999-11-26  Fred Fish  <fnf@cygnus.com>

	* elf.c (elfcore_read_notes): Add prototype for static function.
	(_bfd_elf_make_section_from_phdr): Renamed from bfd_section_from_phdr.
	(bfd_section_from_phdr): Replacement function that calls
	_bfd_elf_make_section_from_phdr for generic segment types and
	backend fucntion pointed to by elf_backend_section_from_phdr for
	backend specific segment types.
	(_bfd_elfcore_section_from_phdr): Remove call to elfcore_read_notes,
	now called by _bfd_elf_make_section_from_phdr.  Note that this func
	is now just a stub between the caller and bfd_section_from_phdr.

	* elf-bfd.h (struct elf_backend_data): Add new function pointer
	elf_backend_section_from_phdr.
	(elf_backend_section_from_phdr): Add prototype.

	* elfxx-target.h (elf_backend_section_from_phdr): Define default.
	(elfNN_bed): Add elf_backend_section_from_phdr.

1999-11-25  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c (bfd_arm_get_bfd_for_interworking):  Add
	SEC_CODE and SEC_READONLY flags to glue sections.

	* elf32-arm.h (bfd_elf32_arm_get_bfd_for_interworking): Add
	SEC_CODE and SEC_READONLY flags to glue sections.

1999-11-20  Nick Clifton  <nickc@cygnus.com>

	* coff-mcore.c (coff_mcore_relocate_section): Fix typo in previous
	delta.

1999-11-19  Catherine Moore  <clm@cygnus.com>

	* elf32-m68k.c (elf_cpu32_plt0_entry): Fix encoding.
	(elf_cpu32_plt_entry): Likewise.

1999-11-18  Nick Clifton  <nickc@cygnus.com>

	* coff-mcore.c (coff_mcore_rtype_to_howto): Special case handling
	for RVA relocs.
	(coff_mcore_relocate_section): Initialise addend to 0.
	Special case processing of RVA reloc.

1999-11-17  Richard Henderson  <rth@cygnus.com>

	* elf-bfd.h (struct elf_backend_data): Reorder collect and
	type_change_ok; add sign_extend_vma.
	* elf32-mips.c (elf_backend_sign_extend_vma): Define.
	* elfcode.h (elf_swap_symbol_in): Mind be->sign_extend_vma.
	(elf_swap_shdr_in, elf_swap_phdr_in): Likewise.
	* elfxx-target.h (elf_backend_sign_extend_vma): Default.
	(elfNN_bed): Follow struture changes.

1999-11-09  Ian Lance Taylor  <ian@zembu.com>

	* libbfd.c (bfd_read): Check result of read against desired result
	using !=, not <.
	(_bfd_generic_get_section_contents): Set bfd_error if the seek is
	invalid compared to the section size.

	* ieee.c (ieee_slurp_debug): Get the length of the debug
	information right if there is no data part.

Tue Nov  2 01:44:41 1999  Jeffrey A Law  (law@cygnus.com)

	* som.c (som_fixup_formats): Improve handling of R_AUX_UNWIND,
	R_LINETAB, R_LINETAB_ESC, and R_COMMENT.

1999-10-28  Ian Lance Taylor  <ian@zembu.com>

	* elflink.h (elf_bfd_final_link): Make last_local signed.

1999-10-27  Ian Lance Taylor  <ian@zembu.com>

	* stabs.c (_bfd_link_section_stabs): Make sure .stabstr section
	starts with a zero.

Sat Oct 23 17:36:12 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* archures.c: Add definitions bfd_mach_d10v, bfd_mach_d10v_ts2 and
	bfd_mach_d10v_ts3.
	* cpu-d10v.c (d10v_ts3_info, d10v_ts2_info): Add.
	* bfd-in2.h: Regenerate.

1999-10-15  Andrew Haley  <aph@cygnus.com>

	* dwarf1.c (parse_die): Fail to parse a die if its length is zero.

Sun Oct 17 17:19:00 1999  Jeffrey A Law  (law@cygnus.com)

	* libhppa.h (bfd_hppa_insn2fmt): Change to return an int.

1999-10-08  Ian Lance Taylor  <ian@zembu.com>

	* elflink.h (elf_merge_symbol): When overriding a weak symbol with
	a defined symbol in a shared library, clear the DEF_DYNAMIC flag
	too.

Fri Oct  8 13:03:45 1999  Geoffrey Keating  <geoffk@cygnus.com>

	* elf32-mips.c (mips_elf_calculate_relocation): R_MIPS_LITERAL
	relocs also need the GP value.
	(_bfd_mips_elf_relocate_section): Handle unpaired LO16 relocs
	properly.  Handle sign-extension for R_MIPS_64 correctly.  Correct
	the GP value for R_MIPS_LITERAL relocs too.  Handle
	R_MIPS_64 relocs properly on big-endian MIPS.
	(mips_elf_sign_extend): Behave properly with 'long long'.
	(mips_elf_highest): Correct typo.

Mon Oct  4 17:49:45 1999  Nick Clifton  <nickc@cygnus.com>

	* cpu-m32r.c (arch_info_struct): New static global.
	(bfd_m32r_arch): Refer to it.
	* elf32-m32r.c (m32r_elf_object_p): Recognize E_M32RX_ARCH.
	(m32r_elf_print_private_bfd_data): Ditto.
	(m32r_elf_final_write_processing): Handle bfd_mach_m32rx.
	* archures.c (bfd_mach_m32rx): Define it.
	* bfd-in2.h: Rebuild.

1999-09-28  Fred Fish  <fnf@cygnus.com>

	* targets.c (cisco_core_vec): Replaced with two new vecs ...
	(cisco_core_big_vec): Add new bigendian vec.
	(cisco_core_little_vec): Add new little endian vec.

	* cisco-core.c (CRASH_INFO): Fixed offset replaced with ...
	(crash_info_locs): Add array of possible offsets.
	(MASK_ADDR): Mask to apply to crash info offset.
	(crashinfo_external): Add textbase, database, bssbase and
	turn into a typedef.
	(cisco_core_file_validate): Renamed from cisco_core_file_p.
	Many small changes to account for additional hardware versions.
	Pick a reasonable size for ".reg" section.  Add a ".crash"
	section to allow access to crashinfo_external struct.
	(cisco_core_file_p): New version of this function that
	iterates over crash_info_locs, calling cisco_core_file_validate.
	(cisco_core_vec): Old big endian only vec replaced with ...
	(cisco_core_big_vec): Add big endian version.
	(cisco_core_little_vec): Add little endian version.

	* configure.in (cisco_core_vec): Split to two new vectors ...
	(cisco_core_big_vec): New target vector.
	(cisco_core_little_vec): New target vector.
	* configure: Regenerate.
	* config.bfd (targ): For m68*-*-aout* targ, change cisco_core_vec
	to cisco_core_big_vec in targ_selvecs.

1999-09-28  Geoffrey Keating  <geoffk@cygnus.com>

	* elf32-mips.c (mips_elf_relocate_hi16): Unused, delete.
	(mips_elf_relocate_got_local): Unused, delete.
	(mips_elf_relocate_global_got): Unused, delete.

1999-09-24  Fred Fish  <fnf@cygnus.com>

	* elf.c (bfd_section_from_phdr): Add typename variable.  Use p_type
	to initialize it to something meaningful.  Then use it to generate
	more useful segment names.

Sun Sep 19 12:16:47 1999  Jeffrey A Law  (law@cygnus.com)

	* som.c (NO_PCREL_MODES): Define if the system does not define
	R_SHORT_PCREL_MODE.
	(hppa_som_gen_reloc_type): Handle both short and long pcrel branches.
	(som_write_fixups): Eliminate redundant pcrel mode relocs.  Handle
	R_LONG_PCREL_MODE and R_SHORT_PCREL_MODE
	* libhppa.h (dis_assemble_22): New function.
	(bfd_hppa_insn2fmt): Handle long branch.

	* libhppa.h (bfd_hppa_insn2fmt): Decode and handle formats found
	in PA2.0.

1999-09-17  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* coff-i386.c (coff_i386_reloc_type_lookup): Support BFD_RELOC_16,
	BFD_RELOC_16_PCREL, BFD_RELOC_8, BFD_RELOC_8_PCREL relocs.
	(reloc_howto_type howto_table): Tidy comments and whitespace.

1999-09-17  Nick Clifton  <nickc@cygnus.com>

	* elf32-arm.h (bfd_elf32_arm_get_bfd_for_interworking): Undo
	previous delta.  Set sec->gc_mark instead.

Thu Sep 16 11:21:13 1999  Catherine Moore  <clm@cygnus.com>

	* elf32-m68k.c (elf_cpu32_plt0_entry): Use a1 instead of a0.
	(elf_cpu32_plt_entry): Likewise.

Thu Sep 16 10:48:17 1999  Jeffrey A Law  (law@cygnus.com)

	* elf-hppa.h (elf_hppa_final_write_processing): Turn on TRAPNIL.

	* elf-hppa.h (elf_hppa_final_link): If unable to find __gp in the
	symbol table, then just compute a suitable value (but do not
	create a __gp symbol).

	* elf-hppa.h (elf_hppa_relocate_section): Allow undefined
	symbols when building shared libraries.
	(elf_hppa_final_link_relocate): Correct handling of PCREL
	relocations against undefined symbols.

1999-09-16  Nick Clifton  <nickc@cygnus.com>

	* elf32-arm.h (bfd_elf32_arm_get_bfd_for_interworking): Mark
	interworking sections as linker created so that they will not
	be removed by garbage collection.

Wed Sep 15 02:31:57 1999  Jeffrey A Law  (law@cygnus.com)

	* elf-hppa.h (elf_hppa_final_link): Revamp __gp handling.
	(elf_hppa_final_link_relocate): Consistently create an absolute
	address, then subtract out the value of __gp.

1999-09-14  Michael Meissner  <meissner@cygnus.com>

	* configure.in (Canonicalization of target names): Remove adding
	${CONFIG_SHELL} in front of $ac_config_sub, since autoconfig 2.14
	generates $ac_config_sub with a ${CONFIG_SHELL} already.
	* configure: Regenerate.

1999-09-14  Nick Clifton  <nickc@cygnus.com>

	* elf32-m32r.c (ELF_MAXPAGESIZE): Change to 0x1 (at request of
	Mitsubishi).

Mon Sep 13 20:01:47 1999  Jeffrey A Law  (law@cygnus.com)

	* elf-hppa.h (elf_hppa_record_segment_addrs): New function.
	(elf_hppa_final_link): Initialize text_segment_base and
	data_segment_base.
	(elf_hppa_final_link_relocate): Handle SEGREL relocations.

	* elf-hppa.h (elf_hppa_final_link): Remove unused variables.
	(elf_hppa_final_link_relocate): Likewise.
	(elf_hppa_relocate_insn): Likewise.
	(elf_hppa_relocate_section): Initialize HOWTO.

1999-09-13  Donn Terry  <donn@interix.com>

	* coffcode.h (styp_to_sec_flags): Further refinement of COMDAT
	handling to support both GNU and MS objects.

	* coffcode.h (coff_write_object_contents): Don't check reloc_count
	when determining whether to set F_RELFLG.

1999-09-13  Philip Blundell  <pb@nexus.co.uk>

	* elf32-arm.h (elf32_arm_final_link_relocate): Don't range-check
	PC24 relocs if the target is an undefined weak symbol.
	(arm_add_to_rel): Fix compiler warning.
	(elf32_arm_plt0_entry): Correct comments.

1999-09-13  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* elfcode.h (write_relocs): Check for the_bfd NULL when handling
	an absolute symbol in REL relocs.

Sun Sep 12 23:47:58 1999  Jeffrey A Law  (law@cygnus.com)

	* elf-hppa.h (elf_hppa_final_link_relocate): Handle SECREL32.
	Stub SEGREL32.  Return an error for any relocation not handled.

1999-09-12  Ian Lance Taylor  <ian@zembu.com>

	* cofflink.c (coff_link_add_symbols): Look for special MSVC string
	constant symbols, and avoid multiple definition errors on them.

1999-09-12  Donn Terry  <donn@interix.com>

	* libbfd.c (bfd_log2): Rewrite to avoid infinite loop if most
	significant bit is set.

1999-09-11  Ian Lance Taylor  <ian@zembu.com>

	* coff-ppc.c (COFF_SECTION_ALIGNMENT_ENTRIES): Define.

	* elfcode.h (write_relocs): Handle an absolute symbol in REL
	relocs as we do for RELA relocs.

1999-09-11  Donn Terry  <donn@interix.com>

	* libpei.h (_bfd_pei_final_link_postscript): Declare.
	(coff_final_link_postscript): Define.
	* peigen.c (_bfd_pei_swap_aouthdr_out): Don't set value for data
	directory entries here.
	(_bfd_pei_final_link_postscript): New function.

	* peigen.c (_bfd_pei_swap_scnhdr_out): Remove code which sets
	section flags based on the section name.

	* peicode.h (coff_swap_scnhdr_in): If COFF_IMAGE_WITH_PE, the
	get the overflow of the s_nlnno field from the s_nreloc field.
	* peigen.c (_bfd_pei_swap_scnhdr_out): If doing a final link, swap
	the s_nlnno overflow of the .text section into the s_nreloc
	field.

	* peigen.c (add_data_entry): Declare.
	(pei_swap_aouthdr_out): Get image size right.  Set linker version
	more intuitively.
	(pei_swap_scnhdr_out): Test for UNINIT section, not .bss.
	(pe_print_idata): Code cleanup, print more info, get rid of (now)
	extraneous ImageBase.
	(pe_print_edata): Likewise.
	(pe_print_pdata): Likewise.  Print exception entries.
	(pe_print_reloc): Likewise.  Print MIPS_JMPADDR.
	(tbl): Make const, add "UNKNOWN".
	(_bfd_pe_print_private_bfd_data_common): Print timestamp.
	(_bfd_pe_bfd_copy_private_bfd_data_common): Don't copy deleted
	section data directory.
	(_bfd_pe_bfd_copy_private_section_data): Copy pe_flags.

	* libpei.h (_bfd_pe_bfd_get_symbol_info): Declare.
	* peigen.c (_bfd_pe_bfd_get_symbol_info): New function.
	* peicode.h (coff_get_symbol_info): Define.

	* config.bfd (i[3456]86-*-interix*): Set targ_cflags to
	-DSTRICT_PE_FORMAT.
	* coffcode.h (styp_to_sec_flags): Check STRICT_PE_FORMAT rather
	than __INTERIX.
	(coff_classify_symbol): Re-revert 1999-08-08 patch if
	STRICT_PE_FORMAT.

	* libpei.h: New file, broken out of peicode.h.
	* peigen.c: New file, broken out of peicode.h.
	* peicode.h: A bunch of code moved out to libpei.h and peigen.c.
	* configure.in: Add peigen.lo to list of files required for each
	PE target.
	* Makefile.am: Rebuild dependencies.
	(BFD32_BACKENDS): Add peigen.lo.
	(BFD32_BACKENDS_CFILES): Add peigen.c.
	(SOURCE_HFILES): Add libpei.h.
	* configure, Makefile.in: Rebuild.

	* peicode.h (coff_swap_scnhdr_in): Don't check for a special
	section name of _BSS; check IMAGE_SCN_CNT_UNINITIALIZED_DATA
	instead.  Don't clear the s_paddr field for an uninitialized data
	section.

	* coffcode.h (coff_mkobject_hook): Set timestamp field in
	coff_data_type to f_timdat.
	* peicode.h (pe_mkobject_hook): Likewise.

	* peicode.h (coff_swap_filehdr_in): Check the NT executable magic
	number if COFF_IMAGE_WITH_PE.

	* coffcode.h (coff_mkobject_hook): If COFF_WITH_PE, set HAS_DEBUG
	to the reverse of IMAGE_FILE_DEBUG_STRIPPED.
	(coff_write_object_contents): Set IMAGE_FILE_DEBUG_STRIPPED if
	there is no SEC_DEBUGGING section.
	* peicode.h (pe_mkobject_hook): Set HAS_DEBUG to the reverse of
	IMAGE_FILE_DEBUG_STRIPPED.

	* pe-i386.c (COFF_LONG_FILENAMES): Define.
	(COFF_SECTION_ALIGNMENT_ENTRIES): Define.
	* pei-i386.c (COFF_LONG_FILENAMES): Define.
	(COFF_SECTION_ALIGNMENT_ENTRIES): Define.

	* coffswap.h (IMAGE_BASE): Don't define.
	* pei-arm.c (IMAGE_BASE): Don't define.
	* pei-i386.c (IMAGE_BASE): Don't define.
	* pei-mcore.c (IMAGE_BASE): Don't define.
	* pei-ppc.c (IMAGE_BASE): Don't define.

	* cofflink.c (_bfd_coff_link_input_bfd): When writing out a
	symbol, switch on the class when determining whether to modify the
	value.  For PE, don't modify the value of a C_FCN symbol not named
	.bf.

	* libbfd-in.h (_bfd_abort): Declare.
	(abort): Define.
	* bfd.c (_bfd_abort): New function.
	* libbfd.h: Rebuild.

	* coffcode.h (coff_set_alignment_hook): Delete POWERPC_LE_PE
	special handling.

	* cofflink.c (_bfd_coff_link_input_bfd): If a symbol is stripped,
	don't write out the associated line numbers.

	* cofflink.c (_bfd_coff_write_global_sym): Handle section symbol
	aux entries.

	* cofflink.c (coff_link_add_symbols): Don't warn about symbol type
	changes when the base type is unknown.

	* coffgen.c (coff_print_symbol): Fix printing of aux record for
	function symbols.

	* syms.c (BSF_DEBUGGING_RELOC): Define.
	* coffcode.h (coff_slurp_symbol_table): If PE, set BSF_DEBUGGING
	for C_FCN/C_EFCN symbols, and set BSF_DEBUGGING_RELOC for such
	symbols named .bf.
	* coffgen.c (fixup_symbol_value): Relocate a symbol which has
	BSF_DEBUGGING_RELOC set.
	* bfd-in2.h: Rebuild.

1999-09-10  Ian Lance Taylor  <ian@zembu.com>

	* ecoff.c (bfd_debug_section): Update initialization for new
	comdat_info field.
	(_bfd_ecoff_styp_to_sec_flags): Add section parameter.
	* libecoff.h (_bfd_ecoff_styp_to_sec_flags): Update declaration.

1999-09-10  H.J. Lu  <hjl@gnu.org>

	* coff-alpha.c (alpha_ecoff_backend_data): Initialize the new
	_bfd_filnmlen field.
	* coff-mips.c (mips_ecoff_backend_data): Likewise.

Fri Sep 10 00:35:14 1999  Jeffrey A Law  (law@cygnus.com)

	* elf-hppa.h (elf_hppa_final_link_relocate): Create .opd entries
	for FPTR relocs involving local symbols.

	* elf-hppa.h (elf_hppa_final_link_relocate): Get the right
	value for the stub address in a call through a stub.
	Install the value for a local symbol directly into the DLT
	instead of generating a reloc.  Correctly handle FPTR64 relocs.

	* elf-hppa.h (elf_hppa_unmark_useless_dynamic_symbols): New function.
	(elf_hppa_remark_useless_dynamic_symbols): Similarly.
	(elf_hppa_final_link): Call them.

1999-09-10  Ian Lance Taylor  <ian@zembu.com>

	* elflink.h (elf_fix_symbol_flags): Move weakdef handling here...
	(elf_adjust_dynamic_symbol): ...from here.

Wed Sep  8 17:56:11 1999  Jeffrey A Law  (law@cygnus.com)

	* elf-hppa.h (elf_hppa_howto_table); There is no DIR64WR, DIR64DR
	relocation, remove them.  SECREL64->LTOFF16WF.
	(elf_hppa_final_link_relocate): Handle LTOFF* relocations.  Handle
	DIR* relocations.
	(elf_hppa_relocate_insn): Similarly.

	* elf-hppa.h (elf_hppa_final_link_relocate): Handle PLTOFF* relocs.
	(elf_hppa_relocate_insn): Similarly.

	* elf-hppa.h (elf_hppa_final_link_relocate): Handle DPREL* and
	GPREL* relocations.
	(elf_hppa_relocate_insn): Similarly.

	* elf-hppa.h (elf_hppa_link_final_relocate): Fix typos.
	Handle LTOFF_TP* relocs.
	(elf_hppa_relocate_insn): Similarly.

	* elf-hppa.h (elf_hppa_final_link_relocate): Handle PCREL* relocs.
	Consistently deal with addends.  Handle DLTIND14F and DLTREL14F.
	(elf_hppa_relocate_insn): Handle PCREL* relocs.

	* elf-hppa.h (elf_hppa_final_link_relocate): Handle LT_OFF_FPTR*,
	DIR32, DIR64 and FPTR64 relocations.
	(elf_hppa_relocate_insn): Similarly.

	* elf-hppa.h (elf_hppa_final_link): Set the value of __gp to the
	address of the .PARISC.global section.
	(elf_hppa_relocate_section): Lookup and pass the PA64 hash
	table entry elf_hppa_final_link_relocate.  Do not give a warning
	for a reloc against an external symbol if it has a PA64 hash
	table entry.
	(elf_hppa_final_link_relocate): Significantly rework.  Handle
	DLTIND relocations.  Compute the final value of the relocation
	before passing the value of elf_hppa_relocate_insn.
	(elf_hppa_relocate_insn): Revamp to handle just bit tiwiddling
	relocation support.  Handle DLTIND relocation requests just like
	DLTREL relocation requests.  Simplify branch handling.

1999-09-08  Ulrich Drepper  <drepper@cygnus.com>

	* elf-hppa.h (elf_hppa_relocate_section): Catch problems with
	non-allocated section as done in i386 version.
	(elf_hppa_final_link_relocate): Uncomment R_PARISC_14F in switch
	statement since this is no know relocation.

Tue Sep  7 17:25:12 1999  Jeffrey A Law  (law@cygnus.com)

	* elf-hppa.h (elf_hppa_final_link_relocate): Handle DLTREL14F
	relocs.
	(elf_hppa_relocate_insn): Similarly.

	* elf-hppa.h (elf_hppa_final_link_relocate): Handle DLTREL14WR and
	DLTREL14WD relocs.
	(elf_hppa_relocate_insn): Similarly.

	* elf-hppa.h (elf_hppa_final_link_relocate): Handle DLTREL14R and
	DLTREL21L relocs.  Pass the output bfd to elf_hppa_relocate_insn.
	Pass the relocate type rather than the insn format to
	elf_hppa_relocate_insn.
	(elf_hppa_relocate_insn): Make switch dependent on relocation type
	rather than the opcode.  Handle DLTREL21L and DLTREL14R relocs.

1999-09-07  Ian Lance Taylor  <ian@zembu.com>

	* coffcode.h (bfd_coff_backend_data): Add _bfd_filnmlen field.
	(bfd_coff_filnmlen): Define.
	(bfd_coff_std_swap_table): Initialize new field.
	* coffgen.c (coff_fix_symbol_name): Use bfd_coff_filnmlen rather
	than FILNMLEN.
	(coff_write_symbols): Likewise.
	(coff_get_normalized_symtab): Likewise.
	* coff-sh.c (bfd_coff_small_swap_table): Initialize new field.
	* libcoff.h: Rebuild.

1999-09-06  Donn Terry  <donn@interix.com>

	* coffcode.h (sort_by_secaddr): New static function if
	COFF_IMAGE_WITH_PE.
	(coff_compute_section_file_positions): If COFF_IMAGE_WITH_PE, sort
	sections by VMA when assigning target_index values.  Always set
	virt_size.

	* libcoff-in.h (struct pei_section_tdata): Add pe_flags field.
	* coffcode.h (coff_set_alignment_hook) [COFF_WITH_PE version]: Set
	pe_flags field.
	* libcoff.h: Rebuild.

	* coffcode.h (coff_set_custom_section_alignment): Add const to
	declaration to match definition.
	(coff_write_object_contents): Don't set F_AR32W(R)? if
	COFF_WITH_PE.

	* coff-i386.c (in_reloc_p): Add declaration.
	(i386coff_vec): Simplify initialization of
	application_section_flags.

	* coffcode.h (sec_to_styp_flags): Write separate COFF_WITH_PE
	version.  Move COFF_WITH_PE specific code to new version.
	(stype_to_sec_flags): Likewise.  Add section parameter.
	* coffgen.c (make_a_section_from_file): Set target_index before
	calling styp_to_sec_flags.  Pass section to styp_to_sec_flags.
	* libcoff.h: Rebuild.

	* syms.c (stt): Add some PE/PEI section names.
	(bfd_decode_symclass): Return 'w', not 'U', for a weak undefined
	symbol.
	(bfd_symbol_info): Check for 'w'.

	* section.c (struct bfd_comdat_info): Define.
	(asection): Add comdat field.
	(STD_SECTION): Initialize comdat field.
	(bfd_make_section_anyway): Likewise.
	* bfd-in2.h: Rebuild.

1999-09-06  Andreas Schwab  <schwab@suse.de>

	* elflink.h (elf_link_add_object_symbols): Copy NON_GOT_REF flag
	to version symbols.

1999-09-06  Nick Clifton  <nickc@cygnus.com>

	* elflink.h (elf_gc_record_vtentry): Use bfd_zmalloc and
	bfd_realloc instead of calloc and realloc.

1999-09-04  Steve Chamberlain  <sac@pobox.com>

	* cpu-pj.c: New file.
	* elf32-pj.c: New file.
	* config.bfd (pj*): New cpu.
	(pj-*-*, pjl-*-*): New targets.
	* configure.in (bfd_elf32_pj_vec): New target vector.
	(bfd_elf32_pjl_vec): New target vector.
	* archures.c (bfd_arch_pj): Define.
	* elf.c (prep_headers): Handle bfd_arch_pj.
	* reloc.c: Define BFD_RELOC_PJ_* relocations.
	* targets.c (bfd_elf32_pj_vec, bfd_elf32_pjl_vec): Declare and add
	to target vector list.
	* Makefile.am: Rebuild dependencies.
	(ALL_MACHINES): Add cpu-pj.lo.
	(ALL_MACHINES_CFILES): Add cpu-pj.c.
	(BFD32_BACKENDS): Add elf32-pj.lo.
	(BFD32_BACKENDS_CFILES): Add elf32-pj.c.
	* configure, Makefile.in, bfd-in2.h, libbfd.h: Rebuild.

1999-09-04  Ian Lance Taylor  <ian@zembu.com>

	* elf-bfd.h (ELF_LINK_NON_GOT_REF): Define.
	* elflink.h (elf_adjust_dynamic_symbol): Copy REF_REGULAR_NONWEAK
	and NON_GOT_REF from weak defined symbol to real symbol.
	* elf32-i386.c (elf_i386_check_relocs): Set NON_GOT_REF.
	(elf_i386_adjust_dynamic_symbol): If NON_GOT_REF is not set, don't
	create a COPY reloc.
	* elf32-sparc.c (elf32_sparc_check_relocs): Set NON_GOT_REF.
	(elf32_sparc_adjust_dynamic_symbol): If NON_GOT_REF is not set,
	don't create a COPY reloc.

1999-09-03  Ian Lance Taylor  <ian@zembu.com>

	* elflink.h (elf_bfd_final_link): When counting relocations, don't
	count those in sections we are not including in the link.

Thu Sep  2 17:41:20 1999  Jeffrey A Law  (law@cygnus.com)

	* elflink.h (elf_link_add_object_symbols): Work around bogus SH_LINK
	field in hpux11 shared libraries.

1999-09-02  Nick Clifton  <nickc@cygnus.com>

	* elflink.h (elf_gc_record_vtentry): Fix memory leak.

Wed Sep  1 13:34:29 1999  Jeffrey A Law  (law@cygnus.com)

	* elf-hppa.h (elf_hppa_add_symbol_hook): New function.
	(elf_hppa_final_link, elf_hppa_relocate_section): Likewise.
	(elf_hppa_final_link_relocate, elf_hppa_relocate_insn): Likewise.

1999-08-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* elflink.h (record_link_assignment): When possible, keep the
	original type of the symbol.

Mon Aug 30 15:26:48 1999  Jeffrey A Law  (law@cygnus.com)

	* elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): Allow both
	R_PARISC_DIR32 and R_PARISC_DIR64 regardless of how the
	tools were configured.
	* elf32-hppa.h (_bfd_elf32_hppa_gen_reloc_type): Declare.

1999-08-26  Mark Mitchell  <mark@codesourcery.com>

	* elf32-mips.c (_bfd_mips_elf_check_relocs): Don't allocate local
	GOT entries for GOT16 relocations; they're not required.

1999-08-24  Nick Clifton  <nickc@cygnus.com>

	From a patch submitted by Roland McGrath  <roland@baalperazim.frob.com>

	* config.bfd (arm-*-netbsd*): New target.
	* configure.in (armnetbsd_vec): New target vector.
	* configure: Regenerate
	* targets.c (bfd_target_vector): Add &armnetbsd_vec.

	* Makefile.am (BFD32_BACKENDS): Add armnetbsd.lo.
	(ALL_MACHINES_CFILES): Add armnetbsd.c.
	(armnetbsd.lo): New rule with deps.
	* Makefile.in: Regenerate.

	* armnetbsd.c: New file:  Definitions specific to arm-netbsd
	target.

Tue Aug 24 00:25:58 1999  Jeffrey A Law  (law@cygnus.com)

	* som.c (som_slurp_symbol_table): Fix typo in comment.

Fri Aug 20 17:01:23 1999  Jeffrey A Law  (law@cygnus.com)

	* elf-hppa.h (elf_hppa_fake_sections): Compute section indices
	here instead of using elf_section_data...

1999-08-19  Nick Clifton  <nickc@cygnus.com>

	* coff-mcore.c (mcore_emit_base_file_entry): New function:  Emit
	relocations into the base file.
	(coff_mcore_relocate_section): Call mcore_emit_base_file_entry if
	we are building a base file.

1999-08-19  Nick Clifton  <nickc@cygnus.com>

	* elf32-arm.h (arm_add_to_rel): New function.  Add a value to
	a REL style reloc.
	(elf32_arm_relocate_section): Use arm_add_to_rel to increment
	REL relocs when performing a partial relocation.

1999-08-18  Donn Terry  <donn@interix.com>

	* cofflink.c: Move definitions of N_TMASK, et. al., out of
	_bfd_coff_link_input_bfd into top level.

	* coff-i386.c (coff_i386_reloc): Handle R_IMAGEBASE.
	(RTYPE2HOWTO): Return NULL if reloc type is out of range.
	(coff_i386_rtype_to_howto): Likewise.
	* coffcode.h (coff_slurp_symbol_table): Change a -2 to N_DEBUG.
	Completely ignore symbols which are all zero.
	(dummy_reloc16_estimate): Add return 0.
	* cofflink.c (_bfd_coff_link_input_bfd): Rename inner scope
	variable copy to name_copy to avoid shadowing outer scope
	variable.
	* libcoff-in.h (coff_data_type): Change raw_syment_count field
	from unsigned int to unsigned long.  Add timestamp field.
	* libcoff.h: Rebuild.

1999-08-17  H.J. Lu  <hjl@gnu.org>

	* elf32-hppa.c (bfd_elf32_bfd_is_local_label_name): Fix typo in
	macro definition.

1999-08-17  Ian Lance Taylor  <ian@zembu.com>

	* elf32-mips.c (_bfd_mips_elf_add_symbol_hook): Set BSF_DYNAMIC
	for special section symbols.
	* elflink.h (elf_merge_symbol): If we have no old BFD, check
	BSF_DYNAMIC on the section symbol to see whether the old BFD is
	dynamic.

1999-08-15  Mark Mitchell  <mark@codesourcery.com>

	* elf32-mips.c (mips_elf_calculate_relocation): Fix unfortunate
	coincidence of variable names between old and new code.

1999-08-12  Nick Clifton  <nickc@cygnus.com>

	* elf32-arm.h (elf32_arm_to_thumb_stub):  Make 'offset' parameter
	into a bfd_vma and 'addend' parameter a 'bfd_signed_vma'.
	(elf32_thumb_to_arm_stub):  Make 'offset' parameter into a bfd_vma
	and 'addend' parameter a 'bfd_signed_vma'.
	(elf32_arm_final_link_relocate): Do not involve stubs in
	R_ARM_THM_PC22 relocs relative to section symbols, they are long
	jumps, not function calls.

1999-08-11  Robin Farine <advanc@dial.eunet.ch>

	* elf32-arm.h (elf32_arm_final_link_relocate): Check for overflow
	in R_ARM_PC24 relocs.

Tue Aug 10 12:48:09 1999  Jeffrey A Law  (law@cygnus.com)

	* elf-hppa.h (elf_hppa_fake_sections): New function.
	* elf32-hppa.c (elf_backend_fake_sections): Define.

	* elf-hppa.h (elf_hppa_final_write_processing): Update for
	recent changes to the arch_info structure.

	* elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): Handle
	R_HPPA_SEGBASE and R_HPPA_SEGREL32.
	* cpu-hppa.c (bfd_hppa20w_arch): New entry in architecture info
	list.

Tue Aug 10 00:34:29 1999  Mark P. Mitchell  <mark@codesourcery.com>
	                  Ralf Baechle <ralf@uni-koblenz.de>

	* elf32-mips.c (_bfd_mips_elf_size_dynamic_sections): Always
	output DT_MIPS_GOTSYM.
	(_bfd_mips_elf_finish_dynamic_sections): Use the same value as
	DT_MIPS_SYMTABNO if there are no global GOT symbols.

Tue Aug 10 00:21:08 1999  Mark P. Mitchell  <mark@codesourcery.com>

	* elf32-mips.c (mips_elf_create_dynamic_relocation): Change
	prototype.  Handle local symbols.  Add commentary.
	(mips_elf_calculate_relocation): Adjust accordingly.
	(_bfd_mips_elf_check_relocs): Handle local symbols in R_MIPS_32
	relocations.

	* elflink.h (elf_bfd_final_link): Tweak last change.

1999-08-09  Mark Mitchell  <mark@codesourcery.com>

	* elflink.h (elf_link_size_reloc_section): Use the counts in the
	elf-section data to allocate just the right amount of relocation
	space.  Don't allocate the hash space twice.
	(elf_bfd_final_link): Calculate the amount of space to allocate in
	each relocation section.

Mon Aug  9 17:37:30 1999  Jeffrey A Law  (law@cygnus.com)

	* elf-hppa.h (_bfd_elf_hppa_gen_reloc_type, case 32): When in
	64bit mode, generate a section relative relocation for a 32bit
	wide relocation.
	(elf_hppa_is_local_label_name): New function.
	* elf32-hppa.c (elf_hppa_is_local_label_name): Deleted.  To be
	shared between 32bit and 64bit port.

1999-08-09  Mark Mitchell  <mark@codesourcery.com>

	* elf32-mips.c (elf_mips_howto_table): Fix src_mask for
	R_MIPS_GOT16 and R_MIPS_CALL16.
	(mips_elf_got16_entry): Use mips_elf_high to calculate the value
	to use when looking for a preexisting GOT entry.

1999-08-09  Jakub Jelinek  <jj@ultra.linux.cz>

	* elf64-sparc.c (sparc64_elf_relocate_section): Back out part of
	the Sep. 4th, 1998 change.  glibc 2.0.x dynamic linker had bug,
	not binutils.
	* elf32-sparc.c (elf32_sparc_relocate_section): Likewise.

1999-08-09  Geoff Keating  <geoffk@cygnus.com>

	* elflink.h (elf_link_output_extsym): Don't output a weak
	reference to an undefined symbol just because it was defined weak
	in a shared object.

1999-08-09  Eli Zaretskii  <eliz@is.elta.co.il>

	* coffgen.c (coff_find_nearest_line): When looking for file, use
	last best match rather than first.  If address is beyond last line
	number record, don't return the last line as the correct value.

1999-08-08  Ian Lance Taylor  <ian@zembu.com>

	* section.c (SEC_SMALL_DATA): Rename from SEC_SHORT.
	* bfd-in2.h: Rebuild.

1999-08-08  Mark Elbrecht  <snowball3@bigfoot.com>

	* libcoff-in.h (struct coff_section_alignment_entry): Define.
	* coffcode.h (coff_set_custom_section_alignment): New static
	function.
	(coff_section_alignment_table): New static array.
	(coff_new_section_hook): Use coff_set_customer_section_alignment.
	* coff-go32.c (COFF_SECTION_ALIGNMENT_ENTRIES): Define.
	* coff-stgo32.c (COFF_SECTION_ALIGNMENT_ENTRIES): Define.
	* libcoff.h: Rebuild.

1999-08-08  Ian Lance Taylor  <ian@zembu.com>

	* Makefile.am: Rename .dep* files to DEP*.  Change DEP variable to
	MKDEP.
	* Makefile.in: Rebuild.

1999-08-08  Mumit Khan  <khan@xraylith.wisc.edu>

	* section.c (SEC_SHARED): Define.
	* coffcode.h (sec_to_styp_flags): Handle SEC_SHARED.
	(styp_to_sec_flags): Likewise.
	* peicode.h (coff_swap_scnhdr_out): Likewise.
	* bfd-in2.h: Rebuild.

1999-08-08  Ian Lance Taylor  <ian@zembu.com>

	* coffcode.h (coff_classify_symbol): Comment out part of
	1999-08-05 change which breaks cygwin DLLs.

	* acinclude.m4 (BFD_BINARY_FOPEN): Change -windows to -windows*.
	* aclocal.m4, configure: Rebuild.

1999-08-06  Ian Lance Taylor  <ian@zembu.com>

	* section.c (global_syms): Only initialize union field if
	__STDC__.

1999-08-04  Mark Mitchell  <mark@codesourcery.com>

	* elf32-mips.c (mips_elf_got16_entry): Don't multiply GOT index by
	the size of a GOT entry here.
	(mips_elf_calculate_relocation): Don't create a local GOT entry
	for the symbol in a GOT16 relocation; just for it's high-order bit
	(_bfd_mips_elf_relocate_section): Fix thinko.

1999-08-05  Ian Lance Taylor  <ian@zembu.com>

	Based on patches from Donn Terry <donn@interix.com>:
	* coffcode.h (enum coff_symbol_classification): Define.
	(bfd_coff_backend_data): Rename _bfd_coff_sym_is_global to
	_bfd_coff_classify_symbol.  Change return type.
	(bfd_coff_classify_symbol): Rename from bfd_coff_sym_is_global.
	(coff_slurp_symbol_table): Use coff_classify_symbol.
	(coff_classify_symbol): New static function.
	(coff_sym_is_global): Never define.
	(bfd_coff_std_swap_table): Initialize with coff_classify_symbol.
	* cofflink.c (coff_link_check_ar_symbols): Use
	bfd_coff_classify_symbol rather than bfd_coff_sym_is_global.
	(coff_link_add_symbols): Likewise.
	(_bfd_coff_link_input_bfd): Likewise.
	* coff-sh.c (bfd_coff_small_swap_table): Initialize with
	coff_classify_symbol.
	* libcoff.h: Rebuild.

Wed Aug  4 18:08:07 1999  Jeffrey A Law  (law@cygnus.com)

	* libhppa.h (R_HPPA_LTPSEL, R_HPPA_RTPSEL): New field selectors
	(e_ltpsel, e_rtpsel): Similarly.

	* elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): Handle 21bit e_ltpsel
	and 14bit ertpsel.  Handle 64bit psel.

1999-08-04  Mark Mitchell  <mark@codesourcery.com>

	* elf32-mips.c (_bfd_mips_elf_relocate_section): Tweak HI16/LO16
	handling for REL relocations.  And only left-shift R_MIPS26
	relocation addends where necessary.

1999-08-03  Mark Mitchell  <mark@codesourcery.com>

	* elf32-mips.c (mips_elf_next_lo16_addend): Rename to ...
	(mips_elf_next_lo16_relocation): Don't compute the addend here.
	Just return the relocation found.
	(mips_elf_relocate_section): Pull the LO16 addend out of the
	section itself when using REL relocations.

	* elf32-mips.c (mips_elf_calculate_relocation): Restore
	_DYNAMIC_LINK handling and handling of undefined symbols in shared
	libraries.

1999-08-03  Ian Lance Taylor  <ian@zembu.com>

	* elf32-ppc.c (ppc_elf_relocate_section): Don't use the relocation
	value of a symbol in a SEC_DEBUGGING section.  Warn when doing a
	relocation against a symbol in an input section with no output
	section.  From Daniel Jacobowitz <drow@false.org>.

	* coff-stgo32.c (go32_stubbed_coff_object_p): Remove; not used.

	* acinclude.m4 (BFD_CC_FOR_BUILD): Change to use conftest, and to
	look for generated file correctly.
	* aclocal.m4, configure: Rebuild.

1999-08-02  Mark Mitchell  <mark@codesourcery.com>

	* elf32-mips.c (_bfd_mips_elf_relocate_section): Handle R_MIPS_26
	and R_MIPS16_26 relocations correctly when relocating.
	(_bfd_mips_elf_check_relocs): Don't assume that R_MIPS_CALL_HI16
	and R_MIPS_CALL_LO16 are for global symbols.

1999-08-02  Jakub Jelinek  <jj@ultra.linux.cz>

	* elflink.h (elf_bfd_final_link): Copy the whole isym, not just
	some fields.
	* elf64-sparc.c (sparc64_elf_output_arch_syms): Declare used
	variables and initialize them.

1999-08-01  Mark Mitchell  <mark@codesourcery.com>

	* elf32-mips.c (_bfd_mips_elf_final_link): Handle the case where
	there are no global symbols requiring GOT entries.
	(_bfd_mips_elf_size_dynamic_sections): Likewise.
	(_bfd_mips_elf_finish_dynamic_symbol): Likewise.
	(_bfd_mips_elf_finish_dynamic_sections): Likewise.

	* elf32-mips.c (mips_elf_calculate_relocation): Undefined weak
	symbols are considered to have the value zero.
	(_bfd_mips_elf_relocate_section): Don't try to perform a
	relocation for an undefined symbol.
	(_bfd_mips_elf_check_relocs): Allocate locate GOT space for local
	GOT16 relocations.

1999-07-30  Jakub Jelinek  <jj@ultra.linux.cz>

	* elf64-sparc.c (sparc64_elf_build_plt): Cosmetic change - ABI
	wants ba,a,pt %xcc instead of %icc.
	Emit correct .PLT0-(.PLTN+4) initial value into the pointer slots
	of large PLT entries.
	(sparc64_elf_plt_ptr_offset): Fix calculation.
	(sparc64_elf_finish_dynamic_symbol): Negative value of R_SPARC_JMP_SLOT
	addend should be relative to load address, not .plt section start.
	(sparc64_elf_size_info): Sparc64 uses 32bit .hash entries.

1999-07-30  Jakub Jelinek  <jj@ultra.linux.cz>

	* elf-bfd.h (struct elf_backend_data): Add
	print_symbol_all and output_arch_syms backend methods.
	* elfxx-target.h: Likewise.
	* elf64-sparc.c (sparc64_elf_bfd_link_hash_table_create,
	sparc64_elf_add_symbol_hook, sparc64_elf_output_arch_syms,
	sparc64_elf_get_symbol_type, sparc64_elf_symbol_processing): New
	functions.
	(sparc64_elf_size_dynamic_sections): Leave space for STT_REGISTER
	symbols in .dynsym, add their names into .dynstr. Put those symbols
	into dynlocal.
	(sparc64_elf_finish_dynamic_sections): Fix up DT_SPARC_REGISTER
	pointers to STT_REGISTER symbols in dynsym section.
	(sparc64_elf_print_symbol_all): New function.
	* elf.c (bfd_elf_print_symbol): Allow special backend symbol
	printing using the print_symbol_all hook.

1999-07-30  Catherine Moore  <clm@cygnus.com>

	* elf32-arm.h (elf32_arm_check_relocs):  Use r_offset for
	R_ARM_GNU_VTENTRY.

1999-07-29  Richard Henderson  <rth@cygnus.com>

	* elf32-mips.c (_bfd_mips_elf_final_link): Only re-sort dynsyms if
	dynamic_sections_created.

1999-07-29  Richard Henderson  <rth@cygnus.com>

	* elf32-mips.c (mips_info_to_howto_rel): Split out switch to ...
	(mips_rtype_to_howto): ... new function.
	(_bfd_mips_elf_relocate_section): Use it.

1999-07-28  Mark Mitchell  <mark@codesourcery.com>

	* elf32-mips.c (_bfd_mips_elf_relocate_section): Fix typo.

1999-07-27  Nick Clifton  <nickc@cygnus.com>

	Patch generated by Bernd Schmidt. <bernds@cygnus.co.uk>

	* coff-arm.c (coff_arm_is_local_label_name): Change to strip
	out only symbols that start with LOCAL_LABEL_PREFIX followed by 'L'.

1999-07-23  Donn Terry  <donn@interix.com>

	* libcoff-in.h (coff_link_hash_entry): Add coff_link_hash_flags
	field, and define COFF_LINK_HASH_PE_SECTION_SYMBOL.
	* cofflink.c (coff_link_add_symbols): If PE, handle section
	symbols specially.
	* libcoff.h: Rebuild.

	* config.bfd (i[3456]86-*-interix*): New target.

1999-07-21  Mark Elbrecht  <snowball3@bigfoot.com>

	* coffcode.h (styp_to_sec_flags): If COFF_LONG_SECTION_NAMES and
	COFF_SUPPORT_GNU_LINKONCE, mark sections whose names begin with
	.gnu.linkonce with SEC_LINKONCE and SEC_LINK_DUPLICATES_DISCARD.
	* coff-go32.c: (COFF_LONG_SECTION_NAMES): Define.
	(COFF_SUPPORT_GNU_LINKONCE): Define.
	* coff-stgo32.c: (COFF_LONG_SECTION_NAMES): Define.
	(COFF_SUPPORT_GNU_LINKONCE): Define.

1999-07-21  Ian Lance Taylor  <ian@zembu.com>

	From Mark Elbrecht:
	* makefile.dos: Remove; obsolete.
	* configure.bat: Remove; obsolete.

1999-07-21  H.J. Lu  <hjl@gnu.org>

	* config.bfd (i[3456]86-*-vxworks*): Add targ_underscore=yes.

1999-07-21  Philippe De Muyter  <phdm@macqel.be>

	* cofflink.c (_bfd_coff_generic_relocate_section): Issue an error
	message	and fail if a symbol index is out of range.

1999-07-21  Ian Lance Taylor  <ian@zembu.com>

	* elf32-mips.c (mips_elf_calculate_relocation): Get the GP value
	when looking at a R_MIPS_GOT16 relocation.

1999-07-20  Nick Clifton  <nickc@cygnus.com>

	* coff-m88k.c: Use CREATE_BIG_COFF_TARGET_VEC.

Mon Jul 19 14:03:44 1999  Mark P. Mitchell  <mark@codesourcery.com>

	* elf32-mips.c (_bfd_mips_elf_final_link): Restore setting of GP
	removed in previous change.
	(_bfd_mips_elf_relocate_section): Adjust GP relative relocations
	in relocateable output.

1999-07-19  Ian Lance Taylor  <ian@zembu.com>

	* coff-m88k.c (m88kbcs_vec): Initialize new field of bfd_target
	structure.

	* elflink.h (elf_merge_symbol): Do merge symbols from the same BFD
	if they appear to be specially created by the linker.

1999-07-19  Nick Clifton  <nickc@cygnus.com>

	* targets.c (alternative_target): New field in bfd_target
	structure.
	(bfd_search_for_target): New function:  Find a target that
	satisifies a search function.
	* bfd-in2.h: Regenerate.

	* elfxx-target.h: Initialise the alternative_target field of
	the bfd_target structures to point to the other target (if
	defined).
	* nlm-target.h: Initialise the alternative_target field of
	the bfd_target structures to point to the other target (if
	defined).

	* coffcode.h (CREATE_BIG_COFF_TARGET_VEC): New macro.
	(CREATE_LITTLE_COFF_TARGET_VEC): New macro.

	* aix386-core.c: Initialise new field of bfd_target structure.
	* aout-adobe.c: Initialise new field of bfd_target structure.
	* aout-arm.c: Initialise new field of bfd_target structure.
	* aout-target.h: Initialise new field of bfd_target structure.
	* aout-tic30.c: Initialise new field of bfd_target structure.
	* binary.c: Initialise new field of bfd_target structure.
	* bout.c: Initialise new field of bfd_target structure.
	* cisco-core.c: Initialise new field of bfd_target structure.
	* coff-a29k.c: Use CREATE_BIG_COFF_TARGET_VEC.
	* coff-alpha.c: Initialise new field of bfd_target structure.
	* coff-apollo.c: Use CREATE_BIG_COFF_TARGET_VEC.
	* coff-arm.c: Use CREATE_{BIG|LITTLE}_COFF_TARGET_VEC.
	* coff-h8300.c: Use CREATE_BIG_COFF_TARGET_VEC.
	* coff-h8500.c: Use CREATE_BIG_COFF_TARGET_VEC.
	* coff-i386.c: Initialise new field of bfd_target structure.
	* coff-i860.c: Initialise new field of bfd_target structure.
	* coff-i960.c: Use CREATE_LITTLE_COFF_TARGET_VEC.
	* coff-m68k.c: Use CREATE_BIG_COFF_TARGET_VEC.
	* coff-mcore.c: Use CREATE_{BIG|LITTLE}_COFF_TARGET_VEC.
	* coff-mips.c: Initialise new field of bfd_target structure.
	* coff-ppc.c: Initialise new field of bfd_target structure.
	* coff-rs6000.c: Initialise new field of bfd_target structure.
	* coff-sh.c:  Use CREATE_{BIG|LITTLE}_COFF_TARGET_VEC.
	* coff-sparc.c: Use CREATE_BIG_COFF_TARGET_VEC.
	* coff-tic30.c: Initialise new field of bfd_target structure.
	* coff-tic80.c: Use CREATE_LITTLE_COFF_TARGET_VEC.
	* coff-w65.c:   Use CREATE_LITTLE_COFF_TARGET_VEC.
	* coff-we32k.c: Use CREATE_BIG_COFF_TARGET_VEC.
	* coff-z8k.c:   Use CREATE_BIG_COFF_TARGET_VEC.
	* hppabsd-core.c: Initialise new field of bfd_target structure.
	* hpux-core.c: Initialise new field of bfd_target structure.
	* i386msdos.c: Initialise new field of bfd_target structure.
	* i386os9k.c: Initialise new field of bfd_target structure.
	* ieee.c: Initialise new field of bfd_target structure.
	* ihex.c: Initialise new field of bfd_target structure.
	* irix-core.c: Initialise new field of bfd_target structure.
	* mipsbsd.c: Initialise new field of bfd_target structure.
	* netbsd-core.c: Initialise new field of bfd_target structure.
	* oasys.c: Initialise new field of bfd_target structure.
	* osf-core.c: Initialise new field of bfd_target structure.
	* ppcboot.c: Initialise new field of bfd_target structure.
	* ptrace-core.c: Initialise new field of bfd_target structure.
	* sco5-core.c: Initialise new field of bfd_target structure.
	* som.c: Initialise new field of bfd_target structure.
	* srec.c: Initialise new field of bfd_target structure.
	* tekhex.c: Initialise new field of bfd_target structure.
	* trad-core.c: Initialise new field of bfd_target structure.
	* versados.c: Initialise new field of bfd_target structure.
	* vms.c: Initialise new field of bfd_target structure.

1999-07-19  Andreas Schwab  <schwab@suse.de>

	* elflink.h (elf_bfd_final_link): Remove unused variables rel_hash
	and rel_hdr.

Sat Jul 17 02:28:28 1999  Mark P. Mitchell  <mark@codesourcery.com>

	* elflink.h (elf_link_adjust_relocs): New function.
	(elf_bfd_final_link): Use it.
	(elf_link_input_bfd): Deal with the fact that there can be
	two relocation sections for a single section.
	(elf_reloc_link_order): Likewise.

	* elf32-mips.c (_bfd_mips_elf_final_link): Don't set GP for
	a relocateable object.
	(_bfd_mips_elf_relocate_section): Handle relocateable links.

1999-07-16  Jakub Jelinek  <jj@ultra.linux.cz>

	* elf64-sparc.c (sparc64_elf_info_to_howto): Use ELF64_R_TYPE_ID.
	(sparc64_elf_get_reloc_upper_bound,
	sparc64_elf_get_dynamic_reloc_upper_bound,
	sparc64_elf_slurp_one_reloc_table, sparc64_elf_slurp_reloc_table,
	sparc64_elf_canonicalize_dynamic_reloc, sparc64_elf_write_relocs):
	New functions.
	(sparc64_elf_check_relocs, sparc64_elf_relocate_section): Use
	ELF64_R_TYPE_ID/DATA where appropriate.

1999-07-16  Jakub Jelinek  <jj@ultra.linux.cz>

	* elf64-sparc.c (sparc64_elf_size_dynamic_sections): Remove
	DT_SPARC_PLTFMT.

1999-07-16  Ian Lance Taylor  <ian@zembu.com>

	* elf32-mips.c (mips_elf_local_relocation_p): New static
	function.
	(mips_elf_next_lo16_addend): Call bfd_set_error on failure.
	(mips_elf_calculate_relocation): Use mips_elf_local_relocation_p.
	Always set *require_jalxp.
	(mips_elf_stub_section_p): Mark abfd parameter as unused.
	(_bfd_mips_elf_relocate_section): Only look for LO16 following
	GOT16 if the GOT16 is against a local symbol.  Don't return false
	for an undefined symbol.  If there is an overflow, assert that we
	have a name.

1999-07-16  Andreas Schwab  <schwab@suse.de>

	* elflink.h (elf_link_record_local_dynamic_symbol): Remove unused
	variables `link' and `elfsec'.
	(elf_bfd_final_link): Remove unused variable `os'.

Thu Jul 15 17:55:31 1999  Mark P. Mitchell  <mark@codesourcery.com>

	* elf32-mips.c (_bfd_mips_elf_modify_segment_map): Don't require
	a PT_PHDR program headers.
	(_bfd_mips_elf_final_link): Don't assume there are going to be
	section symbols when we're not building a shared object.
	(_bfd_mips_elf_check_relocs): Make sure we have a GOT when
	we need one.

1999-07-15  J.T. Conklin  <jtc@redback.com>

	* config.bfd (i[3456]86-*-vxworks*): New target.

1999-07-15  Mark Mitchell  <mark@codesourcery.com>

	* elf32-mips.c (mips_elf_stub_section_p): New function.
	(mips_elf_calculate_relocation): Handle MIPS16 stub functions.
	(mips_elf_relocate_section): Adjust calling sequence for
	mips_elf_calculate_relocation and mips_elf_perform_relocation.
	(mips_elf_perform_relocation): Turn `jal' into `jalx' where
	required.

1999-07-15  Ian Lance Taylor  <ian@zembu.com>

	* configure.in: Bump version number to 2.9.5.
	* configure: Rebuild.

Thu Jul 15 02:56:15 1999  Jeffrey A Law  (law@cygnus.com)

	* elf-hppa.h (_bfd_elf_hppa_gen_reloc_type, case R_HPPA): Handle
	64bit format.
	(_bfd_elf_hppa_gen_reloc_type, case R_GOTOFF): Use base reloc type
	to derive final type instead of hardwiring a selection.

1999-07-14  Mark Mitchell  <mark@codesourcery.com>

	* elf32-mips.c (mips_elf_obtain_contents): Swap 16-bit halves of
	things relocated by R_MIPS16_GPREL.
	(mips_elf_perform_relocation): Likewise.

Wed Jul 14 15:23:19 1999  Jim Wilson  <wilson@cygnus.com>

	* elfxx-target.h (elfNN_bed): Add elf_backend_want_dynbss.

1999-07-14  Richard Henderson  <rth@cygnus.com>

	* elf32-mips.c (struct mips_got_info): Add global_gotno.
	(_bfd_mips_elf_size_dynamic_sections): Set it.
	(_bfd_mips_elf_final_link): Re-sort; verify the got did not grow.
	(mips_elf_sort_hash_table): Set max_non_got_dynindex based off
	new argument max_local.

1999-07-14  Mark Mitchell  <mark@codesourcery.com>

	* elf32-mips.c (mips_elf_obtain_contents): Swap the 16-bit
	subwords when handling an R_MIPS16_26 relocation.
	(mips_elf_perform_relocation): Don't be paranoid abour right-shift
	semantics.

	* elf32-mips.c (elf_mips16_gprel_howto): Adjust src_mask and
	dst_mask to match reality.
	(_bfd_mips_elf_calculate_relocation): Handle R_MIPS16_GPREL.
	(mips_elf_obtain_contents): Use bfd_get.
	(mips_elf_perform_relocation): Handle R_MIPS16_GPREL.
	(mips_elf_relocate_section): Likewise.

1999-07-13  Mark Mitchell  <mark@codesourcery.com>

	* elf32-mips.c (mips_elf_calculate_relocation): Handle R_MIPS16_26.
	(mips_elf_relocate_section): Adjust calling sequence for
	mips_elf_perform_relocation.
	(mips_elf_perform_relocation): Take additional argument.  Handle
	R_MIPS16_26.  Use bfd_put for convenience.

1999-07-13  Richard Henderson  <rth@cygnus.com>

	* elf.c (assign_file_positions_for_segments): Thinko last change.
	Always overwrite p_flags.

1999-07-13  Richard Henderson  <rth@cygnus.com>

	* elf-bfd.h (struct elf_backend_data): Add want_dynbss.
	* elflink.c (_bfd_elf_create_dynamic_sections): Only create
	.dynbss and .rel[a].bss if want_dynbss.
	* elfxx-target.h (elf_backend_want_dynbss): Provide default.

1999-07-13  Richard Henderson  <rth@cygnus.com>

	* elf.c (assign_file_positions_for_segments): Don't overwrite p_flags.

1999-07-13  Richard Henderson  <rth@cygnus.com>

	* elf-bfd.h (struct elf_link_local_dynamic_entry): New.
	(struct elf_link_hash_table): Add dynlocal.
	(_bfd_elf_link_lookup_local_dynindx): Prototype.
	(_bfd_elf_link_adjust_dynindx): Delete.
	(_bfd_elf_link_renumber_dynsyms): Prototype.
	(_bfd_elf,link_record_local_dynamic_symbol): Prototype.
	* elfcode.h (elf_link_record_local_dynamic_symbol): New alias.
	* elflink.c (_bfd_elf_link_adjust_dynindx): Delete.
	(_bfd_elf_link_lookup_local_dynindx): New function.
	(elf_link_renumber_hash_table_dynsyms): New function.
	(_bfd_elf_link_renumber_dynsyms): New function.
	* elflink.h (elf_link_record_local_dynamic_symbol): New function.
	(struct elf_assign_sym_version_info): Delete removed_dynamic.
	(bfd_elf,size_dynamic_sections): Use _bfd_strip_section_from_output
	instead of elf_link_remove_section_and_adjust_dynindices.
	Remove removed_dynamic code.  Use _bfd_elf_link_renumber_dynsyms.
	(elf_link_assign_sym_version): Remove removed_dynamic code.
	(elf_link_renumber_dynsyms): Delete.
	(elf_bfd_final_link): Install section and local symbols into .dynsym.

	* elf32-m68k.c (elf_m68k_adjust_dynindx): Delete.
	(elf_m68k_size_dynamic_sections): Don't set section dynindicies.
	(elf_m68k_finish_dynamic_sections): Don't write section dynsyms.
	* elf32-mips.c: Similarly.
	* elf32-ppc.c: Similarly.
	* elf32-sparc.c: Similarly.
	* elf64-alpha.c: Similarly.
	* elf64-sparc.c: Similarly.

1999-07-13  Mark Mitchell  <mark@codesourcery.com>

	* elf32-mips.c (mips_elf_calculate_relocation): Do not complain
	when _gp_disp is undefined.  Do not check R_MIPS_LO16 for overflow
	when the relocation is against _gp_disp.

1999-07-12  Mark Mitchell  <mark@codesourcery.com>

	* dwarf2.c (read_attribute): Support DW_FORM_ref8.
	* elf32-mips.c (mips_elf_link_hash_entry): Change mips_32_relocs
	to possibly_dynamic_relocs.  Adjust usage throughout code.
	(elf_mips_howto_table): Handle R_MIPS_64 correctly.
	(elf_mips_ctor64_howto): Likewise.
	(mips_elf_calculate_relocation): Handle R_MIPS_64 like R_MIPS_32.
	Adjust indentation.
	(mips_elf_relocate_section): Handle R_MIPS_64 in 32-bit mode.
	(_bfd_mips_elf_check_relocs): Handle R_MIPS_64 like R_MIPS_32.
	Use MIPS_ELF_GOT_SIZE to calculate the size of GOT entries.
	* elf64-mips.c (elf_backend_may_use_rel_p): Define.

1999-07-12  Ian Lance Taylor  <ian@zembu.com>

	* Makefile.am: Rebuild dependencies.
	* Makefile.in: Rebuild.

	* bfd-in.h: Remove tests of COFF_IMAGE_WITH_PE.
	* bfd-in2.h: Rebuild.

	* Many files: Changes to avoid gcc warnings: Add ATTRIBUTE_UNUSED
	as appropriate.  Use EMPTY_HOWTO as appropriate.  Fill in
	structure initializations.  Add casts.
	* reloc.c (EMPTY_HOWTO): Define.
	* bfd-in2.h: Rebuild.
	* coff-h8300.c (h8300_reloc16_extra_cases): Remove useless
	comparisons against 0.
	* elf32-sparc.c (elf32_sparc_merge_private_bfd_data): Change
	previous_ibfd_e_flags to unsigned long.
	* vms.h (struct vms_private_data_struct): Change section_count to
	unsigned.
	* vms-gsd.c (_bfd_vms_slurp_gsd): Change psect_idx to unsigned.
	(_bfd_vms_write_gsd): Change symnum to unsigned.
	* vms-hdr.c (_bfd_vms_write_hdr): Change symnum to unsigned.
	* vms-tir.c (etir_sta): Change psect to unsigned.
	(alloc_section): Change idx to unsigned.
	(tir_sta, tir_ctl): Change psect to unsigned.
	(_bfd_vms_write_tir): Change len and before to bfd_size_type.
	* vms.c (priv_section_count): Change to unsigned.

1999-07-12  Andreas Schwab  <schwab@suse.de>

	* elf32-m68k.c: Add some ATTRIBUTE_UNUSED.
	* m68klinux.c: Likewise.

1999-07-12  Ian Lance Taylor  <ian@zembu.com>

	* Many files: Changes to avoid gcc warnings: Remove unused local
	variables.  Add default case to enum switches.
	* coff-arm.c (bfd_arm_allocate_interworking_sections): Only
	compile if not COFF_IMAGE_WITH_PE.
	(record_arm_to_thumb_glue, record_thumb_to_arm_glue): Likewise.
	(bfd_arm_get_bfd_for_interworking): Likewise.
	(bfd_arm_process_before_allocation): Likewise.
	* epoc-pei-arm.c: Don't rename bfd_arm functions.
	* pei-arm.c: Likewise.
	* elf32-mips.c (mips_elf_link_hash_table_create): Don't declare.
	(MIPS_ELF_ADD_DYNAMIC_ENTRY): Correct last change.
	(mips_elf_got16_entry): Put parens around & in body of ==.
	(mips_elf_calculate_relocation): Correct test for empty string.
	* vms-gsd.c: Use _bfd_error_handler rather than fprintf to
	stderr.
	* vms-misc.c (_bfd_vms_length_hash_symbol): Correct sprintf
	format.

1999-07-11  Ian Lance Taylor  <ian@zembu.com>

	* Many files: Changes to avoid gcc warnings: Add ATTRIBUTE_UNUSED
	as appropriate.  Fill in structure initializations.  Add variable
	initializations.  Add casts.
	* dwarf1.c (parse_line_table): Change eachLine to unsigned long.
	(dwarf1_unit_find_nearest_line): Change i to unsigned long.

	* elf.c (bfd_elf_hash): Change parameter from unsigned char * to
	char *.
	* elf-bfd.h (bfd_elf_hash): Update declaration.
	* elflink.h (NAME(bfd_elf,size_dynamic_sections)): Remove casts
	when calling bfd_elf_hash.

1999-07-11  Mark Mitchell  <mark@codesourcery.com>

	* libbfd.c (bfd_put_8): Make it of type `void'.
	* bfd-in2.h: Regenerated.
	* elf32-mips.c (MIPS_ELF_ADD_DYNAMIC_ENTRY): Conditionalize
	for 32-bit hosts.
	(_bfd_mips_elf_final_link): Likewise.

	* elflink.h (elf_link_read_relocs_from_section): Be type-correct.

Thu Jul  8 12:32:23 1999  John David Anglin <dave@hiauly1.hia.nrc.ca>

	* config.bfd (hppa*-*-linux-gnu*): New target

1999-07-07  Mark Mitchell  <mark@codesourcery.com>

	* elf-bfd.h (_bfd_mips_elf_section_from_shdr): Constify.
	(_bfd_mips_elf_create_dynamic_sections): New function.
	(_bfd_mips_elf_add_symbol_hook): Likewise.
	(_bfd_mips_elf_adjust_dynamic_symbol): Likewise.
	(_bfd_mips_elf_finish_dynamic_symbol): Likewise.
	(_bfd_mips_elf_finish_dynamic_sections): Likewise.
	(_bfd_mips_elf_gc_mark_hook): Likewise.
	(_bfd_mips_elf_gc_sweep_hook): Likewise.
	(_bfd_mips_elf_always_size_sections): Likewise.
	(_bfd_mips_elf_size_dynamic_sections): Likewise.
	(_bfd_mips_elf_check_relocs): Likewise.
	(_bfd_mips_elf_link_hash_table_create): Likewise.
	(_bfd_mips_elf_print_private_data): Likewise.
	(_bfd_mips_elf_link_output_symbol_hook): Likewise.
	(_bfd_mips_elf_final_link): Likewise.
	(_bfd_mips_elf_additional_program_headers): Likewise.
	(_bfd_mips_elf_modify_segment_map): Likewise.
	(_bfd_mips_elf_relocate_section): Likewise.
	* elf32-mips.c (mips_elf32_object_p): Move contents into
	_bfd_mips_elf_object_p.
	(mips_elf_additional_program_headers): Rename to
	_bfd_mips_elf_additional_program_headers.
	(mips_elf_modify_segment_map): Rename to
	_bfd_mips_elf_modify_segment_map.
	(elf_mips_abi_name): Change prototype.
	(mips_elf32_section_from_shdr): Merge into
	_bfd_mips_elf_section_from_shdr.
	(mips_elf32_section_processing): Merge into
	_bfd_mips_elf_section_processing.
	(mips_elf_final_link): Rename to _bfd_mips_elf_final_link.  Invoke
	the right back-end ELF linker.
	(mips_elf_relocate_section): Rename to
	_bfd_mips_elf_relocate_section.  Clean up.  Adjust for 64-bit code.
	(mips_elf_link_output_symbol_hook): Rename to
	_bfd_mips_elf_link_output_symbol_hook.
	(mips_elf_create_dynamic_section): Rename to
	_bfd_mips_elf_create_dynamic_section.
	(mips_elf_check_relocs): Rename to _bfd_mips_elf_check_relocs.
	Adjust for 64-bit code.  Use mips_elf_got_section.
	(mips_elf_adjust_dynamic_symbol): Rename to
	_bfd_mips_elf_adjust_dynamic_symbol.  Use
	mips_elf_allocate_dynamic_relocations.
	(mips_elf_finish_dynamic_symbol): Rename to
	_bfd_mips_elf_finish_dynamic_symbol.  Use mips_elf_got_section.
	Adjust for 64-bit code.
	(mips_elf_finish_dynamic_sections): Rename to
	_bfd_mips_elf_finish_dynamic_sections.  Adjust for 64-bit code.
	(mips_elf_always_size_sections): Rename to
	_bfd_mips_elf_always_size_sections.
	(mips_elf_add_symbol_hook): Rename to
	_bfd_mips_elf_add_symbol_hook.
	(mips_elf_next_lo16_addend): Constify.
	(mips_elf_calculate_relocation): Likewise.
	(mips_elf_obtain_contents): Likewise.
	(mips_elf_perform_relocation): Likewise.
	(mips_elf_create_dynamic_relocation): Likewise.
	(mips_elf_allocate_dynamic_relocations): New function.
	(MIPS_ELF_REL_DYN_SECTION_NAME): New macro.
	(MIPS_ELF_REL_SIZE): Likewise.
	(MIPS_ELF_DYN_SIZE): Likewise.
	(MIPS_ELF_GOT_SIZE): Likewise.
	(MIPS_ELF_SYM_SIZE): Likewise.
	(MIPS_ELF_LOG_FILE_ALIGN): Likewise.
	(MIPS_ELF_GET_WORD): Likewise.
	(MIPS_ELF_PUT_WORD): Likewise.
	(MIPS_ELF_ADD_DYNAMIC_ENTRY): Likewise.
	(STUB_LW): Conditionalize for 64-bit value.
	(elf_mips_howto_table): Add R_MIPS_HIGHER and R_MIPS_HIGHEST
	entries.
	(_bfd_mips_elf_merge_private_bfd_data): Merge e_ident[EI_CLASS].
	Check it for inconsistency.
	(_bfd_mips_elf_print_private_bfd_data): Print ABI=64 for 64-bit
	ABI.
	(_bfd_mips_elf_fake_sections): Remove duplicate handling of
	.msym.
	(mips_elf_global_got_index): Use MIPS_ELF_GOT_SIZE.
	(mips_elf_got_offset_from_index): Use misp_elf_got_section.
	(mips_elf_create_local_got_entry): Use MIPS_ELF_GOT_SIZE.
	(mips_elf_local_got_index): Likewise.
	(mips_elf_got_page): Likewise.
	(mips_elf_got_info): Likewise.
	(mips_elf_create_dynamic_relocation): Handle 32-bit/64-bit split.
	(ELF_DYNAMIC_INTERPRETER): Handle 64-bit code.
	(mips_elf_create_dynamic_sections): Use MIPS_ELF_LOG_FILE_ALIGN,
	instead of constant `2'.
	(mips_elf_create_got_section): Tidy.  Use MIPS_ELF_GOT_SIZE.
	(mips_elf_create_msym_section): Use MIPS_ELF_LOG_FILE_ALIGN.
	(mips_elf_size_dynamic_sections): Use
	MIPS_ELF_REL_DYN_SECTION_NAME, MIPS_ELF_GOT_SIZE,
	MIPS_ELF_ADD_DYNAMIC_ENTRY.  Remove #if 0'd code.
	Adjust all releveant entries in elf backend table.
	* elf64-mips.c (mips_elf64_section_from_shdr): Remove.
	(mips_elf64_section_processing): Likewise.
	Adjust elf backend entries to use _bfd_mips_elf variants now
	publicly available.

	* elflink.h (elf_link_create_dynamic_sections): Handle non-standard
	hash-entry sizes.
	(size_dynamic_sections): Likewise.
	(elf_link_output_extsym): Likewise.
	* elf.c: (elf_fake_sections): Likewise.
	* libbfd.c (bfd_get): New macro.
	(bfd_put): Likewise.
	* bfd-in2.h: Regenerated.

1999-07-07  Mark Mitchell  <mark@codesourcery.com>

	* elf-bfd.h (elf_size_info): Add hash_entry_size,
	int_rels_per_ext_rel, swap_dyn_out, swap_reloc_in, swap_reloc_out,
	wap_reloca_in, and swap_reloca_out.
	* elflink.h (elf_link_read_relocs_from_section): Adjust to handle
	multiple internal relocations per external relocation.
	(link_read_relocs): Likewise.
	(elf_bfd_final_link): Likewise.
	(elf_link_input_bfd): Likewise.
	(elf_gc_mark): Likewise.
	(elf_gc_smash_unused_vtentry_relocs): Likewise.
	* elfcode.h (elf_swap_dyn_out): Adjust type to match
	elf_swap_dyn_in.
	(size_info): Add entries for new fields.
	* elf64-mips.c (mips_elf64_swap_reloc_out): Enable.
	(mips_elf64_be_swap_reloc_in): New function.
	(mips_elf64_be_swap_reloc_out): Likewise.
	(mips_elf64_be_swap_reloca_in): Likewise.
	(mips_elf64_be_swap_reloca_out): Likewise.
	(mips_elf64_size_info): Add entries for new fields.

1999-07-07  Ian Lance Taylor  <ian@zembu.com>

	* elflink.h (elf_bfd_final_link): Assert that section reloc_count
	field equals the new rel_count field.
	(elf_link_input_bfd): When doing a relocateable link, use the new
	rel_count field rather than the reloc_count field.
	(elf_reloc_link_order): Likewise.
	(elf_finish_pointer_linker_section): Likewise.

	Based on patch from H.J. Lu <hjl@gnu.org>:
	* elflink.h (elf_merge_symbol): Permit a non-weak definition in a
	shared library to override a weak definition in a regular object.

Tue Jul  6 10:23:39 1999  Jeffrey A Law  (law@cygnus.com)

	* libhppa.h: Revert July 2, 1999 patch.

	* elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): T mode selectors
	need to generate DLTIND relocations, not DLTREL relocations.

1999-07-05  Nick Clifton  <nickc@cygnus.com>

	* coffcode.h (coff_set_arch_mach_hook): Recognise arm 5
	architectures.
	(coff_set_flags): Recognise arm 5 architectures.

	* cpu-arm.c: Add support for strongarm and arm9 cpus.
	Add support for armv5 architecture.

	* archures.c: Add bfd_mach_arm_5 and bfd_mach_arm_5T.

	* reloc.c: Add new, assembler only, ARM reloc:
	BFD_RELOC_ARM_ADRL_IMMEDIATE.

	* bfd-in2.h: Regenerate.

1999-07-02  Mark Mitchell  <mark@codesourcery.com>

	* dwarf2.c (parse_comp_unit): Add ABBREV_LENGTH parameter.
	(_bfd_dwarf2_find_nearest_line): Add ADDR_SIZE parameter.
	* elf.c (_bfd_elf_find_nearest_line): Pass it.
	* elf32-arm.h (elf32_arm_find_nearest_line): Likewise.
	* elf32-mips.c (ABI_64_P): New macro.
	(IRIX_COMPAT): We are IRIX6-compatible if ABI_64_P.
	(_bfd_mips_elf_find_nearest_line): Adjust call to
	_bfd_dwarf2_find_nearest_line.
	* libbfd-in.h (_bfd_dwarf2_find_nearest_line): Update prototype.
	* libbfd.h: Regenerated.

1999-07-02  Ian Lance Taylor  <ian@zembu.com>

	* config.bfd: Add * at the end of i[3456]86-*-unixware.

Fri Jul  2 12:21:10 1999  Jeffrey A Law  (law@cygnus.com)

	* libhppa.h (HPPA_R_ARG_RELOC): Delete.
	(HPPA_R_CONSTANT, HPPA_R_ADDEND): Likewise.

1999-07-01  Mark Mitchell  <mark@codesourcery.com>

	* elf-bfd.h (bfd_elf_section_data): Add rel_count and rel_count2
	fields.
	(_bfd_elf_init_reloc_shdr): New function.
	* elf.c (_bfd_elf_new_section_hook): Use bfd_zalloc, rather than
	bfd_alloc followed by memset.
	(_bfd_elf_init_reloc_shdr): New function, split out from ...
	(elf_fake_sections): Here.
	(assign_section_numbers): Assign section numbers for the second
	relocation section, if required.
	* elflink.h (elf_link_output_relocs): New function.
	(elf_link_size_reloc_section): Likewise.
	(elf_bfd_final_link): Use elf_link_size_reloc_section.
	(elf_link_input_bfd): Use elf_link_output_relocs.

	* elf32-mips.c (_bfd_mips_elf_fake_sections): Use
	_bfd_elf_init_reloc_shdr to initialize rel_hdr2.

Thu Jul  1 13:58:48 1999  Jeffrey A Law  (law@cygnus.com)

	* elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): Handle R_PCREL_CALL
	with 22bit format.

1999-06-28  Mark Mitchell  <mark@codesourcery.com>

	* elf32-mips.c (mips_elf_got_info): Move declaration before
	prototypes.  Change global_gotsym to be a pointer to a hash entry,
	rather than a number index.
	(mips_elf_link_hash_entry): Move declaration before prototypes.
	(mips_elf_irix6_finish_dynamic_symbol): New function.
	(mips_elf_sign_extend): Likewise.
	(mips_elf_high): Likewise.
	(mips_elf_higher): Likewise.
	(mips_elf_highest): Likewise.
	(mips_elf_global_got_index): Likewise.
	(mips_elf_local_got_index): Likewise.
	(mips_elf_got_offset_from_index): Likeiwse.
	(mips_elf_record_global_got_symbol): Likewise.
	(mips_elf_got_page): Likewise.
	(mips_elf_next_lo16_addend): Likewise.
	(mips_elf_calculate_relocation): Likewise.
	(mips_elf_obtain_contents): Likewise.
	(mips_elf_perform_relocation): Likewise.
	(mips_elf_assign_gp): Likewise.
	(mips_elf_sort_hash_table_f): Likewise.
	(mips_elf_sort_hash_table): Likewise.
	(mips_elf_got_section): Likewise.
	(mips_elf_got_info): Likewise.
	(mips_elf_create_local_got_entry): Likewise.
	(mips_elf_got16_entry): Likewise.
	(mips_elf_create_dynamic_relocation): Likewise.
	(elf_mips_howto_table): Add description of R_MIPS_SCN_DISP.
	(mips_elf_final_gp): Use mips_elf_assign_gp.
	(_bfd_mips_elf_symbol_processing): Don't move SHN_COMMON symbols
	into SHN_SCOMMON automatically on IRIX6.
	(mips_elf_add_symbol_hook): Likewise.
	(mips_elf_relocate_section): Rewrite, using
	mips_elf_calculate_relocation and mips_elf_perform_relocation.
	(mips_elf_create_dynamic_section): Use MIPS_ELF_STUB_SECTION_NAME.
	Don't deal with .rld_map on IRIX6.
	(mips_elf_create_got_section): Adjust use of global_gotsym.  Set
	section flags appropriately for .got.
	(mips_elf_check_relocs): Handle IRIX6 relocations making use of
	the got.  Call mips_elf_record_global_got_symbol and allocate
	local got space appropriately.
	(mips_elf_size_dynamic_sections): Use bfd_byte *, not unsigned
	char *.  Rework calculation of GOT size.  Sort dynamic symbol
	table entries so entries that do not require GOT entries appear at
	the beginning.  Don't use DT_MIPS_HIPAGENO on IRIX6.  Remove dead
	code dealing with DT_INIT and DT_FINI.  Remove fiddling with
	global_gotsym.
	(mips_elf_finish_dynamic_symbol): Adjust creation of global GOT
	entries.
	(mips_elf_finish_dynamic_symbol): Use
	mips_elf_irix6_finish_dynamic_symbol.
	(mips_elf_finish_dynamic_sections): Correct off-by-one error
	setting DT_MIPS_UNREFEXTNO.  Adjust setting of DT_MIPS_GOTSYM for
	change to global_gotsym.  Set DT_MIPS_OPTIONS on IRIX6.

1999-06-30  Ian Lance Taylor  <ian@zembu.com>

	* elf32-mips.c (mips_elf_final_link): Don't set CPIC when doing a
	relocateable link.  From Ralf Baechle <ralf@uni-koblenz.de>.

1999-06-04  Philip Blundell  <philb@gnu.org>

	* elf32-arm.h (elf_backend_got_header_size): Define.
	(elf_backend_plt_header_size): Likewise.

1999-06-28  Jim Pick  <jim@jimpick.com>

	* elf32-arm.h (elf32_arm_relocate_section): Mind no_undefined

Tue Jun 29 02:25:03 1999  Jeffrey A Law  (law@cygnus.com)

	* elf-hppa.c (elf_hppa_howto_table): Use bfd_elf_generic_reloc as
	relocation function.
	* elf32-hppa.c (hppa_elf_reloc): Kill unused/unwanted function.

1999-06-27  Mark Mitchell  <mark@codesourcery.com>

	* elf32-mips.c (MIPS_ELF_SRDATA_SECTION_NAME): New macro.
	(MIPS_ELF_OPTIONS_SECTION_NAME): Likewise.
	(MIPS_ELF_STUB_SECTION_NAME): Likewise.
	(_bfd_mips_elf_section_from_shdr): Use them.
	(_bfd_mips_elf_fake_sections): Likewise.  Add .srdata to the list
	of GP-relative sections.
	(_bfd_mips_elf_set_section_contents): Use them.
	(_bfd_mips_elf_section_processing): Share code between .sdata and
	.lit4/.lit8 sections.  Set appropriate flags for .srdata.
	(mips_elf_additional_program_headers): Add handling for
	PT_MIPS_OPTIONS segment on IRIX6.
	(mips_elf_modify_segment_map): Likeiwse.
	(mips_elf_final_link): Set EF_MIPS_CPIC when required by the ABI.
	Include the options sections on IRIX6.  Don't look for GP-relative
	sections by name; use SHF_MIPS_GPREL instead.
	(ELF_DYNAMIC_INTERPRETER): Adjust to use /usr/lib32/libc.so.1 for
	the N32 ABI.
	(mips_elf_create_dynamic_sections): Don't muck about with section
	alignments and such on IRIX6.
	(mips_elf_adjust_dynamic_symbol): Use MIPS_ELF_STUB_SECTION_NAME.
	(mips_elf_size_dynamic_sections): Likewise. Adjust to handle the
	fact that ELF_DYNAMIC_INTERPRETER is no longer a constant.  Use
	bfd_zalloc rather than bfd_alloc and memset.
	(mips_elf_finish_dynamic_symbol): Use MIPS_ELF_STUB_SECTION_NAME.
	Don't assert the existence of .rld_map on IRIX6.
	(mips_elf_finish_dynamic_sections): Use MIPS_ELF_STUB_SECTION_NAME.

	* elf32-mips.c (mips_elf_adjust_dynindx): Remove.
	(mips_elf_size_dynamic_sections): Use _bfd_elf_link_adjust_dynindx
	instead.

1999-06-26  Mark Mitchell  <mark@codesourcery.com>

	* elf32-mips.c (mips_elf_swap_msym_in): New function.
	(mips_elf_swap_msym_out): New function.
	(mips_elf_create_msym_section): Likewise.
	(MIPS_ELF_MSYM_SECTION_NAME): New macro.
	(_bfd_mips_elf_final_write_processing): Set sh_link for .msym.
	(_bfd_mips_elf_section_from_shdr): Reject an SHT_MIPS_MSYM
	section not named .msym.
	(_bfd_mips_elf_fake_sections): Use MIPS_ELF_MSYM_SECTION_NAME, not
	.msym directly.  Set appropriate attributes for the .msym
	section.
	(mips_elf_link_hash_entry): Add min_dyn_reloc_index field.
	(mips_elf_link_hash_newfunc): Clear it.
	(mips_elf_create_dynamic_sections): Create the .msym section
	on IRIX6.
	(mips_elf_size_dynamic_sections):  Allocate space for the
	.msym section.  Add a DT_MIPS_MSYM entry.
	(mips_elf_finish_dynamic_symbol): Write out a .msym entry for
	the symbol.
	(mips_elf_finish_dynamic_sections): Assign a value for
	DT_MIPS_MSYM.  Add .msym entries for the section symbols as well.

	* elf32-mips.c (irix_compat_t): New enumeration.
	(ABI_N32_P): New macro.
	(IRIX_COMPAT): Likewise.
	(SGI_COMPAT): Implement in terms of IRIX_COMPAT.
	(mips_elf_relocate_section): Fix typo.

1999-06-26  Mumit Khan  <khan@xraylith.wisc.edu>

	* peicode.h (coff_swap_scnhdr_out): Mark non readonly BFD sections
	as writable PE sections.

1999-06-26  David Mosberger  <davidm@hpl.hp.com>

	* dwarf2.c (struct arange): New type.
	(struct comp_unit): Replace LOW and HIGH by member ARANGE.
	(arange_add): New function.
	(decode_line_info): Keep track of address ranges that a compilation
	unit covers.
	(comp_unit_contains_address): Return true if address is contained
	in _any_ of the address ranges associated with a compilation unit.
	(_bfd_dwarf2_find_nearest_line): Call comp_unit_find_nearest_line
	on the first comp_unit that contains the address.

1999-06-26  David Mosberger  <davidm@hpl.hp.com>

	* dwarf2.c (struct dwarf2_debug): Add member dwarf_line_buffer.
	(decode_line_info): Add variable STASH and initialize it to point
	to the per-bfd dwarf2_debug info.  Remove static variable
	dwarf_line_buffer and use stash->dwarf_line_buffer in its place.

1999-06-26  Ian Lance Taylor  <ian@zembu.com>

	* elflink.h (elf_link_output_extsym): It's OK for a -Bsymbolic
	shared library to have an undefined symbol.

	From Franz Sirl <Franz.Sirl-kernel@lauterbach.com>:
	* elf32-ppc.c (ppc_elf_relocate_section): Fix last patch.

Thu Jun 24 20:59:11 1999  Jeffrey A Law  (law@cygnus.com)

	* elf-hppa.c (elf_hppa_final_write_processing): New function.
	* elf32-hppa.c: Remove everything related to symbol extension
	sections & records.  Use the common elf_hppa_final_write_processing.

1999-06-22  Mark Mitchell  <mark@codesourcery.com>

	* elflink.h (size_dynamic_sections): Use user-specified init/fini
	functions instead of _init/_fini if requested.

1999-06-23  Ian Lance Taylor  <ian@zembu.com>

	* elf.c (bfd_section_from_shdr): Avoid crashing on a bogus sh_link
	field.

1999-06-22  Ian Lance Taylor  <ian@zembu.com>

	From Franz Sirl <Franz.Sirl-kernel@lauterbach.com>:
	* elf32-ppc.c (ppc_elf_size_dynamic_sections): Set unused dynindx
	field to 0, not -1.
	(ppc_elf_finish_dynamic_sections): Check for positive section
	dynindx field, rather than comparing against -1.
	(ppc_elf_relocate_section): Only return false if undefined_symbol
	or reloc_overflow fail, not always upon encountering an error.

1999-06-22  Mark Mitchell  <mark@codesourcery.com>

	* elflink.h (link_read_relocs): Explicitly cast external_relocs to
	bfd_byte * before performing pointer arithmetic.

Tue Jun 22 13:06:25 1999  Jeffrey A Law  (law@cygnus.com)

	* elf-hppa.h: New file.  Common stuff for elf32 and elf64 PA
	support.
	* elf32-hppa.c: Include elf-hppa.h.
	(ARCH_SIZE): Define.
	(elf_hppa_reloc_type_lookup): Delete.  Found in the common code
	now.
	(elf32_hppa_info_to_howto): Similarly.
	(elf_hppa_howto_table): Similarly.
	(elf_hppa_reloc_type_lookup): Similarly.
	(hppa_elf_gen_reloc_type): Similarly.
	* elf32-hppa.h (ELF_HOWTO_TALBE, N_PARISC_RELOCS): Delete.

1999-06-22  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_final_link_relocate): Catch overflow
	handling R_V850_22_PCREL relocation.

1999-06-21  Ian Lance Taylor  <ian@zembu.com>

	* coff-arm.c (arm_emit_base_file_entry): Explicitly declare return
	type.

Sun Jun 20 14:13:57 1999  Richard Henderson  <rth@cygnus.com>

	* section.c (_bfd_strip_section_from_output): Ignore sections
	DISCARDed by the link script.

1999-06-19  Ian Lance Taylor  <ian@zembu.com>

	* elflink.h (elf_link_remove_section_and_adjust_dynindices):
	Remove unused local variable spp.

	* xcofflink.c (bfd_xcoff_size_dynamic_sections): Don't crash if
	the entry symbol is not set.

Fri Jun 18 04:24:57 1999  Richard Henderson  <rth@cygnus.com>

	* elf64-alpha.c (elf64_alpha_relocate_section): Don't adjust
	GPDISP or LITUSE in a relocatable link.

Thu Jun 17 21:24:43 1999  J"orn Rennecke <amylaar@cygnus.co.uk>

	* dwarf1.c (alloc_dwarf1_unit): Allocate using bfd_zalloc.
	* (alloc_dwarf1_func): Likewise.

Wed Jun 16 03:09:57 1999  Jeffrey A Law  (law@cygnus.com)

	* libhppa.h: Fix various formatting errors.
	(assemble_3); Rewrite using CATENATE.
	(assemble_17): Fix various bugs.

1999-06-16  Nick Clifton  <nickc@cygnus.com>

	* elf32-mcore.c (R_MCORE_RAW): Fix definition.

1999-06-15  Richard Henderson  <rth@cygnus.com>

	* section.c (SEC_SHORT): Define.
	* bfd-in2.h: Rebuild.

1999-06-13  Mark Mitchell  <mark@codesourcery.com>

	* elflink.h (elf_link_remove_section_and_adjust_dynindices):
	Remove abfd parameter.  Use _bfd_strip_section_from_output.
	(bfd_elf_size_dynamic_sections): Adjust callers accordingly.

	* elf-bfd.h (_bfd_elf_link_adjust_dynindx): New function.
	* elflink.c (_bfd_elf_link_adjust_dynindx): Define it.
	* elflink.h (elf_link_remove_section_and_adjust_dynindices): New
	function.
	(bfd_elf_size_dynamic_sections): Use it.

1999-06-13  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* elf32-i386.c (elf_howto_table): Change R_386_PC8 from
	complain_overflow_bitfield to complain_overflow_signed.

1999-06-13  Mark Mitchell  <mark@codesourcery.com>

	* elflink.h (elf_link_read_relocs_from_section): New function,
	split out from ...
	(elf_link_read_relocs): Here.  Use it for both relocation
	sections.

1999-06-12  Mark Mitchell  <mark@codesourcery.com>

	* elfcode.h (elf_slurp_reloc_table_from_section): Don't assume
	asect->reloc_count is valid.

1999-06-12  Ian Lance Taylor  <ian@zembu.com>

	* elf32-mips.c (mips_elf32_section_processing): Permit a
	SHT_MIPS_REGINFO section to have a size of 0.

1999-06-12  David O'Brien  <obrien@freebsd.org>

	* config.bfd (alpha*-*-freebsd*): New target.
	(i[3456]86-*-freebsd*): Now defaults to ELF.

1999-06-11  Ian Lance Taylor  <ian@zembu.com>

	* reloc.c (_bfd_relocate_contents): Permit bitfield relocations to
	wrap if the relocation covers the high bit of an address.

	* dwarf2.c (decode_line_info): Remove unused variable first_time.

1999-06-10  Jakub Jelinek  <jj@ultra.linux.cz>

	* elf64_sparc.c (sparc64_elf_relocate_section): Use R_SPARC_max_std
	instead of R_SPARC_max.
	(sparc64_elf_info_to_howto): Likewise.
	* elf32_sparc.c (elf32_sparc_relocate_section): Likewise.
	(elf32_sparc_info_to_howto): Likewise; handle vtable relocations.

1999-06-07  Richard Henderson  <rth@cygnus.com>

	* section.c (_bfd_strip_section_from_output): Remove output
	sections with no initial link_order.

1999-06-07  Nick Clifton  <nickc@cygnus.com>

	* elf32-m88k.c (ELF_MAXPAGESIZE): Define.

Mon Jun  7 11:49:43 1999  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* Makefile.am (SOURCE_HFILES): Add missing headers.
	* Makefile.in: Regenerated.

1999-06-06  Mark Mitchell  <mark@codesourcery.com>

	* elf32-mips.c (_bfd_mips_elf_print_private_data): Recognize
	the N32 ABI.

1999-06-04  Franz Sirl <Franz.Sirl-kernel@lauterbach.com>

	* elf32-ppc.c (ppc_elf_relocate_section): Don't barf on out of
	range undefweak symbols.
	* hash.c: Add missing comma after @xref{}
	* linker.c: Likewise.

1999-06-04  Nick Clifton  <nickc@cygnus.com>

	* elfxx-target.h (ELF_MAXPAGESIZE): Produce an error message
	if not defined.
	* elf32-gen.c (ELF_MAXPAGESIZE): Define.
	* elf32-i860.c (ELF_MAXPAGESIZE): Define.
	* elf32-i960.c (ELF_MAXPAGESIZE): Define.
	* elf64-gen.c (ELF_MAXPAGESIZE): Define.

1999-06-04  Ian Lance Taylor  <ian@zembu.com>

	* Makefile.am: Rebuild dependencies.
	(BFD32_BACKENDS): Add dwarf1.lo.
	(BFD32_BACKENDS_CFILES): Add dwarf1.c.
	* Makefile.in: Rebuild.

1999-06-04  Nick Clifton  <nickc@cygnus.com>

	* Makefile.am: Add epoc-arm-pe target.
	* Makefile.in: Regenerate.
	* pe-arm.c: Only redefine interworking function names if they have
	not already been redefined.
	* pei-arm.c: Only redefine interworking function names if they have
	not already been redefined.
	* epoc-pe-arm.c: Redefine interworking function names to avoid a
	name space clash.
	* epoc-pei-arm.c: Redefine interworking function names to avoid a
	name space clash.

1999-06-03  Nick Clifton  <nickc@cygnus.com>

	* elfxx-target.h (ELF_MAXPAGESIZE): Default to 0x1000 not 1.

Fri Jun  4 10:05:11 1999  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* elf.c (elf_fake_sections): Undo change of 1999-05-10.

Fri Jun  4 03:10:49 1999  J"orn Rennecke <amylaar@cygnus.co.uk>

	* elf32-sh.c (sh_elf_relax_delete_bytes): Fix setting of
	start / stop for recalculating of r_addend of R_SH_SWITCH*.

Fri Jun  4 02:53:13 1999  J"orn Rennecke <amylaar@cygnus.co.uk>

	* elf32-sh.c (sh_elf_relax_delete_bytes): Handle R_SH_SWITCH32
	in other text sections.

Fri Jun  4 02:29:34 1999  J"orn Rennecke <amylaar@cygnus.co.uk>

	* libbfd.c (_bfd_generic_verify_endian_match): New function.
	* libbfd-in.h (_bfd_generic_verify_endian_match): Declare.
	* libbfd.h: Regenerate.
	* coff-sh.c (sh_merge_private_data): Delete.
	(coff_bfd_merge_private_bfd_data): Change to
	_bfd_generic_verify_endian_match.
	(elf32-sh.c): bfd_elf32_bfd_merge_private_bfd_data: Define.

1999-06-03  Ulrich Drepper  <drepper@cygnus.com>

	* elf32-arm.h: Fix typo: change ELF_MAXPAGE_SIZE to ELF_MAXPAGESIZE.

1999-06-03  Ian Lance Taylor  <ian@zembu.com>

	* bfd-in.h (bfd_elf32_arm_allocate_interworking_sections): Correct
	prototype.
	(bfd_elf32_arm_process_before_allocation): Likewise.
	* bfd-in2.h: Rebuild.

1999-06-03  David Mosberger  <davidm@hpl.hp.com>

	* dwarf2.c (struct line_info): Add member END_SEQUENCE to keep
	track of end_sequence markers.
	(add_line_info): Add END_SEQUENCE arg.
	(decode_line_info): Don't try to infer lo_pc and hi_pc from the
	debug-line info---it doesn't work right if a compilation unit
	consists of multiple discontiguous code-sequences.  It would be
	worthwhile to optimize for the common case where a compilation
	unit results in a contiguous set of code sequences, but this is
	quite tricky to get right for arbitrary DWARF2 files.
	(lookup_address_in_line_info_table): Don't use the last line entry
	for a compilation unit for anything with an address higher than
	this line entry.  Also, check for end_sequence markers to
	correctly handle discontinuities.
	(_bfd_dwarf2_find_nearest_line): When checking previously loaded
	compilation units, check all compilation units with each->high==0
	just like when reading compilation units.

	* dwarf2.c (decode_line_info): Initialize table->files and
	table->last_line to NULL to avoid segfaults due to random
	values in these members.
	(concat_filename): Check for out-of-range file number before
	indexing filename table.  Segfaults suck.

	* dwarf2.c (decode_line_info): Don't truncate address to least
	significant 32 bits (breaks 64 bit targets).
	(lookup_address_in_function_table): Ditto.
	(comp_unit_contains_address): Ditto.

1999-06-02  Mark Mitchell  <Mark Mitchell <mark@codesourcery.com>>

	* elf32-mips.c (elf_mips_howto_table): Add R_MIPS_JALR.
	* elf64-mips.c (mips_elf64_howto_table_rel): Likewise.
	(mips_elf64_howto_table_rela): Likewise.

	* elfcode.h (elf_slurp_reloc_table_from_section): New function,
	split out from ...
	(elf_slurp_reloc_table): Here.  Use it to handle the case where a
	single section has two associated relocation sections.

1999-06-02  Mark Salter  <msalter@cygnus.com>

	* coffcode.h (coff_set_alignment_hook): Set lma from s_vaddr if
	COFF_WITH_PE defined.

1999-06-02  Nick Clifton  <nickc@cygnus.com>

	* pe-arm.c: Rename global arm interworking functions to avoid name
	collision when all targets BFD is built.
	* pei-arm.c: Ditto.

1999-05-31  Mark Mitchell  <mark@codesourcery.com>

	* elf-bfd.h (elf_backend_data): Remove use_rela_p.  Add
	may_use_rel_p, may_use_rela_p, default_use_rela_p.
	(bfd_elf_section_data): Add use_rela_p.
	* elf.c (bfd_section_from_shdr): Set use_rela_p appropriately.
	(_bfd_elf_new_section_hook): Likewise.
	(elf_fake_sections): Use may_use_rela_p, etc., instead of
	use_rela_p.
	(_bfd_elf_copy_private_section_data): Copy use_rela_p.
	* elfcode.h (write_relocs): Determine whether or not use rela
	relocs based on the relocation section header.
	* elflink.c (_bfd_elf_create_dynamic_sections): Use default_use_rela_p
	instead of use_rela_p.
	* elfxx-target.h (elf_backend_may_use_relp): New macro.
	(elf_backend_may_use_rela_p): Likewise.
	(elf_backend_default_use_rela_p): Likewise.
	(elfNN_bed): Use them.

Wed Jun  2 12:38:49 1999  Miodrag Vallat <miodrag@multimania.com>

	* hosts/alphalinux.h (TRAD_CORE_EXTRA_SIZE_ALLOWED): Expand to 4096.

Tue Jun  1 17:57:58 1999  Mark P. Mitchell  <mitchell@n02.acl.lanl.gov>

	* reloc.c (BFD_RELOC_MIPS_SUB): New relocation.
	(BFD_RELOC_MIPS_GOT_PAGE): Likewise.
	(BFD_RELOC_MIPS_GOT_OFST): Likewise.
	(BFD_RELOC_MIPS_GOT_DISP): Likewise.
	* bfd-in2.h: Regenerated.
	* libbfd.h: Likewise.
	* elf32-mips.c (mips_info_to_howto_rela): New function.
	(USE_REL): Adjust for new conventions.
	(MINUS_ONE): New macro.
	(elf_mips_howto_table): Add R_MIPS_SUB.
	(mips_r): Add entries for MIPS_SUB, MIPS_GOT_PAGE, MIPS_GOT_OFST,
	and MIPS_GOT_DISP.
	(mips_elf_final_write_processing): Set sh_link, not sh_info, for a
	.MIPS.content section.
	(_bfd_mips_elf_fake_sections): Treat all sections that begin
	with .MIPS.content as .MIPS.content sections.  Set
	SHF_MNIPS_NOSTRIP for such section.
	(elf_info_to_howto): Define to mips_info_to_howto_rela.
	* elf64-mips.c (mips_r):  Add entries for MIPS_SUB, MIPS_GOT_PAGE,
	MIPS_GOT_OFST, and MIPS_GOT_DISP.

Wed Jun  2 11:51:12 1999  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* vms-misc.c (_bfd_vms_hash_newfunc): Fix use of uninitialized
	variable.

	* elf32-m68k.c (elf_m68k_adjust_dynamic_symbol): Avoid ambigous
	`else'.

1999-05-30  Philip Blundell  <philb@gnu.org>

	* elf32-arm.h (elf32_arm_relocate_section): Reinstate change of
	1993-03-25 (!!).  Take into account the bitmasks for the reloc so
	the addend does not overflow into the rest of the word.

1999-05-29  Nick Clifton  <nickc@cygnus.com>

	* bfd-in.h: Amend prototype for
	bfd_elf32_arm_process_before_allocation .
	* bfd-in.h: Regenerate.

	* elfarm-oabi.c (NUM_ELEM): New macro: Compute the number of
	elements in a fixed sized array.
	(ARM_ELF_ABI_VERSION): Define.
	(ARM_ELF_OS_ABI_VERSION): Define.
	(R_ARM_THM_ABS5): Fix rightshift and size.
	(R_ARM_THM_PC22): Fix size.
	(R_ARM_PLT32): Define Howto.
	(find_howto): New function: Locate a howto based on a reloc
	number.
	(elf32_arm_info_to_howto): Use find_howto if necessary.
	(elf32_arm_reloc_map): Change type of field bfd_reloc_val to
	bfd_reloc_code_real_type.
	(elf32_arm_reloc_map[]): Add entries for BFD_RELOC_VTABLE_INHERIT
	and BFD_RELOC_VTABLE_ENTRY.
	(elf32_arm_reloc_type_lookup): Use find_howto if necessary.

	* elfarm-nabi.c (NUM_ELEM): New macro: Compute the number of
	elements in a fixed sized array.
	(ARM_ELF_ABI_VERSION): Define.
	(ARM_ELF_OS_ABI_VERSION): Define.
	(R_ARM_THM_ABS5): Fix rightshift and size.
	(R_ARM_THM_PC22): Fix size.
	(elf32_arm_info_to_howto_rel): Rename to elf32_arm_info_to_howto.
	(elf32_arm_reloc_map): Change type of field bfd_reloc_val to
	bfd_reloc_code_real_type.

	* elf32-arm.h (struct elf32_arm_link_hash_table): Add new field:
	no_pipeline_knowledge.
	(elf32_arm_link_hash_create): Initialise new field to zero.
	(bfd_elf32_arm_process_before_allocation): Add new paraemter:
	no_pipeline_knowledge.  Use this parameter to initialise the field
	in the globals data structure.
	(elf32_arm_final_link_relocate): Only add in pipeline offset if
	no_pipeline_knowledge is false and the binary is from an old
	toolchain.
	(elf32_arm_merge_private_data): Generate an error if an attempt is
	made to link together big endian and little endian code.
	(elf32_arm_post_process_headers): New function:  Initialise the
	EI_OSABI and EI_ABIVERSION fields of the newly created ELF program
	header.
	(elf_backend_post_process_headers): Define.

1999-05-28  Nick Clifton  <nickc@cygnus.com>

	* elf-bfd.h (struct elf_backend_data): Add new field:
	elf_backend_post_process_headers.

	* elfxx-target.h (elf_backend_post_process_headers): Define to
	NULL if not already defined.
	(elfNN_bed): Initialise elf_backend_post_process_headers field.

	* elf.c (prep_headers): Set the EI_OSABI and EI_ABIVERSION fields
	to zero.
	(_bfd_elf_compute_section_file_positions): Call
	elf_backend_post_process_headers if defined.

1999-05-28  Ian Lance Taylor  <ian@zembu.com>

	* configure.in: Check whether getuid and getgid exist.
	* archive.c: Define getuid and getgid as macros if HAVE_GETUID or
	HAVE_GETGID are not defined, respectively.
	(bfd_write_armap): Don't special case on _WIN32 for getuid and
	getgid.
	* configure.host: Set ac_cv_func_get{ug}id for *-*-windows*.
	* configure, config.in: Rebuild.

1999-05-28  Martin Dorey  <mdorey@madge.com>

	* elf32-i960.c: New file.
	* elf.c (prep_headers): Handle bfd_arch_i960.
	* targets.c (bfd_target_vector): Add &bfd_elf32_i960_vec.
	* config.bfd (i960-*-elf*): New target.
	* configure.in (bfd_elf32_i960_vec): New target vector.
	* Makefile.am (BFD32_BACKENDS): Add elf32-i960.lo.
	(BFD32_BACKENDS_CFILES): Add elf32-i960.c.
	* Makefile.in, aclocal.m4, configure: Rebuild.

1999-05-27  Nick Clifton  <nickc@cygnus.com>

	* elfarm-oabi.c (elf32_arm_howto_table): Add entry for
	R_ARM_PLT32.
	(find_howto): New function: Find entries in the
	elf32_arm_howto_table.
	(elf32_arm_info_to_howto): Use find_howto if the entry cannot be
	computed simply.
	(elf32_arm_reloc_type_lookup): Add lookup for
	BFD_RELOC_ARM_PLT32.

1999-05-25  Philip Blundell  <pb@nexus.co.uk>

	* bfd/elf32-arm.h (elf32_arm_link_hash_newfunc): New function.
	(elf32_arm_link_hash_table_create): Use above function as the
	constructor for hash table entries.
	(elf32_arm_relocate_section): Avoid crash when there is no output
	section.
	(elf32_arm_final_link_relocate): New parameter h.
	(elf32_arm_relocate_section): Pass symbol hash entry to above
	routine.
	(elf32_arm_gc_sweep_hook, elf32_arm_check relocs): Correct
	comments.

1999-05-25  Catherine Moore  <clm@cygnus.com>

	* coff-arm.c (coff_arm_relocate_section): Don't emit
	base file entries for pc-relative values.

1999-05-25  DJ Delorie  <dj@cygnus.com>

	* peicode.h (coff_swap_sym_in): When we create the actual section
	to reflect the not-there section C_SECTION symbols refer to,
	change the symbol class to C_STAT as the section is now really
	there.

1999-05-24  Philip Blundell  <pb@nexus.co.uk>

	* elf32-arm.h (elf32_arm_relocate_section): Undo change of
	1999-03-25.

Mon May 17 13:35:35 1999  Stan Cox  <scox@cygnus.com>

	* coff-arm.c (_bfd_coff_arm_set_private_flags): Changed
	F_PIC_INT to F_PIC.
	* coffcode.h (coff_set_arch_mach_hook): Added F_ARM_2a, and
	F_ARM_3M labels.  Changed F_PIC_INT to F_PIC.

1999-05-16  Nick Clifton  <nickc@cygnus.com>

	* coff-mcore.c (in_reloc_p): Reinstate.

1999-05-15  Nick Clifton  <nickc@cygnus.com>

	* reloc.c (BFD_RELOC_MCORE_RVA): Define.
	* bfd-in2.h: Regenerate.
	* coff-mcore.c (in_reloc_p): Remove defintion.
	(mcore_coff_howto): Add IMAGE_REL_MCORE_RVA.
	(mcore_coff_reloc_type_lookup): Map BFD_RELOC_RVA to
	IMAGE_REL_MCORE_RVA.
	(coff_mcore_rtype_to_howto): Add special processing for
	IMAGE_REL_MCORE_RVA.
	(coff_mcore_relocate_section): Add support for
	IMAGE_REL_MCORE_RVA.
	* elf32-mcore (mcore_elf_howto_): Add R_MCORE_RELATIVE.
	(mcore_elf_reloc_type_lookup): Map BFD_RELOC_RVA to
	R_MCORE_RELATIVE.
	(mcore_elf_relocate_section): Delete redundant case labels.

Fri May 14 10:59:55 1999  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* elf32-arm.h (elf32_arm_relocate_section): Fix operator
	precedence between bit-and and comparison.

Thu May 13 09:45:23 1999  Joel Sherrill (joel@OARcorp.com)

	* config.bfd (i[3456]86*-*-rtems*, m68k*-*-rtems*): Added to
	list of target formats (targ_selvecs).
	(i[3456]86*-*-rtemself*, mips*el-*-rtems*): New targets.
	(powerpcle*-*rtems*, sh-*-rtemself*): New targets.

1999-05-10  DJ Delorie  <dj@cygnus.com>

	* ecoff.c (_bfd_ecoff_write_armap): give the symtab element a
	reasonable mode until "ar x" is smart enough to skip it (fixes
	gcc/libgcc.a builds on mips-ecoff targets

	* coffcode.h (styp_to_sec_flags): Explain how COMDATs are supposed
	to work.  Hack to support MS import libraries, which use different
	COMDAT types than GNU.
	(coff_slurp_symbol_table): C_SECTION symbols are local; they refer
	to implied zero-length sections (see peicode below)
	* coffgen.c (coff_get_normalized_symtab): Properly read long MS
	filename symbols, which use one *or more* auxents.
	* coffswap.h (coff_swap_aux_in): ditto
	* peicode.h (coff_swap_sym_in): Build the implied zero-length
	sections

Tue May 11 15:51:58 1999  Jeffrey A Law  (law@cygnus.com)

	* elf32-v850.c (v850_elf_howto_table): Make partial_inplace false
	for all relocations.

1999-05-10  Catherine Moore  <clm@cygnus.com>

	* bfd-in.h (bfd_arm_allocate_interworking_sections):  Static
	if COFF_IMAGE_WITH_PE.
	(bfd_arm_process_before_allocation): Likewise.
	(bfd_arm_get_bfd_for_interworking): Likewise.
	* coff-arm.c: Likewise.
	* bfd-in2.h: Regenerate.
	* configure.in (armpe_little_vec): Remove coff-arm.lo.
	(armpe_big_vec): Likewise.
	* configure: Rebuild.

1999-05-10  Nick Clifton  <nickc@cygnus.com>

	* elf.c (elf_fake_sections): Check for .rel. as start of rel
	section, not just .rel.  Same for .rela.

1999-05-07  Nick Clifton  <nickc@cygnus.com>

	* coff-mcore.c (coff_mcore_relocate_section): Replace assert about
	endianism with an error message.

Thu May  6 17:09:09 1999  Fred Fish  <fnf@be.com>

	* dwarf2.c (read_abbrevs): Change cast of dwarf_abbrev_buffer
	assignment from "unsigned char *" to "char *".
	(decode_line_info): Likewise for dwarf_line_buffer assignment.

1999-05-05  Catherine Moore  <clm@cygnus.com>

	* coff-arm.c (coff_arm_relocate_section):  Add one to
	address of ARM_RVA32 thumb functions.

1999-05-05  Catherine Moore  <clm@cygnus.com>

	* elf32-m68k.c (elf32_m68k_set_private_flags): New.
	(elf32_m68k_copy_private_bfd_data): New.
	(elf32_m68k_merge_private_bfd_data): New.
	(elf32_m68k_print_private_bfd_data): New.
	(CPU32_FLAG): Define.
	(PLT_CPU32_ENTRY_SIZE): Define.
	(elf_cpu32_plt0_entry): Declare.
	(elf_cpu32_plt_entry): Declare.
	(elf_m68k_adjust_dynamic_symbol): Generate cpu32 plt entries.
	(elf_m68k_finish_dynamic_symbol): Likewise.
	(elf_m68k_finish_dynamic_sections): Likewise.
	(elf_backend_plt_header_size): Remove definition.
	(bfd_elf32_bfd_copy_private_bfd_data): Define.
	(bfd_elf32_bfd_merge_private_bfd_data): Define.
	(bfd_elf32_bfd_set_private_flags): Define.
	(bfd_elf32_bfd_print_private_bfd_data): Define.

Mon May  3 09:24:49 1999  Jeffrey A Law  (law@cygnus.com)

	* som.c (som_fixup_formats): Fix comments for R_SHORT_PCREL_MODE
	and R_LONG_PCREL_MODE.

1999-04-29  Nick Clifton  <nickc@cygnus.com>

	* coff-mcore.c (coff_mcore_relocate_section): Fix typos.

Fri Apr 28 16:36:19 1999  Stan Cox  <scox@cygnus.com>

	* elf32-sh.c (sh_elf_relocate_section): Include relocation addend
	in relocation calculation.

1999-04-26  Tom Tromey  <tromey@cygnus.com>

	* aclocal.m4, configure: Updated for new version of libtool.

1999-04-21  Nick Clifton  <nickc@cygnus.com>

	* coff-mcore.c: Add support for mcore relocs.

1999-04-20  Gavin Romig-Koch  <gavin@cygnus.com>

	* elf32-mips.c (_bfd_mips_elf_print_private_bfd_data): Scrap the
	incorrect use EF_MIPS_xxBITPTRS.

1999-04-18  Ian Lance Taylor  <ian@zembu.com>

	* elf64-alpha.c (elf64_alpha_relax_section): Remove unused local
	variable insn.

	* bfd-in2.h: Rebuild.
	* libbfd.h: Rebuild.

Sat Apr 17 20:55:15 1999  Catherine Moore  <clm@cygnus.com>

	* coff-arm.c (coff_arm_rtype_to_howto): Remove ARM26D transform.
	(coff_arm_relocate_section):  Add ARM26D transform.  Only
	change to ARM26D for relocateable links.

1999-04-16  Gavin Romig-Koch  <gavin@cygnus.com>

	* elf32-mips.c (_bfd_mips_elf_print_private_bfd_data): New.
	(bfd_elf32_bfd_print_private_bfd_data): New.

1999-04-15  Doug Evans  <devans@casey.cygnus.com>

	* elf32-arm.h (elf32_arm_final_link_relocate):  For R_ARM_THM_ABS5,
	refetch addend if USE_REL, add many comments regarding current state.
	For R_ARM_THM_PC22, refetch addend if USE_REL, simplify.
	* elfarm-nabi.c (elf32_arm_howto_table): For R_ARM_THM_ABS5, fix
	size and rightshift.  For R_ARM_THM_PC22, fix bitsize.
	* elfarm-oabi.c (elf32_arm_howto_table): Ditto.

Wed Apr 14 14:33:08 1999  Richard Henderson  <rth@cygnus.com>

	* elf32-mips.c (_bfd_mips_elf_read_ecoff_info): Zero `debug'.
	* elf64-alpha.c (elf64_alpha_read_ecoff_info): Likewise.

1999-04-13  David Mosberger  <davidm@hpl.hp.com>

	* dwarf2.c (decode_line_info): Don't truncate address to least
	significant 32 bits (breaks 64 bit targets).
	(lookup_address_in_function_table): Ditto.
	(comp_unit_contains_address): Ditto.

Tue Apr 13 21:27:19 1999  Catherine Moore  <clm@cygnus.com>

	* coff-arm.c (arm_emit_base_file_entry): New routine.
	(A2T3_OFFSET): Define.
	(T2A3_OFFSET): Define.
	(coff_arm_relocate_section):  Emit base file entries for interworking
	stubs.

1999-04-13  Philip Blundell  <philb@gnu.org>

	* elfarm-nabi.c (elf32_arm_howto_table): Add dummy entries for
	relocs 17 through 19.

Sun Apr 11 01:25:17 1999  Richard Henderson  <rth@cygnus.com>

	* elfcode.h: Remove fnmatch.h.
	* elflink.h (elf_link_assign_sym_version): Call back to ld
	instead of calling fnmatch.

	* config.bfd (i?86-*-beoself): Include pe vecs.

Sun Apr 11 01:14:06 1999  Richard Henderson  <rth@cygnus.com>

	* elf32-i386.c (elf_i386_finish_dynamic_sections): Allow .plt
	to go missing.

1999-04-10  Richard Henderson  <rth@cygnus.com>

	* elf32-i386.c (elf_i386_relocate_section): Mind no_undefined
	when trying to resolve dynamic symbol references.
	* elf32-m68k.c (elf_m68k_relocate_section): Likewise.
	* elf32-mips.c (mips_elf_relocate_section): Likewise.
	* elf32-ppc.c (ppc_elf_relocate_section): Likewise.
	* elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
	* elf64-alpha.c (elf64_alpha_relocate_section): Likewise.
	* elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
	* elflink.h (elf_link_output_extsym): Likewise.

Sat Apr 10 15:12:09 1999  Richard Henderson  <rth@cygnus.com>

	* section.c (_bfd_strip_section_from_output): New function moved from
	* elf64-alpha.c (elf64_alpha_strip_section_from_output): ... here.
	* elf32-i386.c (elf_i386_size_dynamic_sections): Use it.
	* elf32-m68k.c (elf_m68k_size_dynamic_sections): Likewise.
	* elf32-mips.c (mips_elf_size_dynamic_sections): Likewise.
	* elf32-ppc.c (ppc_elf_size_dynamic_sections): Likewise.
	* elf32-sparc.c (elf32_sparc_size_dynamic_sections): Likewise.
	* elf64-sparc.c (sparc64_elf_size_dynamic_sections): Likewise.
	* bfd-in2.h: Update.

1999-04-09  Ian Lance Taylor  <ian@zembu.com>

	* elf64-sparc.c: Fix incorrect calls to bfd_check_overflow.

1999-04-08  Nick Clifton  <nickc@cygnus.com>

	* coff-mcore.c: New File: Support for mcore-pe targets.
	* cpu-mcore.c: New File: Support for mcore targets.
	* elf32-mcore.c: New File: Support for mcore-elf target.
	* pe-mcore.c: New File: Definitions for mcore-pe target.
	* pei-mcore.c: New File: Definitions for mcore-pei target.
	* Makefile.am: Add support for MCore targets.
	* Makefile.in: Regenerate.
	* config.bfd: Add support for MCore targets.
	* configure.in: Add support for MCore targets.
	* configure: Regenerate.
	* archures.c: Add support for MCore architecture.
	* bfd-in2.h: Regenerate.
	* coffcode.h: Add support for mcore-pe targets.
	* elf.c: Add support for mcore-elf target.
	* reloc.c: Add support for MCore relocs.
	* targets.c: Add support for MCore targets.

1999-04-07  Nick Clifton  <nickc@cygnus.com>

	* elfarm-nabi.c (elf32_arm_howto_table): Add entries for
	R_ARM_XPC25 and R_ARM_THM_XPC22.
	(elf32_arm_reloc_map): Remove redundant entries.

1999-04-06  Ian Lance Taylor  <ian@zembu.com>

	* sysdep.h (LC_MESSAGES): Never define.

1999-04-06  Chris Torek  <torek@bsdi.com>

	* reloc.c (bfd_check_overflow): Add addrsize parameter.  Change
	all callers.  Rewrite completely.
	(_bfd_relocate_contents): Rewrite overflow checking.
	* bfd-in2.h: Rebuild.

1999-04-05  Ian Lance Taylor  <ian@zembu.com>

	From Gabriel Paubert <paubert@iram.es>:
	* elf32-ppc.c (ppc_elf_howto_raw): Set R_PPC_GOT16_LO,
	R_PPC_PLT16_LO and R_PPC_SECTOFF_LO to be complain_overflow_dont.
	Set R_PPC_PLT16_HA, R_PPC_SECTOFF_HA and R_PPC_EMB_NADDR16_HA to
	have a rightshift of 16 and use ppc_elf_addr16_ha_reloc.
	* ppcboot.c (ppcboot_vec): Use little endian routines for
	headers.

	* elf.c (elfcore_strndup): Only define if it will be used.
	* elf32-ppc.c (ppc_elf_relax_section): Remove unused locals irel
	and irelend.
	(ppc_elf_check_relocs): Remove unused local i.
	(ppc_elf_gc_mark_hook): Add default case to switch.

	From Bernd Nitzler <nitzler@kagcpd01.ag01.kodak.COM>:
	* srec.c (srec_scan): Accept \r in symbol definitions.
	(srec_object_p): Set HAS_SYMS if we saw any symbols.
	(symbolsrec_object_p): Likewise.

1999-04-04  Don Bowman <don@pixsci.com>

	* config.bfd: Add mips*el-*-vxworks* and mips*-*-vxworks*.

1999-04-04  Ian Lance Taylor  <ian@zembu.com>

	* dwarf1.c (parse_line_table): Remove unused locals last_pc and
	last_line.
	* elf-bfd.h (_bfd_elfcore_section_from_phdr): Declare.
	* elf32-i386.c (elf_i386_gc_mark_hook): Add default case to
	switch.
	* elflink.h (NAME(bfd_elf,size_dynamic_sections)): Remove unused
	local i.
	* syms.c (_bfd_stab_section_find_nearest_line): Remove unused
	local val.

1999-03-31  Nick Clifton  <nickc@cygnus.com>

	* config.bfd: Add support for arm-epoc-pe target.
	* configure.in: Add support for arm-epoc-pe target.
	* configure: Regenerate.
	* targets.c: Add support for arm-epoc-pe target.
	* coff-arm.c: Allow header files to override definition of
	TARGET_UNDERSCORE and USER_LABEL_PREFIX.
	* pe-arm.h: Allow previous header files to override definition of
	TARGET_LITTLE_SYM and TARGET_BIG_SYM.
	* pei-arm.h: Allow previous header files to override definition of
	TARGET_LITTLE_SYM and TARGET_BIG_SYM.
	* epoc-pe-arm.c: New file.  Support arm-epoc-pe target.
	* epoc-pei-arm.c: New file.  Support arm-epoc-pei target.

1999-03-30  Nick Clifton  <nickc@cygnus.com>

	* elf.c (elf_map_symbols): Handle the case where section
	symbols are generated for content-less sections which are
	not mapped to the output file.

	* linker.c: Replace direct references to fields in BFD structure
	with accessor macros.

	* elflink.h: Replace direct references to fields in BFD structure
	with accessor macros.

1999-03-25  Philip Blundell  <pb@nexus.co.uk>

	* config.bfd: Eliminate redundancy in checks for Linux/ARM.

	* elf32-arm.h (elf32_arm_relocate_section): Take the rightshift into
	account when adjusting section symbols during a partial link.

1999-03-24  Nick Clifton  <nickc@cygnus.com>

	* coff-sparc.c (struct coff_reloc_map): Change type of field
	  'bfd_reloc_val' to bfd_reloc_code_real_type.
	* elf-m10200.c (struct mn10200_reloc_map): Ditto.
	* elf-m10300.c (struct mn10300_reloc_map): Ditto.
	* elf32-arc.c (struct arc_reloc_map): Ditto.
	* elf32-d10v.c (struct d10v_reloc_map): Ditto.
	* elf32-d30v.c (struct d30v_reloc_map): Ditto.
	* elf32-fr30.c (struct fr30_reloc_map): Ditto.
	* elf32-m32r.c (struct m32r_reloc_map): Ditto.
	* elf32-sh.c (struct elf_reloc_map): Ditto.
	* elf32-sparc.c (struct elf_reloc_map): Ditto.
	* elf32-v850.c (struct v850_reloc_map): Ditto.
	* elf64-sparc.c (struct elf_reloc_map): Ditto.
	* elfarm-nabi.c (struct elf32_arm_reloc_map): Ditto.
	* elfarm-oabi.c (struct elf32_arm_reloc_map): Ditto.

1999-03-17  Martin Hunt  <hunt@cygnus.com>

	* syms.c (_bfd_stab_section_find_nearest_line): Changed this
	function so source-level assembly works.  If multiple N_SOs
	are seen without and N_FUNs, create an indextable entry with
	a NULL function name.

1999-03-16  Gavin Romig-Koch  <gavin@cygnus.com>

	* elf32-mips.c (_bfd_mips_elf_merge_private_bfd_data) Allow merging
	of certian similar cpus.

1999-03-16  Gavin Romig-Koch  <gavin@cygnus.com>

	* elf32-mips.c (_bfd_mips_elf_final_write_processing):
	Add the 5000.  Change the architecture for the 5400 to mips4.
	(elf_mips_mach): Add r5000.

1999-03-11  Doug Evans  <devans@casey.cygnus.com>

	* cpu-i960.c (scan_i960_mach): Recognize i960:ka_sa and i960:kb_sb.

1999-03-11  Nick Clifton  <nickc@cygnus.com>

	* binary.c (binary_set_section_contents): Generate warning about
	huge file offsets for any section that will occupy file space, not
	just those that are loadable.

1999-02-24  Jim Blandy  <jimb@zwingli.cygnus.com>

	* libbfd.h: Regenerate after Nick Clifton's Feb 17 changes.

1999-02-22  Jim Lemke  <jlemke@cygnus.com>

	* elf32-ppc.c: Add ppc_elf_relax_section() for the ld option mpc860c0.

Mon Feb 22 18:26:51 1999  Ian Lance Taylor  <ian@cygnus.com>

	* elf-bfd.h (ELF_LINK_HASH_REF_REGULAR_NONWEAK): Define.
	* elflink.h: Revert all changes since Feb 16.  Instead:
	(elf_link_add_object_symbols): Set REF_REGULAR_NONWEAK flag if
	appropriate.  Copy it to version symbols.
	(elf_fix_symbol_flags): Set REF_REGULAR_NONWEAK for non ELF
	symbols if appropriate.
	(elf_adjust_dynamic_symbol): Set REF_REGULAR_NONWEAK for weakdef
	symbol if appropriate.
	(elf_link_output_extsym): If symbol is marked as undefined, and
	has no nonweak references, mark it as weak undefined.

Fri Feb 19 16:01:12 1999  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_merge_symbol): When overriding a dynamic
	definition with a weak undefined symbol, set NEEDS_PLT if it is a
	function.
	(elf_link_add_object_symbols): Don't copy the other field if we
	are overridding.

Thu Feb 18 18:07:43 1999  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_merge_symbol): Do not merge any symbol from a
	shared object with a weak undefined symbol.

1999-02-18  Nick Clifton  <nickc@cygnus.com>

	* elfarm-nabi.c: Set partial_inplace back to false.

1999-02-17  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c (TARGET_UNDERSCORE): Re-enable.
	(USER_LABEL_PREFIX): Set to "_".

	The following patches are from: Scott Bambrough
	<scottb@corelcomputer.com>

	* libaout.h (M_ARM6_NETBSD): Set to 143.

	* reloc.c: Add ARM PIC relocs:   BFD_RELOC_ARM_GOT12,
	BFD_RELOC_ARM_GOT32, BFD_RELOC_ARM_JUMP_SLOT, BFD_RELOC_ARM_COPY,
	BFD_RELOC_ARM_GLOB_DAT, BFD_RELOC_ARM_PLT32,
	BFD_RELOC_ARM_RELATIVE, BFD_RELOC_ARM_GOTOFF, BFD_RELOC_ARM_GOTPC.
	* bfd-in2.h: Regenerate.

	* elfarm-nabi.c (elf32_arm_howto_table): Set partial_inplace to
	'true' as REL relocs are now being used.  Add new PIC relocs:
	R_ARM_COPY, R_ARM_GLOB_DAT, R_ARM_JUMP_SLOT, R_ARM_RELATIVE,
	R_ARM_GOTOFF, R_ARM_GOTPC, R_ARM_GOT32, R_ARM_PLT32.

	* elf32-arm.h (elf32_arm_merge_private_bfd_data): Check byte order
	of targets.
	(elf32_arm_final_link_relocate): Change parameters so that entire
	reloc is passed.  Add support for PIC relocs.
	(elf32_arm_relocate_section): Pass entire reloc to
	elf32_arm_final_link_relocate.
	(elf32_arm_check_relocs): Handle new PIC relocs.
	(elf32_arm_adjust_dynamic_symbol): New function.
	(elf32_arm_size_dynamic_sections): New function.
	(elf32_arm_discard_copies): New function.
	(elf32_arm_finish_dynamic_symbol): New function.
	(elf32_arm_finish_dynamic_sections): New function.
	(ELF_MAXPAGE_SIZE): Define.
	(bfd_elf32_bfd_reloc_type_lookup): Define.
	(elf_backend_relocate_section): Define.
	(elf_backend_adjust_dynamic_symbol): Define.
	(elf_backend_create_dynamic_sections): Define.
	(elf_backend_finish_dynamic_symbol): Define.
	(elf_backend_finish_dynamic_sections): Define.
	(elf_backend_size_dynamic_sections): Define.
	(elf_backend_plt_readonly): Define.
	(elf_backend_want_got_plt): Define.
	(elf_backend_want_plt_sym): Define.

Wed Feb 17 12:02:26 1999  Stan Cox  <scox@cygnus.com>

	* elf32-mips.c (_bfd_mips_elf_section_from_shdr): Make reginfo
	sections SEC_LINK_ONCE and SEC_LINK_DUPLICATES_SAME_SIZE.
	(_bfd_mips_elf_fake_sections): Likewise.

Wed Feb 17 12:07:23 1999  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* elfarm-oabi.c (bfd_elf32_arm_allocate_interworking_sections,
	bfd_elf32_arm_get_bfd_for_interworking,
	bfd_elf32_arm_process_before_allocation): Define to avoid clash
	with elfarm-nabi.c.

	* elf32-arm.h: Don't declare elf32_arm_info_to_howto.
	(elf32_thumb_to_arm_stub, elf32_arm_to_thumb_stub,
	elf32_arm_find_nearest_line): Make them static.

Tue Feb 16 22:44:37 1999  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_merge_symbol): Add pflags parameter.  Change all
	callers.  Do not merge a definition from a shared object with a
	weak undefined symbol.
	(elf_link_add_object_symbols): Do not change the symbol type or
	size if the old symbol overrides the new one.

1999-02-08  Nick Clifton  <nickc@cygnus.com>

	* config.bfd: Add support for strongarm target.

Mon Feb  8 11:18:14 1999  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* elf32-m68k.c (reloc_map): Use the correct types for the struct
	fields instead of unsigned char.

Fri Feb  5 00:22:36 1999  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am: Rebuild dependencies.
	* Makefile.in: Rebuild.

Thu Feb  4 22:30:13 1999  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Change AC_PREREQ to 2.13.  Remove AM_CYGWIN32.
	Change AM_EXEEXT to AC_EXEEXT and AM_PROG_INSTALL to
	AC_PROG_INSTALL.  Add comments to uses of AC_DEFINE.
	* acinclude.m4: Add comments to uses of AC_DEFINE.
	* acconfig.h: Remove.
	* configure: Rebuild with current autoconf/automake.
	* aclocal.m4: Likewise.
	* config.in: Likewise.
	* Makefile.in: Likewise.

1999-02-04  DJ Delorie  <dj@cygnus.com>

	* libbfd.c (real_read): don't call fread for zero bytes.  This
	covers up a bug (or misuse of bfd) that's exposed by Solaris.

Thu Feb  4 12:38:10 1999  Stan Cox  <scox@cygnus.com>

	* elf32-mips.c (mips_elf_relocate_section): Insure that the target
	of a jump is in the current 256 MB region.

Thu Feb  4 12:15:38 1999  Ian Lance Taylor  <ian@cygnus.com>

	* format.c (bfd_check_format_matches): Change last patch to only
	take effect for the binary target.

Wed Feb  3 19:40:12 1999  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-i386.c (elf_i386_reloc_type_lookup): Add BFD_RELOC_CTOR.

Wed Feb  3 15:02:44 1999  Catherine Moore  <clm@cygnus.com>

	* elf32-fr30.c (fr30_elf_check_relocs):  New routine.

Tue Feb  2 21:38:28 1999  Ian Lance Taylor  <ian@cygnus.com>

	* format.c (bfd_check_format_matches): If the target was
	previously specified, don't check other targets when checking for
	an archive file.

Tue Feb  2 18:16:43 1999  Catherine Moore  <clm@cygnus.com>

	* elf32-arm.h (elf32_arm_reloc_map):  Removed.
	(elf32_arm_reloc_type_lookup):  Removed
	* elfarm-nabi.c (elf32_arm_reloc_map):  New.
	(elf32_arm_reloc_type_lookup):  New.
	* elfarm-oabi.c (elf32_arm_reloc_map):  New.
	(elf32_arm_reloc_type_lookup):  New.

Mon Feb  1 19:49:21 1999  Catherine Moore  <clm@cygnus.com>

	* elfarm-nabi.c:  Renamed from elf32-arm-newabi.c.
	* elfarm-oabi.c:  Renamed from elf32-arm-oldabi.c
	* Makefile.am:  Use new files.
	* Makefile.in:  Regenerate.
	* configure.in:  Use new files.
	* configure:  Regenerate.

1999-02-01  Nick Clifton  <nickc@cygnus.com>

	* elf32-fr30.c (fr30_elf_gc_mark_hook): New function.
	(fr30_elf_gc_sweep_hook): New function.
	(elf_backend_can_gc_sections): Define.

Mon Feb  1 12:21:47 1999  Catherine Moore  <clm@cygnus.com>

	* targets.c (bfd_target_vector):  Add bfd_elf32_littlearm_oabi_vec
	and bfd_elf32_bigarm_oabi_vec.

Mon Feb  1 11:46:31 1999  Catherine Moore  <clm@cygnus.com>

	* Makefile.am (elf32-arm-oldabi.lo):  New.
	(elf32-arm-newabi.lo):  New.
	* Makefile.in:  Regenerate.
	* config.bfd (thumb-*-elf):  Remove definition of targ_underscore.
	(arm-*-elf):  Likewise.
	(arm-*-oabi):  New.
	(thumb-*-oabi):  New.
	* configure:  Regenerate.
	* configure.in (bfd_elf32_littlearm_oabi_vec):  New.
	(bfd_elf32_bigarm_oabi_vec):  New.
	* elf32-arm-newabi.c:  New.
	* elf32-arm-oldabi.c:  New.
	* elf32-arm.c:  Removed.
	* elf32-arm.h:  New.

Mon Feb  1 11:52:12 1999  Frank Ch. Eigler  <fche@cygnus.com>

	* binary.c (binary_set_section_contents): Omit warnings for
	unloadable sections.

1999-01-31  Michael Meissner  <meissner@cygnus.com>

	* config.bfd (powerpc{,le}-*-vxworks*): Add aliases to
	powerpc{,le}-*-eabi.

1999-01-29  Nick Clifton  <nickc@cygnus.com>

	* dwarf2.c (read_unsigned_leb128): Remove unused variables.
	* dwarf2.c (read_signed_leb128): Remove unused variables.

Fri Jan 29 00:47:21 1999  H.J. Lu  <hjl@gnu.org>

	* elf.c (assign_file_positions_for_segments): Only adjust
	p_align when needed.

Thu Jan 28 20:05:22 1999  Ian Lance Taylor  <ian@cygnus.com>

	* binary.c (binary_set_section_contents): Don't return early for a
	non-loadable section, in case the first section is non-loadable.
	Don't set the low lma for a SEC_NEVER_LOAD section.  From Maciej
	W. Rozycki <macro@ds2.pg.gda.pl>.

1999-01-28  Nick Clifton  <nickc@cygnus.com>

	* elf32-fr30.c (fr30_reloc_map): Add R_FR30_GNU_VTINHERIT and
	R_FR30_GNU_VTENTRY relocs.

Thu Jan 28 11:08:16 1999  Catherine Moore  <clm@cygnus.com>

	* elflink.h (elf_link_output_sym):  Zero syms which are
	part of sections which have been excluded.

Wed Jan 27 13:35:35 1999  Stan Cox  <scox@cygnus.com>

	* coff-arm.c (_bfd_coff_arm_set_private_flags): Changed F_PIC
	to F_PIC_INT.
	* coffcode.h (coff_set_arch_mach_hook): Removed F_ARM_2a and
	F_ARM_3M labels.  Changed F_PIC to F_PIC_INT.

1999-01-27  Nick Clifton  <nickc@cygnus.com>

	* elf32-fr30.c (fr30_elf_howto_table): Fix name of R_FR30_48
	relocation.
	(fr30_final_link_relocate): Use computed value as result of
	relocation.

1999-01-26  Frank Ch. Eigler  <fche@cygnus.com>

	* binary.c (binary_set_section_contents): Emit warning for
	huge file offsets due to widely-dispersed section LMAs.

Mon Jan 18 03:35:35 1999  Ian Lance Taylor  <ian@cygnus.com>

	* elf.c (assign_file_positions_for_segments): If not D_PAGED,
	align first section to largest section alignment, not first
	section alignment.

1999-01-04  Jason Molenda  (jsm@bugshack.cygnus.com)

	* configure.in: Require autoconf 2.12.1 or higher.

Tue Dec 22 15:21:41 1998  Catherine Moore  <clm@cygnus.com>

	* archures.c (bfd_mach_i386_i386_intel_syntax):  Define.
	* bfd-in2.h:  Likewise.
	* cpu-i386.c (bfd_i386_arch_intel_syntax):  New.

1998-12-16  Gavin Romig-Koch  <gavin@cygnus.com>

	* archures.c,bfd-in2.h (bfd_mach_mips4111): New.
	* cpu-mips.c: Add support for and independent 4111.
	* elf32-mips.c (elf_mips_mach): E_MIPS_MACH_4111 -> bfd_mach_mips4111.
	(_bfd_mips_elf_final_write_processing):
	bfd_mach_mips4111 -> E_MIPS_ARCH_3 | E_MIPS_MACH_4111.

1998-12-15  Gavin Romig-Koch  <gavin@cygnus.com>

	* elf32-mips.c (elf_mips_abi_name): New.
	(_bfd_mips_elf_merge_private_bfd_data): Compare EF_MIPS_ABI flags.

1998-12-12  Gavin Romig-Koch  <gavin@cygnus.com>

	* elf32-mips.c (_bfd_mips_elf_final_write_processing):
	Handle bfd_mach_mips4300.

1998-12-11  Ulrich Drepper  <drepper@cygnus.com>

	* elf32-i386.c: Remove leaked development code from patch
	1998-12-10 by Richard Henderson.

1998-12-10  Richard Henderson  <rth@cygnus.com>

	* elf32-i386.c (elf_i386_relocate_section): Don't fail relocations
	in debug sections for symbol defined externally.

Thu Dec 10 10:58:38 1998  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* targets.c (bfd_target_vector): Remove duplicate entry for
	tekhex_vec.

1998-12-09  Nick Clifton  <nickc@cygnus.com>

	* elf32-fr30.c (fr30_elf_howto_table): Set src_mask fields to 0
	since we are using RELAs.

Tue Dec  8 22:15:48 1998  Ian Lance Taylor  <ian@cygnus.com>

	SCO Open Server Release 5 core file support, from Jouke Numan
	<jnuman@hiscom.nl>:
	* sco5-core.c: New file.
	* configure.in (i[3456]86-*-sco3.2v5*): Use sco5-core.lo.
	(sco5-core.lo): Define SCO5_CORE in COREFLAG.
	* Makefile.am: Rebuild dependencies.
	(OPTIONAL_BACKENDS): Add sco5-core.lo.
	(OPTIONAL_BACKENDS_CFILES): Add sco5-core.c.
	* bfd.c (struct _bfd): Add sco5_core_data field to tdata.
	* targets.c (sco5_core_vec): Add to target list if SCO5_CORE.
	* bfd-in2.h, configure, Makefile.in: Rebuild.

Tue Dec  8 19:38:42 1998  Mark Klein  <mklein@dis.com>

	* config.bfd (hppa*-*-mpeix*): New target.
	* configure.in: Add AC_HEADER_DIRENT.
	(hppa*-*-mpeix*): New target.
	* configure.host (hppa*-*-mpeix*): New host.
	* hpux-core.c: Check HOST_HPPAMPEIX.  Use HAVE_DIRENT_H and
	friends rather than just including <sys/dir.h>.
	* som.h (struct som_symbol): Add hppa_priv_level and apto
	tc_data.  Change all users.
	(struct somdata): Add comp_unit field.
	(obj_som_compilation_unit): Define.
	(bfd_som_attach_compilation_unix): Declare.
	* som.c: Check HOST_HPPAMPEIX.
	(struct som_misc_symbol_info): Add new field priv_level.
	(som_object_setup): Add current_offset parameter.  Change all
	callers.
	(setup_sections): Likewise.
	(som_object_p): For EXECLIBMAGIC, read the lst header.
	(som_write_symbol_strings): Add compilation_unit parameter.
	Change all callers.
	(som_finish_writing): Write out compilation_unit.
	(som_bfd_derive_misc_symbol_info): Set priv_level.
	(som_build_and_write_symbol_table): Set xleast field to 3.
	(som_slurp_symbol_table): Set symbol priv_level.
	(bfd_som_attach_compilation_unit): New function.
	(som_bfd_ar_write_symbol_stuff): Set xleast field to 3.  Set
	priv_level into symbol_value.
	* configure, config.in: Rebuild.

Tue Dec  8 16:21:35 1998  Ian Lance Taylor  <ian@cygnus.com>

	* hpux-core.c (hpux_core_core_file_p): Change call to nonexistent
	warning function to call _bfd_error_handler instead.

	* libbfd.c (COERCE32): Cast through unsigned long and long to
	avoid bug in old version of gcc.

	* elf64-alpha.c (elf64_alpha_additional_program_headers): Remove.
	(elf_backend_additional_program_headers): Don't define.

1998-12-08  Nick Clifton  <nickc@cygnus.com>

	* elf32-fr30.c (fr30_final_link_relocate): Fix PC relative
	relocations to include offset of 2 included in the insns, and the
	offset of the relocs within the section.

Wed Dec  2 15:03:59 1998  David Taylor  <taylor@texas.cygnus.com>

	The following changes were made by David Taylor
	<taylor@texas.cygnus.com>, Edith Epstein
	<eepstein@sophia.cygnus.com>, Jim Blandy
	<jimb@zwingli.cygnus.com>, and Elena Zannoni
	<ezannoni@kwikemart.cygnus.com> as part of the project to merge in
	changes originally made by HP; HP did not create ChangeLog
	entries.

	* aclocal.m4, configure, Makefile.in: Rebuilt using latest
	automake macro library.

	* hpux-core.c (hpux_core_core_file_p): this function now
	understands HPUX 10.30 thread info. Yes, the thread stacks can be
	found in the corefile! Also, in hpux_core_core_file_p, if we
	encounter a section with an unknown type, don't punt.  Instead,
	just skip it.  Also, count the number of sections of known type
	that we encounter.  If we encounter at least one good one, then
	we'll declare that the file is a core file.  If we encounter any
	unknown ones but some known ones, then we'll issue a warning (but
	still declare it to be a core file). Also, correctly decide when a
	file is not a core.
	(PROC_INFO_HAS_THREAD_ID): define if CORE_ANON_SHMEM defined.
	(CORE_ANON_SHMEM): define if not defined.
	(hpux_core_struct): add members lwpid and user_tid.
	(core_kernel_thread_id, core_user_thread_id): new macros.
	(make_bfd_asection): use bfd_alloc to allocate room for a copy of
	the name before storing it in the bfd.
	(hpux_core_core_file_p): handle threads.

	* libhppa.h (GET_FIELD): protect against redefinition.
	(HPPA_WIDE): define.
	(GET_FIELD): define.
	(GET_BIT): define.
	(MASK): define.
	(CATENATE): define.
	(ELEVEN): define.
	(sign_extend): redefine.
	(assemble_6): define.
	(assemble_12): rewrite.
	(assemble_16): define.
	(assemble_16a): define.
	(assemble_17): rewrite.
	(assemble_22): define.

1998-12-07  Nick Clifton  <nickc@cygnus.com>

	* elf32-fr30.c (fr30_final_link_relocate): Using signed
	relocations for signed values.

Sun Dec  6 16:30:33 1998  Ian Lance Taylor  <ian@cygnus.com>

	* mipsbsd.c (MY(set_arch_mach)): Make static.
	* aoutx.h (NAME(aout,machine_type)): For bfd_arch_mips, use
	bfd_mach_mips* macros rather than simple numbers.

	COFF weak symbol support, based on patches from Mark Elbrecht
	<snowball3@usa.net>:
	* coffcode.h (coff_slurp_symbol_table): Handle C_WEAKEXT.
	* coffgen.c (coff_renumber_symbols): Handle weak symbols.
	(coff_write_alien_symbol): Likewise.
	* cofflink.c (coff_link_check_ar_symbols): Likewise.
	(coff_link_add_symbols): Likewise.
	(_bfd_coff_link_input_bfd): Likewise.
	(_bfd_coff_write_global_sym): Likewise.

	* elf.c (copy_private_bfd_data): Always initialize the
	includes_phdrs field.

	* elflink.h (elf_fix_symbol_flags): Check for case where a non-ELF
	file defines a symbol first mentioned in an ELF file.

	* bfd-in.h: Always define BFD_HOST_64_BIT and BFD_HOST_U_64_BIT if
	possible, rather than only if BFD64.
	* elflink.h (compute_bucket_count): Just check BFD_HOST_U_64_BIT,
	not __GNUC__.
	* bfd-in2.h: Rebuild.

	* srec.c (srec_set_section_contents): Correct test to avoid
	switching to 4 byte addresses after seeing a second section which
	requires 3 byte addresses.  From Joel Schantz
	<joel.schantz@argosys.boeing.com>.

	* config.bfd (m68*-*-gnu*): New target.  From Aymeric Vincent
	<aymeric.vincent@emi.u-bordeaux.fr>.

1998-12-04  Jim Blandy  <jimb@zwingli.cygnus.com>

	* elf32-ppc.c (ppc_elf_merge_private_bfd_data): Fix logic to
	decide whether the output file is -mrelocatable-lib,
	-mrelocatable, or neither.  (gdb.base/nodebug.exp)

1998-12-03  Nick Clifton  <nickc@cygnus.com>

	* elf32-fr30.c: Add support for R_FR30_48 reloc.
	* reloc.c: Add BFD_RELOC_FR30_48 relocation.
	* bfd-in2.h: Regenerate.
	* libbfd.h: Regenerate

Wed Dec  2 00:58:37 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_adjust_dynamic_symbol): Warn on an attempt to
	link against a dynamic symbol with no type or size.

1998-12-01  Ulrich Drepper  <drepper@cygnus.com>

	* elf32-i386.c (i386_check_relocs) [R_386_32]: Don't emit
	relocation for section which does not get loaded.
	(elf_i386_relocate_section) [R_386_32]: Likewise.

Tue Dec  1 11:33:33 1998  Jim Wilson  <wilson@cygnus.com>

	* coff-h8300.c (h8300_bfd_link_add_symbols): Make reloc_size,
	reloc_count and i long instead of unsigned long.  Handle error
	return from bfd_canonicalize_reloc.

1998-12-01  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_relocate_section): Detect the absence of
	a hash table.

Mon Nov 30 15:28:09 1998  J"orn Rennecke <amylaar@cygnus.co.uk>

	* elf32-sh.c (elf/sh.h): Include.
	sh_reloc_type: Delete.  Changed all references to elf_sh_reloc_type.
	(sh_elf_howto_tab): Add HOWTO for R_SH_SWITCH8.
	(sh_reloc_map): Map BFD_RELOC_8_PCREL to R_SH_SWITCH8.
	(sh_elf_relax_delete_bytes): Handle R_SH_SWITCH8.
	* Makefile.in: Add dependency of elf32-sh.lo on $(INCDIR)/elf/sh.h.

Fri Nov 27 17:51:38 1998  Geoff Keating  <geoffk@ozemail.com.au>

	* elflink.h (compute_bucket_count): Don't allow minsize==0, it
	causes division by zero later on.

Thu Nov 26 11:19:35 1998  Dave Brolley  <brolley@cygnus.com>

	* elf32-fr30.c (fr30_elf_pc9_reloc,fr30_elf_pc12_reloc): Not
	needed.

1998-11-25  DJ Delorie  <dj@cygnus.com>

	* coff-i386.c (i3coff_object_p): Remove hack.  Use new emulation
	hook now.

Tue Nov 24 10:25:27 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-fr30.c (fr30_elf_relocate_section): Call
	fr30_final_link_relocate.
	(fr30_final_link_relocate): New function: Handle I20 and I32
	relocs.
	(fr30_elf_i32_reloc): New function: Handle I32 relocs.
	(fr30_elf_pc9_reloc): New function: Handle 9_PCREL relocs.
	(fr30_elf_pc12_reloc): New function: Handle 12_PCREL relocs.

	* elf32-v850.c (v850_elf_relocate_section): Reset hi16s reloc
	chain to empty.

	The following changes are based on a patch submitted by Gianluca
	Moro <glctr@abc.it>:

	(v850_elf_perform_relocation): Only update a hi16s reloc if it has
	not already been updated.
	(find_remembered_hi16s_reloc): New parameter 'already_found'
	returns state of remembered hi16s reloc.
	(remember_hi16s_reloc): Set 'found' field to false.
	(hi16s_location): Add 'found' field.

1998-11-23  DJ Delorie  <dj@cygnus.com>

	* coff-i386.c (bfd_pe_dll_not_recognized_hack): the linker wants
	to see .DLL files as unrecognized.
	(i3coff_object_p): Sorry, had to hack it to not recognize these
	files (pei-i386) on request.

1998-11-23  DJ Delorie  <dj@cygnus.com>

	* opncls.c (bfd_make_readable): need more cleanup for symbols and
	relents.  Call bfd_check_format to reinitialize.

Fri Nov 20 14:21:36 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-fr30.c (fr30_elf_relocate_section): Remove spurious
	warnings.

Thu Nov 19 14:42:15 1998  Geoffrey Noer  <noer@cygnus.com>

	* aclocal.m4: regenerate
	* configure: regenerate

Tue Nov 17 20:23:35 1998  Richard Henderson  <rth@cygnus.com>

	* elf-bfd.h (struct elf_link_hash_entry): Add vtable_entries_size.
	* elf.c (_bfd_elf_link_hash_newfunc): Clear it.
	* elflink.h (elf_gc_propagate_vtable_entries_used): Copy it, and
	respect it as an upper bound on what memory to reference.
	(elf_gc_smash_unused_vtentry_relocs): Likewise.
	(elf_gc_record_vtentry): Handle as-yet undefined vtables.  Set and
	update vtable_entries_size appropriately.

Tue Nov 17 15:28:31 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-fr30.c (fr30_reloc_type_lookup): Used integers to hold
	reloc number.

Mon Nov 16 22:19:21 1998  DJ Delorie  <dj@cygnus.com>

	* archive.c (bfd_ar_hdr_from_filesystem): support BFD_IN_MEMORY
	bfds; they have no "file" so we fake it.
	* bfd-in2.h: add bfd_make_writable and bfd_make_readable (regen)
	* libbfd.c (bfd_write): Allow writing to BFD_IN_MEMORY bfds by
	resizing the memory buffer.
	* opncls.c (bfd_make_writable): New function; lets you write a
	bfd_create'd bfd to an in-memory buffer.
	(bfd_make_readable): New function; lets you read back that buffer
	as if it were from bfd_openr.  Used to build generated archive
	members (winsup's ld's dlltool)

Mon Nov 16 19:15:19 1998  Dave Brolley  <brolley@cygnus.com>

	* po/bfd.pot: Regenerated.

Mon Nov 16 10:57:06 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (hi16s_location): Replaced fixed size array with
	linked list.

Sun Nov 15 20:28:25 1998  Richard Henderson  <rth@cygnus.com>

	* elf64-alpha.c (elf64_alpha_relax_section): Search for the proper
	element of the gotentry list for local symbols too.
	(elf64_alpha_relocate_section): Unify local and global handling.
	Assert that gotent->use_count > 0.

Sat Nov 14 15:16:01 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in (vms_alpha_vec): Rename from evax_alpha_vec, and
	update for file name changes of July 2, 1998.
	(vms_vax_vec): New.
	* configure: Rebuild.

Thu Nov 12 19:19:54 1998  Dave Brolley  <brolley@cygnus.com>

	* po/bfd.pot: Regenerated.

Tue Nov 10 16:17:06 1998  Geoffrey Noer  <noer@cygnus.com>

	* acinclude.m4, config.bfd: detect cygwin* instead of cygwin32*.
	* aclocal.m4, configure: regenerate

Tue Nov 10 15:13:59 1998  Nick Clifton  <nickc@cygnus.com>

	* elf.c (prep_headers): Add support for bfd_arch_fr30.

Tue Nov 10 13:37:36 1998  Felix Lee  <flee@cygnus.com>

	* acinclude.m4 (BFD_HAVE_SYS_PROCFS_TYPE,
	BFD_HAVE_SYS_PROCFS_TYPE_MEMBER): didn't define macro when value
	was cached.
	* aclocal.m4, configure: regenerated.

Tue Nov 10 14:31:01 1998  Catherine Moore  <clm@cygnus.com>

	* elf32-d10v.c (reloc_type):  Add R_D10V_GNU_VTINHERIT and
	R_D10V_GNU_VTENTRY relocs.
	(elf_d10v_howto_table):  Likewise.
	(d10v_reloc_map d10v_reloc_map):  Likewise.
	(elf32_d10v_gc_mark_hook):  New.
	(elf32_d10v_gc_sweep_hook):  New.
	(elf32_d10v_check_relocs):  New.
	(elf32_d10v_relocate_section):  New.
	(elf_backend_relocate_section):  Define.
	(elf_backend_can_gc_sections):  Define.

Sat Nov  7 18:07:51 1998  Peter Schauer  <peter.schauer@regent.e-technik.tu-muenchen.de>

	* Makefile.am (BFD32_BACKENDS): Move vms files here...
	(BFD64_BACKENDS): ...from here.
	(BFD32_BACKENDS_CFILES): Move vms files here...
	(BFD64_BACKENDS_CFILES): ...from here.
	* Makefile.in: Rebuild.

Wed Nov  4 15:58:48 1998  Nick Clifton  <nickc@cygnus.com>

	* Makefile.am: Add FR30 target.
	* Makefile.in: Add FR30 target.
	* archures.c: Add support for FR30.
	* config.bfd: Add support for FR30.
	* configure.in: Add support for FR30.
	* reloc.c: Add support for FR30 relocations.
	* targets.c: Add support for FR30 relocations.
	* bfd-in2.h: Regenerate.
	* configure: Regenerate.
	* libbfd.h:  Regenerate.
	* cpu-fr30.c: New file.
	* elf32-fr30.c: New file.

Mon Nov  2 14:59:33 1998  Geoffrey Noer  <noer@cygnus.com>

	* configure.in: detect cygwin* instead of cygwin32*
	* configure: regenerate

Sun Nov  1 19:32:28 1998  Jeffrey A Law  (law@cygnus.com)

	* elf-m10300.c (mn10300_elf_relax_section): Do not use alloca,
	use bfd_malloc and free instead and check return value from bfd_malloc.

Sun Nov  1 16:20:35 1998  Ian Lance Taylor  <ian@cygnus.com>

	* libbfd-in.h (_bfd_dwarf1_find_nearest_line): Declare.
	* libbfd.h: Rebuild.

	* elf32-mips.c (mips_elf_dynsym_sec_names): Comment out.
	(SIZEOF_MIPS_DYNSYM_SECNAMES): Likewise.
	(MIPS_TEXT_DYNSYM_SECN): Likewise.
	(_bfd_mips_elf_fake_sections): Don't set sh_info field of a .hash
	section.
	(struct mips_elf_link_hash_table): Remove dynsym_sec_strindex
	field.
	(mips_elf_link_hash_table_create): Don't initialize
	dynsym_sec_strindex.
	(mips_elf_gc_mark_hook): Add default case to avoid warning.
	(mips_elf_size_dynamic_sections): Generate a section symbol for
	every output section.
	(mips_elf_finish_dynamic_sections): Count all sections for
	DT_MIPS_UNREFEXTNO.
	(mips_elf_finish_dynamic_sections): Use dynamic symbols for all
	output sections.

Sun Nov  1 12:46:53 1998  Geoff Keating  <geoffk@ozemail.com.au>

	* elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Allocate two slots
	for later PLT entries in large PLTs.
	(ppc_elf_finish_dynamic_symbol): Allow for the extra slots.

Sat Oct 31 20:10:09 1998  Jeffrey A Law  (law@cygnus.com)

	* elf32-ppc.c (ppc_elf_reload_section): Fix typo.

1998-10-26 15:58  Ulrich Drepper  <drepper@cygnus.com>

	* elf-bfd.h (struct elf_link_hash_entry): Add new field elf_hash_value.
	* elflink.h (elf_collect_hash_codes): New function.  This function is
	called for each exported symbol and we compute the ELF hash value for
	it.
	(compute_bucket_value): New function.  It is called from
	size_dynamic_sections to determine the hash table size.  When we are
	optimizing a better, but slower, algorithm is used.
	(size_dynamic_sections): Call compute_bucket_value.

	* elf.c (bfd_elf_hash): Optimize the hash function a bit.

Mon Oct 19 20:03:21 1998  Catherine Moore  <clm@cygnus.com>

	* elf32-sh.c:  Add HOWTO entries for R_SH_GNU_VTINHERIT and
	R_SH_GNU_VTENTRY.
	(sh_elf_gc_mark_hook):  New.
	(sh_elf_gc_sweep_hook):  New.
	(sh_elf_check_relocs):  New.
	(elf_backend_can_gc_sections):  Define.

Mon Oct 19 16:57:05 1998  Felix Lee  <flee@cygnus.com>

	* acinclude.m4: undo previous gettext change
	* aclocal.m4: rebuild with right version of aclocal.

Mon Oct 19 01:47:21 1998  Felix Lee  <flee@cygnus.com>

	* acinclude.m4, aclocal.m4: move gettext-related fragments from
	aclocal.m4 to acinclude.m4, so they don't get lost.

	* elfcore.h: rewrite for better corefile support.
	* elf.c (elfcore_*): new functions.
	* elf-bfd.h (elf_obj_tdata): new structure members.
	* acconfig.h, acinclude.m4, configure.in: add feature-tests for
	flavor of procfs.
	* aclocal.m4, config.in, configure, Makefile.in: regenerated.

Fri Oct 16 14:07:45 1998  Catherine Moore  <clm@cygnus.com>

	* elf32-m32r.c:  Add HOWTO entries for R_M32R_GNU_VTINHERIT
	and R_M32R_GNU_VTENTRY.
	(elf_backend_can_gc_sections):  Define.
	(m32r_elf_check_relocs):  New.
	(m32r_elf_gc_mark_hook):  New.
	(m32r_elf_gc_sweep_hook):  New.
	(m32r_elf_relocate_section):  Handle VT relocs.

Mon Oct 12 14:18:40 1998  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c (arm_relocate_section): Remove redundant test.

	* bfd-in2.h (struct reloc_howto_struct): Improve comment to make
	cleat that the 'bitsize' field is the size of the bitfield AFTER
	relocation not before.

	* elf32-m32r.c (R_M32R_18_PCREL): Fix size of bitfield.

	* coff-mips.c (mips_relocate_hi): Cope with missing refhi or reflo
	relocs.

Tue Oct  6 09:20:44 1998  Catherine Moore  <clm@cygnus.com>

	* elf32-sparc.c:  Add HOWTO entries for R_SPARC_GNU_VTINHERIT and
	R_SPARC_GNU_VTENTRY.
	(elf32_sparc_check_relocs):  Handle them.
	(elf32_sparc_reloc_type_lookup):  Likewise.
	(elf32_sparc_relocate_section):  Likewise.
	(elf32_sparc_gc_mark_hook):  New.
	(elf32_sparc_gc_sweep_hook):  New.

Mon Oct  5 14:55:30 1998  Jeffrey A Law  (law@cygnus.com)

	* som.c (som_finish_writing): Perform some sanity checks when
	writing an executable or shared library.

Mon Oct  5 12:02:31 1998  Gavin Romig-Koch  <gavin@cygnus.com>

	* dwarf1.c : New file.  Adds _bfd_dwarf1_find_nearest_line.
	* configure.in (elf): Add dwarf1.lo.
	* elf_bfd.h (elf_ob_tdata): Add dwarf1_find_line_info.
	* elf.c (_bfd_elf_find_nearest_line): Add call to
	_bfd_dwarf1_find_nearest_line.
	* elf32-mips.c (_bfd_mips_elf_find_nearest_line):
	Add call to _bfd_dwarf1_find_nearest_line.
	* configure: Rebuilt.

Mon Oct  5 10:06:22 1998  Catherine Moore  <clm@cygnus.com>

	* elflink.h (elf_gc_sections):  Do not allow garbage
	collection if dynamic sections have been created.

Mon Oct  5 09:07:37 1998  Catherine Moore  <clm@cygnus.com>

	* elf32-v850.c: Add HOWTO entries for R_V850_GNU_VTINHERIT and
	R_V850_GNU_VTENTRY.
	(v850_elf_check_relocs):  Handle VTINHERIT and VTENTRY relocs.
	(v850_elf_perform_relocation):  Likewise.
	(v850_elf_final_link_relocate):  Likewise.
	(v850_elf_relocate_section):  Likewise.
	(v850_elf_gc_sweep_hook):  New routine.
	(v850_elf_gc_mark_hook):  New routine.
	(elf_backend_can_gc_sections):  Define.

Mon Oct  5 09:04:25 1998  Catherine Moore  <clm@cygnus.com>

	* elf32-m68k.c (elf_m68k_gc_sweep_hook):  Don't assume
	that dynobj exists.

Sun Oct  4 23:29:34 1998  David Edelsohn  <edelsohn@mhpcc.edu>

	* rs6000-core.c (rs6000coff_core_file_matches_executable_p):
	Declare size as bfd_size_type.
	(rs6000coff_get_section_contents): Declare count as bfd_size_type.

Sun Oct  4 20:38:29 1998  Jeffrey A Law  (law@cygnus.com)

	* cpu-hppa.c (bfd_hppa20_arch): Define.  Link it into the bfd_hppa_arch
	structure.
	* som.c (CPU_PA_RISC2_0): Define.
	(_PA_RISC2_0_ID): Likewise.
	(som_finish_writing): Use CPU_PA_RISC2_0 for the system_id as needed.

Sun Oct  4 21:19:09 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_link_add_object_symbols): When a versioned symbol
	has a base which is already defined, only add the referenced
	symbol to the dynamic symbol table if it is defined or referenced
	by a regular file.

	* elf32-i386.c (elf_i386_info_to_howto_rel): Handle vtable relocs
	correctly.

1998-09-27  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elflink.h (elf_link_add_object_symbols): Undo last change.

Wed Sep 23 16:09:31 1998  Richard Henderson  <rth@cygnus.com>

	* elflink.h (elf_link_add_object_symbols): Don't record a dynamic
	symbol for the indirect alias to a versioned symbol.

Mon Sep 21 12:15:22 1998  Catherine Moore  <clm@cygnus.com>

	* elf32-i386.c (elf32_i386_vtinherit_howto): New.
	(elf32_i386_vtentry_howto): New.
	(elf_i386_reloc_type_lookup):  Return elf32_i386_vtentry_howto
	or elf32_i386_vtinherit_howto  on lookup.

Sun Sep 20 00:48:07 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf32-m68k.c: Include "elf/m68k.h".  Remove definition of enum
	reloc_type.  Rename R_68K__max to R_68K_max.
	(howto_table): Use _bfd_elf_rel_vtable_reloc_fn for a VTENTRY
	reloc.

Sun Sep 20 00:09:25 1998  Chris Torek  <torek@bsdi.com>

	* libbfd.c (bfd_getb32): Rewrite expression to get better code.
	(bfd_getl32, bfd_getb_signed_32, bfd_getl_signed_32): Likewise.

	* libbfd.c (bfd_log2): Cast to bfd_vma before shifting, not
	after.

Sat Sep 19 22:42:23 1998  Doug Rabson  <dfr@nlsystems.com>

	* elflink.h (elf_link_add_object_symbols): Ensure that the warning
	message has a null byte terminator.

Fri Sep 18 14:35:29 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_perform_relocation): Ignore contents of
	word subject to R_V850_32 relocation.

Thu Sep 17 17:20:36 1998  Nick Clifton  <nickc@cygnus.com>

	* dwarf2.c: Add comment describing problem computing line numbers
	for undefined symbols at link time.

Thu Sep 17 16:03:28 1998  Richard Henderson  <rth@cygnus.com>

	* elf64-alpha.c (elf64_alpha_adjust_dynamic_symbol): Don't
	transform a defweak into a plt entry.
	(elf64_alpha_calc_dynrel_sizes): Allow room for secondary
	plt entry references to receive a RELATIVE reloc.
	(elf64_alpha_finish_dynamic_symbol): Fill them in.
	(elf64_alpha_relocate_section): Assert we don't overrun
	the allocated relocation space.

Wed Sep 16 18:03:13 1998  Nick Clifton  <nickc@cygnus.com>

	* elf.c (swap_out_syms): Always treat section symbols as
	special, even if they are attached to a common section.

Wed Sep 16 10:34:13 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_symbol_processing): Move symbols in
	sections with v850 common section attributes into named v850
	common sections.
	(v850_elf_add_symbol_hook): Move symbols in sections with v850
	common section attributes into named v850 common sections.

Wed Sep 16 11:26:49 CDT 1998  Catherine Moore  <clm@cygnus.com>

	* elf32-arm.c (elf32_arm_gc_mark_hook):  Remove print
	statement.

1998-09-15  Geoff Keating  <geoffk@ozemail.com.au>

	* elf32-ppc.c (ppc_elf_relocate_section): Reverse output_offset
	part of Vladimir's change of 1998-08-19.  Make a R_PPC_SDAREL16
	reloc to the wrong section a warning, not an error.  .dynsbss
	is not an output section, so there is no need to check for it.

Tue Sep 15 12:40:05 1998  Catherine Moore  <clm@cygnus.com>

	* elf-bfd.h:  Add argument to elf_backend_get_symbol_type.

Tue Sep 15 08:34:40 1998  Catherine Moore  <clm@cygnus.com>

	* elf.c (swap_out_syms):  Pass type to elf_backend_get_symbol_type.
	* elf32-arm.c:  Add HOWTO entries for R_ARM_GNU_VTINHERIT and
	R_ARM_GNU_VTENTRY.
	(elf32_arm_gc_mark_hook): New.
	(elf32_arm_gc_sweep_hook): New.
	(elf32_arm_check_relocs): New.
	(elf32_arm_final_link_relocate):  Handle VTINHERIT and VTENTRY
	relocations.
	(elf32_arm_relocate_section): Handle VTINHERIT and VTENTRY
	relocations.

1998-09-10  Geoff Keating  <geoffk@ozemail.com.au>

	* elf32-ppc.c (ppc_elf_relocate_section): If dynobj is NULL,
	assume there is no PLT or GOT.

Wed Sep  9 14:24:12 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-arm.c (elf32_arm_find_nearest_line): New function:  just
	like _elf_bfd_find_nearest_line() except that STT_ARM_TFUNC is
	also accepted as a function symbol type.

Mon Sep  7 13:24:03 1998  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* rs6000-core.c (_LONG_LONG):  Define for AIX 4.x only.

Sat Sep  5 20:40:18 1998  Ian Lance Taylor  <ian@cygnus.com>

	* libbfd-in.h (_bfd_nolink_bfd_gc_sections): Correct definition to
	match definition of _bfd_gc_sections field.
	* libbfd.h: Rebuild.

Fri Sep  4 13:54:23 1998  David Miller  <davem@dm.cobaltmicro.com>

	* elf32-sparc.c (elf32_sparc_relocate_section): Properly adjust
	the addend of a dynamic relocation referencing a section.
	* elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
	(sparc64_elf_finish_dynamic_symbol): Fix the PLT relocation offset.

Thu Sep  3 17:28:50 1998  Richard Henderson  <rth@cygnus.com>

	* elflink.h (bfd_elfNN_size_dynamic_sections): Verify that the
	bed has a size_dynamic_sections routine before trying to use it.

Mon Aug 31 14:49:22 1998  Richard Henderson  <rth@cygnus.com>

	* elf32-mips.c (elf_mips_gnu_vtentry_howto): Use
	_bfd_elf_rel_vtable_reloc_fn.

Mon Aug 31 10:23:40 1998  Catherine Moore  <clm@cygnus.com>

	* Makefile.am:  Add elf32-arm.c.
	* Makefile.in:  Rebuild.
	* elf-bfd.h:  Add elf_backend_get_symbol_type.
	* elf.c (swap_out_syms):  If defined, call
	elf_backend_get_symbol_type.
	* elf32-arm.c: Define elf_backend_get_symbol_type.
	(elf32_arm_get_symbol-type):  New routine.
	(record_thumb_to_arm_glue):  Change to use STT_ARM_TFUNC.
	(bfd_elf32_arm_process_before_allocation):  Change to
	check for STT_ARM_TFUNC.
	(elf32_arm_final_link_relocate):  Likewise.
	* elfxx-target.h:  Add elf_backend_get_symbol_type.

Fri Aug 28 19:44:07 1998  Richard Henderson  <rth@cygnus.com>

	* archures.c (bfd_mach_alpha_ev[456]): New.
	* cpu-alpha.c: Rework to match these types.
	* bfd-in2.h: Rebuild.

Fri Aug 28 19:38:53 1998  Richard Henderson  <rth@cygnus.com>

	* elf-bfd.h (_bfd_elf_rel_vtable_reloc_fn): Declare.
	* elf.c (_bfd_elf_rel_vtable_reloc_fn): New.

	* elf32-i386.c (elf_howto_table): Add vtable relocs.
	(elf_i386_reloc_type_lookup): Recognize them.
	(elf_i386_check_relocs): Pass them off to generic code.
	(elf_i386_relocate_section): Ignore them.
	(elf_i386_gc_mark_hook, elf_i386_gc_sweep_hook): New.
	(elf_backend_can_gc_sections): True.

Thu Aug 20 15:03:45 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-arm.c (elf32_thumb_to_arm_stub): Check sym_sec is not NULL
	before looking at owner field.
	(elf32_arm_to_thumb_stub): Ditto.
	(elf32_arm_relocate_section): Compute name before calling
	elf32_arm_final_link_relocate().

Thu Aug 20 11:30:17 1998  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* elf.c: comment and formatting cleanups.
	* elfcore.h: ditto.

Wed Aug 19 15:43:26 1998  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* elfcode.h (elf_object_p): Reject files of header type ET_CORE
	(core files are treated differently than object files).
	* elf-bfd.h (_bfd_elf_write_corefile_contents,
	bfd_elf_mkcorefile): declare.
	* elfxx-target.h (_bfd_elf_write_corefile_contents,
	bfd_elf_mkcorefile): add to bfd_target vector.
	* elfcore.h (elf_core_file_p): save the program header table,
	and set the bfd architecture from the elf file header.
	* elf.c (bfd_elf_mkcorefile): new function.
	(_bfd_elf_write_corefile_contents): new function.
	(assign_file_positions_for_segments): add cases for handling
	PT_NOTE segments.  (assign_file_positions_except_relocs):
	core files should be handled the same as exec files.
	(prep_headers): identify core files as type ET_CORE.
	(copy_private_bfd_data): identify the sections belonging to
	the PT_NOTE segment.

	* elf32-sparc.c (elf32_sparc_final_write_processing):
	add break statement to default case.

1998-08-19  Vladimir N. Makarov  <vmakarov@cygnus.com>

	* elf32-ppc.c (ppc_elf_relocate_section): Check that output
	section (not input) will be in sections ".sbss", ".sbss2",
	".sdata", and ".sdata" for R_PPC_SDAREL16, R_PPC_EMB_SDA2REL,
	R_PPC_EMB_SDA21, R_PPC_EMB_RELSDA.  In all these cases also ignore
	output_offset for correct evaluation of addend.

Tue Aug 18 11:48:12 1998  Catherine Moore  <clm@cygnus.com>

	* elf32-arm.c: Add prefix bfd_ to elf32_arm_get_bfd_for_interworking,
	elf32_arm_allocate_interworking_sections and
	elf32_arm_process_before_allocation.

Tue Aug 18 11:46:00 1998  Nick Clifton  <nickc@cygnus.com>

	* bfd-in.h: Ammend prototype for
	elf32_arm_process_before_allocation to remove surplus third
	argument.

	* bfd-in2.h: Regenerate.

Sat Aug 15 20:55:08 1998  Richard Henderson  <rth@cygnus.com>

	* elf64-alpha.c (elf64_alpha_relax_section): Handle indirect symbols.

Fri Aug 14 09:12:28 1998  Stan Cox  <scox@cygnus.com>

	* aoutx.h (aout_link_input_section_ext): Use the relocation already
	calculated for RELOC_SPARC_REV32 case.

Thu Aug 13 14:02:02 1998  Catherine Moore  <clm@cygnus.com>

	* bfd-in.h:  Add prototypes for elf32_arm_get_bfd_for_interworking,
	elf32_arm_allocate_interworking_sections and
	elf32_arm_process_before_allocation.
	* bfd-in2.h:  Regenerated.
	* elf32-arm.c Define elf32_arm_link_hash_table.
	(insert_thumb_branch): New routine.
	(find_thumb_glue): New routine.
	(find_arm_glue): New routine.
	(record_arm_to_thumb_glue): New routine.
	(record_thumb_to_arm_glue): New routine.
	(elf32_arm_link_hash_table_create): New routine.
	(elf32_arm_get_bfd_for_interworking): New routine.
	(elf32_arm_allocate_interworking_sections) New routine.
	(elf32_arm_process_before_allocation) New routine.
	(elf32_thumb_to_arm_stub): New routine.
	(elf32_arm_to_thumb_stub): New routine.
	(elf32_print_private_bfd_data): Fix typo.
	(elf32_arm_final_link_relocate):  Add argument sym_sec.
	Check for branches to thumb symbols in case R_ARM_PC24.
	Check for branches to arm symbols in case R_ARM_THM_PC22.
	(elf32_arm_relocate_section):  Pass symbol section to
	elf32_arm_final_link_relocate.

Wed Aug 12 19:00:39 1998  Geoff Keating  <geoffk@ozemail.com.au>

	* elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Generate PLT
	entries unless the symbol is defined in the executable; in
	particular, undefined weak symbols get a PLT entry.

Wed Aug 12 14:48:33 1998  Ian Lance Taylor  <ian@cygnus.com>

	* libaout.h: Remove nested comment to avoid warning.

Wed Aug 12 08:10:11 1998 Catherine Moore  <clm@cygnus.com>

	* elf32-arm.c (elf32_arm_final_link_relocate):  Rework
	R_ARM_PC24 relocation.

Tue Aug 11 14:42:26 1998  Catherine Moore  <clm@cygnus.com>

	* elf32-arm.c (elf32_arm_final_link_relocate):  Remove unused
	argument is_local.  Add argument sym_flags.  Check sym_flags
	in R_ARM_ABS32 case.  Include addend for R_ARM_THM_PC22 case.
	(elf32_arm_relocate_section):  Don't pass local sym and pass
	sym_flags to elf32_arm_final_link_relocate.

Mon Aug 10 20:38:39 1998  Richard Henderson  <rth@cygnus.com>

	* elf64-alpha.c (elf64_alpha_calc_dynrel_sizes): Correct last change
	to not count too few relocs for dynamicly linked executables.

Mon Aug 10 15:35:34 1998  Richard Henderson  <rth@cygnus.com>

	* elf64-alpha.c (alpha_elf_dynamic_symbol_p): Never consider
	symbols without a dynamic index dynamic.  Consider all weak
	symbols dynamic.
	(elf64_alpha_strip_section_from_output): Don't assume 1-1
	correspondance between input and output sections.

Mon Aug 10 15:31:39 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elflink.h (elf_gc_common_finalize_got_offsets): For backends
	that use a .got.plt section start the got offset at zero.

Mon Aug 10 17:31:21 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ieee.c (ieee_write_processor): Correct the processor ID written
	out for bfd_arch_m68k, accommodating change of March 25.

Sun Aug  9 20:55:44 1998  Catherine Moore  <clm@cygnus.com>

	* elf32-arm.c (elf32_arm_final_link_relocate):  Rework
	R_ARM_THM_RPC22 relocations.

Sat Aug  8 15:15:30 1998  Richard Henderson  <rth@cygnus.com>

	* elf64-alpha.c (alpha_elf_dynamic_symbol_p): Undef weak symbols
	are always dynamic.
	(elf64_alpha_calc_dynrel_sizes): Allow enough room for RELATIVE
	.got relocs in -Bsymbolic shared objects.

Wed Aug  5 15:48:08 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-arm.c: Add private flags to ELF header.
	(elf32_arm_print_private_bfd_data): New Function.
	(elf32_arm_set_private_flags): New Function.
	(elf32_arm_copy_private_flags): New Function.
	(elf32_arm_merge_private_bfd_data): New Function.

Mon Aug  3 17:10:15 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-sparc.c (elf32_sparc_check_relocs): Permit WPLT30 against
	a local symbol.
	(elf32_sparc_relocate_section): Likewise.

Sun Aug  2 03:19:23 1998  Richard Henderson  <rth@cygnus.com>

	* elf32-ppc.c (ppc_elf_check_relocs): Init sgot to NULL.  Create the
	.got if any relocation referrs to _GLOBAL_OFFSET_TABLE_.
	(ppc_elf_relocate_section): Pull sgot and splt search to the start
	of the function.  Recognize no .plt as static linking.

1998-08-01  Ulrich Drepper  <drepper@cygnus.com>

	* elf32-mips.c (_bfd_mips_elf_section_from_shdr): Don't pass
	".liblist" string through gettext.

Fri Jul 31 16:38:14 1998  Catherine Moore  <clm@cygnus.com>

	* Makefile.am: Add support for elf32-arm.lo.
	* Makefile.in: Rebuild.
	* config.bfd (arm-*-elf):  Define targ_defvec and targ_selvecs.
	(thumb-*-elf): Define targ_defvec and targ_selvecs.
	* configure.in:  Handle bfd_elf32_littlearm_vec and bfd_elf32_bigarm_vec.
	* configure: Regenerate.
	* elf.c: (prep_headers):  Support arch_type of EM_ARM.
	* targets.c:  Support new targets bfd_elf32_bigarm_vec and
	bfd_target bfd_elf32_littlearm_vec.
	* elf32-arm.c:  New file.

Tue Jun 28 19:05:28 1998  Stan Cox  <scox@cygnus.com>

	* libaout.h (M_SPARCLITE_LE): New machine.
	* sunos.c (MACHTYPE_OK): Add machine M_SPARCLITE_LE.
	* aoutf1.h (sunos_set_arch_mach): Add machine M_SPARCLITE_LE.
	(sunos_write_object_contents): Add machine bfd_mach_sparc_sparclite_le
	* aoutx.h (howto_table_ext): Add relocation R_SPARC_REV32.
	(NAME(aout,machine_type)) Add machine bfd_mach_sparc_sparclite_le
	(aout_link_input_section_ext): Add RELOC_SPARC_REV32 support.
	* elf32-sparc.c (_bfd_sparc_elf_howto_table, sparc_reloc_map,
	elf32_sparc_relocate_section): Rename R_SPARC_32LE to be R_SPARC_REV32
	* libbfd.h (bfd_reloc_code_real_names): Rename BFD_RELOC_SPARC_32LE to
	be BFD_RELOC_SPARC_REV32.
	* reloc.c: Ditto.
	* config.bfd (sparc86x-*-aout): New

Fri Jul 24 13:54:19 1998  Nick Clifton  <nickc@cygnus.com>

	* linker.c (_bfd_generic_final_link): Allocate NULL symbol before
	actually mapping the output sections.

Fri Jul 24 11:24:29 1998  Jeffrey A Law  (law@cygnus.com)


	* elf-m10300.c (mn10300_elf_howto): Add R_MN10300_24 entry.
	(mn10300_elf_reloc_map): Similarly.
	(mn10300_elf_final_link_relocate): Handle R_MN10300_24.

Fri Jul 24 12:36:04 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-mips.c (elf_mips_howto_table): Add reloc types used on
	Irix 6.
	(bfd_elf32_bfd_reloc_type_lookup): Add default case.
	* elf64-mips.c: Replace all uses of mips_elf64_reloc_type with
	elf_mips_reloc_type defined in elf/mips.h.

1998-07-24  Ulrich Drepper  <drepper@cygnus.com>

	* elf64-mips.c: Remove reloc_type definition completely.  It's now
	in elf/mips.h.

Thu Jul 23 13:33:19 1998  Doug Evans  <devans@canuck.cygnus.com>

	* elf64-mips.c (mips_elf64_reloc_type): #if 0 out more relocations
	as they are defined in elf/mips.h now.

Thu Jul 23 11:29:43 1998  Jeffrey A Law  (law@cygnus.com)


	* Re-add lost change:
	* elf-m10300.c (elf32_mn10300_link_hash_entry): Add new field
	"movm_stack_size".
	(mn10300_elf_relax_section): Include stack space for register saves
	in the imm8 field of a "call" instruction.
	(compute_function_info): Determine how much stack is allocated by
	the movm instruction.  Fix typo.
	(elf32_mn10300_link_hash_newfunc): Initialize movm_stack_size.

Thu Jul 23 11:38:05 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-sparc.c (elf_backend_got_header_size): Define as 4.
	* elf64-sparc.c (elf_backend_got_header_size): Define as 8.

1998-07-22  Ulrich Drepper  <drepper@cygnus.com>

	* elf32-ppc.c: Change use of pp_reloc_type to elf_ppc_reloc_type.

Wed Jul 22 16:27:18 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-hppa.h: Let ELF header define the enum containing the
	external reloc numbers.
	* elf32-i386.h: Likewise.

1998-07-22 14:57  Ulrich Drepper  <drepper@cygnus.com>

	* elf-m10300.c: Let ELF header now define the macros to get the enum.
	* elf32-mips.c: Likewise.
	* elf32-ppc.c: Likewise.

Wed Jul 22 13:53:52 1998  Nick Clifton  <nickc@cygnus.com>

	* bfd-in2.h: Change type of 'class' parameter to 'unsigned int' in
	bfd_coff_set_symbol_class(), in order to avoid K&R compatability
	prblems.
	* bfd-in.h: Regenerate.
	* coffgen.c (bfd_coff_set_symbol_class): Change type of 'class'
	parameter to 'unsigned int' to avoid K&R compatability problems.

Wed Jul 22 16:43:24 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ieee.c (ieee_find_nearest_line): Change filename_ptr and
	functionname_ptr to be const.  Change line_ptr to be unsigned.

	* coffcode.h (coff_link_output_has_begun): Simplify handling when
	macro is not defined.  Change second parameter from bfd_link_info
	to coff_final_link_info.  Add prototype.
	(coff_final_link_postscript): Simplify handling when macro is not
	defined.  Add prototype.

1998-07-22 13:08  Ulrich Drepper  <drepper@cygnus.com>

	* elf-mn10300.c: Before include system specific ELF header define
	START_RELOC_NUMBERS, RELOC_NUMBER, and END_RELOC_NUMBERS.
	* elf32-mips.c: Likewise.
	* elf32-ppc.c: Likewise.

Wed Jul 22 13:46:51 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elf64-mips.c (mips_elf64_reloc_type): Copy Ulrich's elf32-mips.c
	temporary patch over to elf64-mips.c as well.

1998-07-21  Ulrich Drepper  <drepper@cygnus.com>

	* elf32-mips.c (reloc_type): Temporarily disable definition of
	standard relocation since they are now defined in elf/mips.h.

Tue Jul 21 09:47:00 1998  Catherine Moore  <clm@cygnus.com>

	* elf-m10200.c (mn10200_elf_final_link_relocate):
	Modify range test for case R_MN10200_8.

	* elf-m10300.c (mn10300_elf_final_link_relocate):
	Modify range test for case R_MN10300_8.

Mon Jul 20 18:50:54 1998  Richard Henderson  <rth@cygnus.com>

	* elf-bfd.h (struct elf_backend_data): Add got_ & plt_header_size.
	* elf32-i386.c (elf_backend_got_header_size): Define.
	(elf_backend_plt_header_size): Define.
	* elf32-m68k.c, elf32-mips.c, elf32-ppc.c: Likewise.
	* elf32-sparc.c, elf64-alpha.c, elf64-sparc.c: Likewise.
	* elfxx-target.h: Provide a default of zero.
	* elflink.c (_bfd_elf_create_got_section): Use got_header_size.
	* elflink.h (elf_gc_common_finalize_got_offsets): Likewise.

	* elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Don't remove a PLT
	entry from an executable, even if the plt refcount goes to 0.

Mon Jul 20 12:47:26 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* aoutx.h (NAME(aout,find_nearest_line)): Also remember the
	directory name at the line number.

	* elf.c (_bfd_elf_find_nearest_line): Also consider symbols
	with an unspecified type.

Wed Jul 15 11:20:01 1998  Ian Lance Taylor  <ian@cygnus.com>

	* sunos.c: Add undef of valid to avoid problem on SunOS.

Tue Jul 14 15:30:59 1998  Richard Henderson  <rth@cygnus.com>

	* config.bfd (i?86-pc-beos{pe,elf,}*): Recognize.

Tue Jul 14 11:22:21 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf32-m68k.c (elf_m68k_check_relocs): Also reference count
	R_68K_PCxx and R_68K_xx relocations.  Make sure that
	ELF_LINK_HASH_NEEDS_PLT is always set for a PLT reloc reference.
	(elf_m68k_gc_sweep_hook): Also reference count R_68K_PCxx and
	R_68K_xx relocations.
	(elf_m68k_adjust_dynamic_symbol): Reset the plt offset of a symbol
	that has no plt entry.
	(elf_m68k_relocate_section): Ignore the plt offset in a static
	link.
	* elflink.h (elf_adjust_dynamic_symbol): Reset the plt offset for
	an ignored symbol.
	(elf_gc_common_finalize_got_offsets): Set the got offsets also in
	a static link.

	* elf32-m68k.c (R_68K_GNU_VTINHERIT, R_68K_GNU_VTENTRY): New reloc
	types.
	(howto_table, reloc_map): Add entries for them.
	(elf_m68k_check_relocs): Handle them.  Implement reference
	counting for got and plt entries.
	(elf_m68k_gc_mark_hook, elf_m68k_gc_sweep_hook): New functions.
	(elf_m68k_adjust_dynamic_symbol): Handle unreferenced plt
	symbols.
	(rtype_to_howto_rel, elf_info_to_howto_rel): Delete.
	(elf_m68k_relocate_section): Handle the new reloc types.
	(bfd_elf32_bfd_final_link, elf_backend_gc_mark_hook,
	elf_backend_gc_sweep_hook, elf_backend_can_gc_sections): Define.
	* elflink.h (elf_link_add_object_symbols): When creating an
	indirect reference for symbol versioning also copy the plt
	offset.
	(elf_fix_symbol_flags): When clearing the ELF_LINK_HASH_NEEDS_PLT
	flag also reset the plt offset.
	(elf_link_assign_sym_version): Likewise.
	(elf_gc_common_finalize_got_offsets): Increment the got offset by
	the size of the entry in bytes.
	(elf_gc_allocate_got_offsets): Likewise.

Tue Jul 14 11:18:14 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_gc_sections): Return true rather than falling off
	the bottom.

	* coffgen.c (bfd_coff_set_symbol_class): Call bfd_alloc, not
	xmalloc.

Mon Jul 13 11:06:31 1998  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c: Supress definition of TARGET_UNDERSCORE and add a
	comment describing when it should be enabled.
	Changed definition of USER_LABEL_PREFIX to "", to fall into line
	with GCC sources.

Mon Jul 13 13:06:54 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ieee.c (ieee_slurp_external_symbols): Handle call optimization
	information ATN records.

Fri Jul 10 16:31:06 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ieee.c (ieee_slurp_external_symbols): Select an appropriate
	section for an absolute symbol in a fully linked file.  Based on
	patch from Christian Holland <CHolland@de.lucent.com>.

Wed Jul  8 11:29:56 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* coff-m88k.c (m88k_special_reloc): Don't lose the information
	that a symbol is undefined.

Tue Jul  7 21:47:02 1998  Jeffrey A Law  (law@cygnus.com)

	* som.c (som_bfd_gc_sections): Define.

Mon Jul  6 11:35:50 1998  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c (aoutarm_std_reloc_howto): Do not complain about
	overflows in ARM_26D patches, since they have already been
	implmented.  Patch submitted by Dr. R.J. Black <rjb@dcs.gla.ac.uk>

Sat Jul  4 12:25:36 1998  Ian Lance Taylor  <ian@cygnus.com>

	* coffcode.h (coff_write_object_contents): If we have any long
	section names, call coff_write_symbols even if there are no
	symbols.

Fri Jul  3 13:11:35 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elf.c (copy_private_bfd_data): Only set phdr_included once for a
	PT_LOAD segment, rather than only setting it once for the entire
	file.

	* elf.c (_bfd_elf_make_section_from_shdr): When setting the LMA,
	rather than ignoring every phdr with a p_paddr of 0, ignore all
	the phdrs if they all have a p_paddr of 0.

	* stabs.c (_bfd_write_stab_strings): Check whether the .stabstr
	section was discarded from the link.

Fri Jul  3 14:39:05 1998  J"orn Rennecke <amylaar@cygnus.co.uk>

	* coff-sh.c (sh_insn_uses_freg): Ignore lowest bit of register number.

Fri Jul  3 14:35:48 1998  J"orn Rennecke <amylaar@cygnus.co.uk>

	* coff-sh.c (sh_insns_conflict): Load of fpscr conflicts with
	floating point operations.

Thu Jul  2 18:37:25 1998  Ian Lance Taylor  <ian@cygnus.com>

	* cofflink.c (_bfd_coff_link_input_bfd): Skip undefined global
	function symbols.

Thu Jul  2 14:59:42 1998  Klaus Kaempf  <kkaempf@rmi.de>

	Merge of vax/vms (read-only) support
	* configure.com: Support Vax target.
	* makefile.vms: Support Vax target.
	* vms.h: Renamed from evax.h, merged vax/vms (read-only) support.
	* vms.c: Renamed from evax-alpha.c, merged vax/vms (read-only)
	support.
	* vms-hdr.c: Renamed from evax-emh.c, merged vax/vms (read-only)
	support.
	* vms-gsd.c: Renamed from evax-egsd.c, merged vax/vms (read-only)
	support.
	* vms-tir.c: Renamed from evax-etir.c, merged vax/vms (read-only)
	support.
	* vms-misc.c: Renamed from evax-misc.c, merged vax/vms (read-only)
	support.
	* libbfd.c (real_read): Use unbuffered read on VMS/Vax.
	* targets.c (bfd_target_ovax_flavour): New flavour.
	(vms_alpha_vec): Renamed from evax_alpha_vec.
	(vms_vax_vec): New.
	(target_vector): Update accordingly.
	* config.bfd (alpha*-*-*vms*): Use vms_alpha_vec, not
	evax_alpha_vec.
	(vax*-*-*vms*): New target.
	* Makefile.am: Update for renamed files.  Rebuild dependencies.
	* bfd-in2.h: Rebuild.
	* configure.in, Makefile.in, aclocal.m4: Rebuild.

Thu Jul  2 13:31:55 1998  Ian Lance Taylor  <ian@cygnus.com>

	Based on patch from Matt Semersky <matts@scd.hp.com>:
	* linker.c (_bfd_generic_final_link): Force a trailing NULL
	pointer on abfd->outsymbols.
	(generic_add_output_symbol): Handle NULL sym parameter.

Wed Jul  1 17:05:53 1998  Nick Clifton  <nickc@cygnus.com>

	* elf.c (copy_private_bfd_data): Add support for changing VMA or
	LMA of sections.

Wed Jul  1 16:58:50 1998  Ian Lance Taylor  <ian@cygnus.com>

	* coff-sh.c (sh_relax_delete_bytes): Correct address comparisons
	when handling 32 bit immediate relocs.
	* elf32-sh.c (sh_elf_relax_delete_bytes): Likewise.

Tue Jun 30 09:55:03 1998  Jeffrey A Law  (law@cygnus.com)

	* section.c (STD_SECTION): Account for recently added gc_mark
	field in struct asection.

	* elf-m10300.c (bfd_mn10300_elf_merge_private_bfd_data): New function.
	(bfd_elf32_bfd_merge_private_bfd_data): Define.

Thu Jun 25 18:31:41 1998  Richard Henderson  <rth@cygnus.com>

	ELF Section-level Garbage Collection:
	* bfd.c (bfd_gc_sections): New.
	* aout-adobe.c: Hook to default implementation.
	* aout-target.h, aout-tic30.c, binary.c, bout.c: Likewise.
	* coff-alpha.c, coff-mips.c, coff-rs6000.c, coffcode.h: Likewise.
	* evax-alpha.c, i386msdos.c, i386os9k.c, ieee.c: Likewise.
	* ihex.c, nlm-target.h, oasys.c, ppcboot.c, srec.c: Likewise.
	* tekhex.c, versados.c: Likewise.
	* libbfd-in.h (_bfd_nolink_bfd_gc_sections): New.
	* targets.c (BFD_JUMP_TABLE_LINK): Add _bfd_gc_sections.

	* reloc.c (BFD_RELOC_VTABLE_INHERIT, BFD_RELOC_VTABLE_ENTRY): New.
	(bfd_generic_gc_sections): New.
	* section.c (SEC_KEEP): New.
	(asection): Add gc_mark member.

	* elfcode.h (elf_gc*): New name remappings.
	* elflink.h (elf_link_input_bfd): Don't set contents on stabs
	sections to be excluded.
	(elf_gc_mark, elf_gc_sweep, elf_gc_sweep_symbol): New.
	(elf_gc_propogate_vtable_entries_used): New.
	(elf_gc_smash_unused_vtentry_relocs): New.
	(elf_gc_sections, elf_gc_record_vtinherit, elf_gc_record_vtentry): New.
	(elf_gc_common_finalize_got_offsets): New.
	(elf_gc_allocate_got_offsets, elf_gc_common_final_link): New.
	* elfxx-target.h: Add and default gc hooks.

	* elf-bfd.h (struct elf_link_hash_entry): Swap got_offset/plt_offset
	for unions.
	(struct elf_obj_tdata): Likewise for local_got_offsets.
	* elf.c, elf-i386.c, elf32-m68k.c, elf32-mips.c: Update all uses.
	* elf32-ppc.c, elf32-sparc.c, elf64-alpha.c: Likewise.
	* elf64-sparc.c, elflink.h: Likewise.

	* elf-bfd.h (struct elf_link_hash_entry): Add vtable members.
	(ELF_LINK_HASH_MARK): Define.
	(struct elf_backend_data): Add GC hooks.
	* elf.c (_bfd_elf_link_hash_newfunc): Zero vtable members.

	* elf-m10300.c (mn10300_elf_check_relocs): New.
	(mn10300_elf_gc_mark_hook): New.
	(R_MN10300_GNU_VTINHERIT, R_MN10300_GNU_VTENTRY): New.
	(elf_mn10300_howto, mn10300_reloc_map): Handle them.
	(mn10300_elf_final_link_relocate): Likewise.
	(mn10300_elf_relocate_section): Likewise.
	(elf_backend_can_gc_sections): Define.
	* elf32-mips.c (R_MIPS_GNU_VTINHERIT, R_MIPS_GNU_VTENTRY): New.
	(elf_mips_gnu_vtinherit_howto, elf_mips_gnu_vtentry_howto): New.
	(bfd_elf32_bfd_reloc_type_lookup): Handle them.
	(mips_info_to_howto_rel): Likewise.
	(mips_elf_relocate_section): Likewise.
	(mips_elf_check_relocs): Likewise.
	(mips_elf_gc_mark_hook, mips_elf_gc_sweep_hook): New.
	(elf_backend_can_gc_sections): Define.
	* elf32-ppc.c (R_PPC_GNU_VTINHERIT, R_PPC_GNU_VTENTRY): New.
	(ppc_elf_howto_raw): Handle them.
	(ppc_elf_reloc_type_lookup): Likewise.
	(ppc_elf_relocate_section): Likewise.
	(ppc_elf_check_relocs): Reference count .got and .plt entries.
	Handle new vtable relocs.
	(ppc_elf_adjust_dynamic_symbol): Recognize unused .plt entries.
	(ppc_elf_gc_mark_hook, ppc_elf_gc_sweep_hook): New.
	(elf_backend_can_gc_sections): Define.

Fri Jun 26 10:48:23 1998  Jeffrey A Law  (law@cygnus.com)

	* archures.c (bfd_mach_mn10300): Define.
	* elf-m10300.c: Include elf/mn10300.h
	(elf_mn10300_mach): New function.
	(_bfd_mn10300_elf_final_write_processing): Likewise.
	(_bfd_mn10300_elf_object_p): Likewise.
	(elf_backendfinal_write_processing): Define.
	(elf_backend_object_p): Likewise.

Thu Jun 25 18:31:08 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_perform_relocation): Fix HI16_S
	relocation.

Wed Jun 24 17:17:57 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_bfd_final_link): Loop over input_bfds using the
	link_next field, not the next field.

Sun Jun 21 19:38:39 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elf.c (map_sections_to_segments): Check the section address
	against the phdr size both with and without a modulo of
	maxpagesize.

Fri Jun 19 17:08:18 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-mips.c (mips_elf_size_dynamic_sections): Only strip a
	linker created empty input section if the output section has the
	same name.

	* elflink.h (elf_link_output_extsym): Print an error message if
	_bfd_elf_section_from_bfd_section fails.

	* elf.c (_bfd_elf_section_from_bfd_section): Call bfd_set_error on
	failure.

Tue Jun 16 11:55:55 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elf.c (copy_private_bfd_data): Improve handling of Solaris
	native linker output.  Avoid putting an empty section in more than
	one segment.

Fri Jun 12 13:30:17 1998  Tom Tromey  <tromey@cygnus.com>

	* po/Make-in (all-yes): If maintainer mode, depend on .pot file.
	($(PACKAGE).pot): Unconditionally depend on POTFILES.

Fri Jun 12 13:34:02 1998  Doug Evans  <devans@canuck.cygnus.com>

	* elf.c (swap_out_syms): New arg relocatable_p.
	Don't add section VMA to symbols for relocatable output.
	(_bfd_elf_compute_section_file_positions): Update call to
	swap_out_syms.

Mon Jun  8 15:20:57 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_perform_relocation): Make comparisons
	against 'addend' be signed rather than unsigned.

Sat Jun  6 00:31:21 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-m32r.c: Add prototyps for static functions.

	* coff-arm.c: Add prototypes for static functions.

Fri Jun  5 17:21:51 1998  Nick Clifton  <nickc@cygnus.com>

	* elf.c (elf_sort_sections): Sort by LMA first then VMA, since the
	LMA is used to order sections in a segment.

	* elf32-v850.c: Add prototypes for static functions.
	Change type of addend parameter to bfd_vma in various functions.

Fri Jun  5 18:09:58 1998  Ian Lance Taylor  <ian@cygnus.com>

	* aoutx.h (howto_table_ext): Change RELOC_BASE13 to use
	complain_overflow_signed instead of complain_overflow_bitfield.

Fri Jun  5 15:11:11 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf.c (elf_map_symbols): Don't add section VMA to symbol value
	when comparing against 0.

Wed Jun  3 17:52:49 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (config.status): New target.
	* Makefile.in: Rebuild.

Wed Jun  3 12:18:24 1998  Stan Cox  <scox@equinox.cygnus.com>

	* elf32-sparc.c (elf32_sparc_merge_private_bfd_data): Give an
	error if previous object endianness doesn't match current object.

Tue Jun  2 17:50:59 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_print_private_bfd_data): Call
	_bfd_elf_print_private)bfd_data ().

Tue Jun  2 15:29:35 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_merge_symbol): Don't always set type_change_ok
	and size_change_ok.
	(elf_link_add_object_symbols): Set type_change_ok and
	size_change_ok before calling elf_merge_symbol.

	* elf32-mips.c (mips_elf_relocate_section): If we issue an
	undefined symbol error, don't also issue an overflow error.

Tue Jun  2 13:51:00 1998  Geoff Keating  <geoffk@ozemail.com.au>

	* elf32-ppc.c (ppc_elf_relocate_section): The target of an
	R_PPC_LOCAL24PC relocation should be local; if not, print an error
	message instead of crashing.

Mon Jun  1 18:23:12 1998  Yuli Barcohen  <yuli.barcohen@telrad.co.il>

	* archures.c (bfd_mach_cpu32): Define.
	(bfd_default_scan): Add case for 68060.  Fix 68332 case to use
	bfd_mach_cpu32.
	* cpu-m68k.c (arch_info_struct): Add m68k:cpu32.
	* ieee.c: Include <ctype.h>.
	(ieee_object_p): Parse out process ID string to make it more
	likely to be acceptable for bfd_scan_arch.
	* bfd-in2.h: Rebuild.

Mon Jun  1 11:12:02 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-m32r.c (m32r_elf_print_private_bfd_data): Also call
	_bfd_elf_print_private_bfd_data() so that the program header will
	be displayed.

Mon Jun  1 12:14:28 1998  Ian Lance Taylor  <ian@cygnus.com>

	* peicode.h (coff_swap_sym_in): Check for C_SECTION rather than
	0x68.  Reindent.  Add some comments.

Fri May 29 09:58:08 1998  Nick Clifton  <nickc@cygnus.com>

	* elf.c (copy_private_bfd_data): Adjust physical address of
	segment in output BFD to contain LMAs of its sections.

Tue May 26 19:37:47 1998  Stan Cox  <scox@equinox.cygnus.com>

	* elf32-sparc.c (_bfd_sparc_elf_howto_table, sparc_reloc_map,
	elf32_sparc_relocate_section): Added R_SPARC_32LE for little
	endian data 32 bit relocations.
	(elf32_sparc_merge_private_bfd_data): Check if linking little
	endian objects with big endian objects.
	(elf32_sparc_object_p): Set bfd_mach_sparc_sparclite_le.
	(elf32_sparc_final_write_processing): Set EF_SPARC_LEDATA in e_flags.
	* libbfd.h (bfd_reloc_code_real_names): Added BFD_RELOC_SPARC_32LE.
	* reloc.c: Same.
	* cpu-sparc.c (arch_info_struct): Added sparc:sparclite_le
	* archures.c (bfd_mach_sparc_sparclite_le): New.
	* bfd-in2.h (BFD_RELOC_SPARC_32LE, bfd_mach_sparc_sparclite_le): New.

Thu May 21 16:59:28 1998  Nick Clifton  <nickc@cygnus.com>

	* peicode.h (add_data_entry): Fix precedence of operators in if ()
	statement.

Tue May 19 18:41:19 1998  Ian Lance Taylor  <ian@cygnus.com>

	* bfd-in.h: Move over patch to bfd-in2.h.

	* reloc.c (bfd_check_overflow): Add casts before shifts which may
	not fit in 32 bits.
	(_bfd_relocate_contents): Likewise.

Mon May 18 14:44:15 1998  Nick Clifton  <nickc@cygnus.com>

	* peicode.h (add_data_entry): If the section has no private data
	then do not create a Data Dictionary entry for it.

Mon May 18 00:09:28 1998  Richard Henderson  <rth@cygnus.com>

	* elf64-alpha.c (elf64_alpha_relax_section): Set again on changes.
	(elf64_alpha_can_merge_gots, elf64_alpha_merge_gots,
	elf64_alpha_size_got_sections): Rewrite, handling multiple got
	subsections during relaxation more correctly.

Thu May 14 14:22:58 1998  Nick Clifton  <nickc@cygnus.com>

	* bfd-in2.h: Add new prototype: bfd_coff_set_symbol_class ().
	Add extra argument to bfd_arm_process_before_allocation ().
	* bfd-in.h: Reflect changes made in bfd-in2.h.
	* coffgen.c (bfd_coff_set_symbol_class): New function.  Set the
	coff class of a BFD symbol.
	* coff-arm.c: Add support for interworking between Thumb code and
	non-interworking aware ARM code.

Sun May 10 22:33:59 1998  Jeffrey A Law  (law@cygnus.com)

	* po/Make-in (install-info): New target.

Thu May  7 17:40:56 1998  Ian Lance Taylor  <ian@cygnus.com>

	* filemode.c: Remove; not used.

	If sysdep.h includes a header file, don't include it again:
	* aix386-core.c: Don't include <stdio.h>, <stddef.h>, or
	<errno.h>.
	* aoutx.h: Don't include <string.h>.  Use "sysdep.h" rather than
	<sysdep.h>.
	* archive.c: Don't include <string.h> or <errno.h>.
	* evax-alpha.c; Don't include <stdio.h>.
	* evax-egsd.c: Likewise.
	* evax-etir.c: Likewise.
	* evax-misc.c: Likewise.
	* evax-emh.c: Likewise.  Also, don't include <sys/types.h>.
	* hppabsd-core.c: Don't include <stdio.h>, <sys/types.h>, or
	<errno.h>.
	* hpux-core.c: Likewise.
	* netbsd-core.c: Likewise.
	* som.c: Likewise.
	* libbfd.c: Don't include <sys/types.h>.
	* nlmcode.h: Don't include <string.h>.
	* osf-core.c: Don't include <string.h> or <stdio.h>.
	* ptrace-core.c: Don't include <stdio.h>, <sys/types.h>,
	<errno.h>, or <unistd.h>.
	* trad-core.c: Don't include <stdio.h> or <sys/types.h>.

Thu May  7 13:12:50 1998  Klaus Kaempf  <kkaempf@progis.de>

	* configure.com: If the version number can not be found in
	configure.in, set it to "unknown" rather than "2.8.1".

Wed May  6 09:46:05 1998  Gavin Koch  <gavin@cygnus.com>

	* elf32-mips.c (elf_mips_mach): New.
	(_bfd_mips_elf_object_p): Use elf_mips_mach.
	(_bfd_mips_elf_final_write_processing): Use the names
	of machines, rather than the numbers.  Set both the ARCH
	and MACH in e_flags.  Handle a few more specific machines.
	(_bfd_mips_elf_merge_private_bfd_data): Merge both
	EF_MIPS_ARCH and EF_MIPS_MACH.

Tue May  5 21:01:53 1998  Richard Henderson  <rth@cygnus.com>

	* syms.c (bfd_is_local_label): Revert last change.
	* srec.c (srec_write_symbols): Discard debugging symbols.

Tue May  5 23:36:06 1998  Ian Lance Taylor  <ian@cygnus.com>

	* som.c: Include <ctype.h>.
	* som.h: Don't include sysdep.h.

Tue May  5 18:29:24 1998  Tom Tromey  <tromey@cygnus.com>

	* libbfd.h: Rebuilt.
	* libbfd-in.h: Removed gettext includes and defines.
	* sysdep.h: Moved gettext-related includes and defines here.

Tue May  5 16:47:54 1998  Richard Henderson  <rth@cygnus.com>

	* srec.c (srec_write_symbols): Use bfd_is_local_label rather than
	an ad-hoc test.  Kill bogus #if 0 code.
	* syms.c (bfd_is_local_label): Consider BSF_DEBUGGING symbols local.

Mon May  4 16:10:33 1998  Ian Lance Taylor  <ian@cygnus.com>

	* sunos.c (sunos_check_dynamic_reloc): Don't use the PLT address
	when generating a normal executable for a symbol defined in a
	regular file.  When copying a reloc into the output file, adjust
	the addend for a PC relative reloc against a global symbol.

Mon May  4 10:08:18 1998  Tom Tromey  <tromey@cygnus.com>

	* libbfd.h: Rebuilt.
	* libbfd-in.h (_): Define as dgettext.

Mon May  4 11:02:23 1998  Ian Lance Taylor  <ian@cygnus.com>

	* coff-arm.c (coff_arm_relocate_section): Cast to bfd_signed_vma,
	not signed.
	* peicode.h (pe_saved_coff_bfd_print_private_bfd_data): Use PARAMS
	when declaring parameter types.
	(pe_saved_coff_bfd_copy_private_bfd_data): Likewise.

Wed Apr 29 15:35:03 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config.bfd: If we include any ELF targets in targ_defvec and/or
	targ_selvecs, then add the generic ELF targets to targ_selvecs.
	* elf32-gen.c (dummy): New static const variable.
	(elf_generic_info_to_howto): New static function.
	(elf_generic_info_to_howto_rel): New static function.
	(elf_info_to_howto): Define as elf_generic_info_to_howto.
	(elf_info_to_howto_rel): Define as elf_generic_info_to_howto_rel.
	* elf64-gen.c: Same changes as elf32-gen.c.
	* elfcode.h (elf_object_p): For the generic target, ignore a
	failure of bfd_default_set_arch_mach.  Fix indentation a bit.

Tue Apr 28 20:05:52 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in (WIN32LIBADD): Add -lintl on cygwin32.
	* configure: Rebuild.

Tue Apr 28 12:16:57 1998  Jason Molenda  (crash@bugshack.cygnus.com)

	* config.bfd:  Update OSR5/Unixware patterns.

Mon Apr 27 18:02:24 1998  Richard Henderson  <rth@cygnus.com>

	* elf.c (assign_file_positions_for_segments): Allow for holes
	between sections added by a link script.

Mon Apr 27 11:49:55 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Change version number to 2.9.4
	* configure: Rebuild.

	Based on patch from H.J. Lu <hjl@gnu.org>:
	* elf.c (bfd_elf_get_bfd_needed_list): New function.
	* bfd-in.h (bfd_elf_get_bfd_needed_list): Declare.
	* bfd-in2.h: Rebuild.

Sat Apr 25 20:07:53 1998  Richard Henderson  <rth@cygnus.com>

	* elf64-alpha.c (struct alpha_relax_info): Replace elfsym with other.
	Change all users.

Sat Apr 25 18:29:07 1998  Richard Henderson  <rth@cygnus.com>

	* elf64-alpha.c (struct alpha_relax_info): Add tsec & elfsym members.
	(elf64_alpha_relax_section): Fill them in.
	(elf64_alpha_relax_opt_call): Implement more than a stub.
	(elf64_alpha_add_symbol_hook): Don't set SEC_LOAD or default
	alignment on .scommon.
	(elf64_alpha_merge_gots): Merge use counts as well.

Sat Apr 25 14:07:29 1998  Richard Henderson  <rth@cygnus.com>

	* elf64-alpha.c (elf64_alpha_relax_section): Use the proper section
	for calculating a local symbol's address.
	(elf64_alpha_calc_got_offsets): Skip entries with 0 use count.
	Set the .got's cooked size as well as the raw size.

Fri Apr 24 09:16:00 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_print_private_bfd_data): Add
	internationalisation of printed information.

	* coff-arm.c (coff_arm_print_private_bfd_data): Add
	internationalisation of printed information.

Fri Apr 24 12:09:18 1998  Ian Lance Taylor  <ian@cygnus.com>

	* syms.c (struct indexentry): Change directory_name, file_name,
	and function_name fields to char *.
	(struct stab_find_info): Change cached_file_name field to char *.

Thu Apr 23 08:13:04 1998  Nick Clifton  <nickc@cygnus.com>

	* peicode.h (dir_names): Add missing N_() macros to dir_names array.

Wed Apr 22 13:06:15 1998  Tom Tromey  <tromey@cygnus.com>

	* po/Make-in (MKINSTALLDIRS): Don't look in $(top_srcdir).

Wed Apr 22 17:48:48 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (install-data-local): Make $(includedir).
	* Makefile.in: Rebuild.

Wed Apr 22 13:06:15 1998  Tom Tromey  <tromey@cygnus.com>

	* libbfd-in.h: Use `gettext' and not `dgettext' for now.

Wed Apr 22 12:53:40 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (INCLUDES): Add -I$(srcdir)/../intl -I../intl.
	* Makefile.in: Rebuild.

	* bfd-in2.h: Rebuild for Nick's changes.

Tue Apr 21 23:11:51 1998  Richard Henderson  <rth@cygnus.com>

	* archive.c (_bfd_generic_read_ar_hdr_mag): Fix lossage in last
	change wrt length == max_namelen.

Tue Apr 21 21:19:36 1998  Tom Tromey  <tromey@scribbles.cygnus.com>

	* Many files: Added gettext invocations around user-visible
	strings.
	* libbfd-in.h: Added gettext includes and defines.
	* acconfig.h (ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT, HAVE_STPCPY,
	HAVE_LC_MESSAGES): Define.
	* configure.in: Call CY_GNU_GETTEXT.  Create po/Makefile.in and
	po/Makefile.
	* Makefile.am (SUBDIRS): Added po.
	(POTFILES): New macro.
	(po/POTFILES.in): New target.
	(SOURCE_HFILES): New macro.
	(HFILES): Use it.
	* po/Make-in, po/POTFILES.in, po/bfd.pot: New files.

Tue Apr 21 13:38:18 1998 Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* elfcore.h (bfd_prstatus):  Copy core_prstatus from the first
	NT_PRSTATUS note section encountered, it contains the status of
	the currently executing thread when the core file was written.

Tue Apr 21 10:00:12 1998  Nick Clifton  <nickc@cygnus.com>

	* libcoff.h: Add extra parameter to
	bfd_coff_link_output_has_begun overrideable function.
	* cofflink.c: Pass extra parameter to
	bfd_coff_link_output_has_begun function.
	* bfd-in.h: Add prototypes for exported ARM interworking
	functions.
	* peicode.h: ARM specific code reorganised to conform to BFD
	coding conventions.
	* coffcode.h: ARM specific code reorganised to conform to BFD
	coding conventions.
	* coff-arm.c: Code reorganised to conform to the BFD coding
	conventions.  Global variables have been moved into an ARM
	specific hash table structure and a new function:
	bfd_arm_get_bfd_for_interworking() has been created which is
	called from the linker scripts.

Tue Apr 21 00:11:51 1998  Richard Henderson  <rth@cygnus.com>

	* archive.c (_bfd_generic_read_ar_hdr_mag): Simplify end-of-name test.

	* elf64-alpha.c (elf64_alpha_find_reloc_at_ofs): Renamed from
	elf64_alpha_relax_find_reloc_ofs.  Changed all callers.
	(elf64_alpha_add_symbol_hook): Put small commons in .scommon not .sbss.
	(elf64_alpha_size_got_sections): Don't merge .got sections twice.

Sat Apr 18 01:21:04 1998  Stan Cox  <scox@cygnus.com>

	* config.bfd: Added sparc86x support.

Fri Apr 17 22:29:04 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-mips.c (mips_elf_relocate_section): Do not complain about
	an out of range pc-relative jump/call to an undefined weak symbol.

Thu Apr 16 13:49:00 1998  Richard Henderson  <rth@cygnus.com>

	* elf64-alpha.c (elf64_alpha_do_reloc_gpdisp): Do all gpdisp
	comparisons signed.

Thu Apr 16 11:43:33 1998  Ian Lance Taylor  <ian@cygnus.com>

	* archive.c (bfd_generic_archive_p): If a slurp subroutine returns
	an error other than bfd_error_system_call, set the error to
	bfd_error_wrong_format.

	* targets.c (bfd_target_vector) [SELECT_VECS not defined]: Add
	bfd_elf32_powerpcle_vec.

	* elf.c (copy_private_bfd_data): If all the p_paddr fields in the
	program segments are zero, don't set p_paddr_valid.

Wed Apr 15 22:15:16 1998  Richard Henderson  <rth@cygnus.com>

	* elf64-alpha.c: Initial implementation of relaxation --
	(struct alpha_elf_link_hash_entry): Add use_count member.
	(elf64_alpha_check_relocs): Initialize and increment it.
	(elf64_alpha_can_merge_gots): Check it when considering merging.
	(elf64_alpha_merge_gots): Drop entries with zero use.
	(elf64_alpha_calc_got_offsets_for_symbol): Likewise.
	(elf64_alpha_always_size_sections): Split out got sizing ...
	(elf64_alpha_size_got_sections): ... here.  New function.
	(elf64_alpha_relax_find_reloc_ofs): New function.
	(elf64_alpha_relax_with_lituse): Likewise.
	(elf64_alpha_relax_without_lituse): Likewise.
	(elf64_alpha_relax_opt_call): Likewise.
	(elf64_alpha_relax_section): Likewise.
	(elf64_alpha_add_symbol_hook): Likewise.
	(elf64_alpha_howto_table): Implement GPRELHIGH/LOW & IMMED_GP_16.
	(elf64_alpha_relocate_section): Likewise.
	(bfd_elf64_bfd_relax_section): Define.
	(elf_backend_add_symbol_hook): Likewise.

Wed Apr 15 16:08:46 1998  Richard Henderson  <rth@cygnus.com>

	* elf.c (prep_headers): Use new EM_SPARCV9 symbol.
	* elf64-sparc.c (ELF_MACHINE_CODE): Likewise.
	(ELF_MACHINE_ALT1): New.  Set to EM_OLD_SPARC64.

Wed Apr 15 11:34:33 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Add -lkernel32 to WIN32LIBADD on cygwin32.
	* configure: Rebuild.

Mon Apr 13 16:46:27 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (libbfd_la_LIBADD): Add @WIN32LIBADD@.
	(libbfd_la_LDFLAGS): Add @WIN32LDFLAGS@.
	* configure.in: Define and substitute WIN32LDFLAGS and
	WIN32LIBADD.
	* aclocal.m4: Rebuild with new libtool.
	* configure, Makefile.in: Rebuild.

Fri Apr 10 13:44:27 1998  Ian Lance Taylor  <ian@cygnus.com>

	* coffcode.h (coff_write_object_contents): Move a PE COMDAT symbol
	before any other symbols in the same section.

Wed Apr  8 14:50:23 1998  Michael Meissner  <meissner@cygnus.com>

	* config.bfd (powerpc*-*-*): Remove PowerPC NT support from ELF
	systems.

Tue Apr  7 16:25:31 1998  Gavin Romig-Koch  <gavin@cygnus.com>

	* dwarf2.c (comp_unit): Move it earlier in the source. Add
	addr_size.
	(read_address): Replace 'bdf*' argument with 'comp_unit*' argument.
	Use addr_size for address size, rather than sizeof(bfd_vma).
	(read_attribute): Replace bdf* argument with 'comp_unit*' argument.
	Fix call to read_address.
	(decode_line_info): Replace bdf* argument with 'comp_unit*' argument.
	Scrap other unneeded arguments.  Fix call to read_address.
	(scan_unit_for_functions): Fix call to read_attribute.
	(parse_comp_unit): We now handle more values for addr_size.
	Set addr_size in unit.  Fix call to read_attribute and
	decode_line_info.

Tue Apr  7 15:44:47 1998  Gavin Romig-Koch <gavin@cygnus.com>

	* dwarf2.c (parse_comp_unit): Drop use of unit->name when it is null.

Tue Apr  7 12:35:18 1998  Ian Lance Taylor  <ian@cygnus.com>

	* archures.c (bfd_default_scan): Add m68k cases back to default
	switch, reverting patch of March 25, since IEEE support depends
	upon them.

Mon Apr  6 14:06:40 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (diststuff): New target.
	* Makefile.in: Rebuild.

Sun Apr  5 16:21:44 1998  Jeffrey A Law  (law@cygnus.com)

	* som.c (som_bfd_ar_write_symbol_stuff): Fix computation of
	som_offset when we have an extended name table.

Sun Apr  5 16:04:39 1998  H.J. Lu  <hjl@gnu.org>

	* Makefile.am (stamp-lib): Check that .libs/libbfd.a exists before
	trying to copy it.
	* Makefile.in: Rebuild.

Fri Apr  3 11:09:42 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf32-m68k.c (elf_m68k_size_dynamic_sections): Generate section
	symbols when creating a shared library.
	(elf_m68k_adjust_dynindx): New function, used by above code.
	(elf_m68k_finish_dynamic_sections): Initialize the section
	symbols.
	(elf_m68k_relocate_section): Change abort to BFD_ASSERT.

Wed Apr  1 16:04:02 1998  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c (in_reloc_p): Use ARM_RVA32 in place of constant
	value 11.

Wed Apr  1 13:36:58 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf32-m68k.c (elf_m68k_relocate_section, case R_68K_PLT*O): Fix
	assertion.

Tue Mar 31 00:12:12 1998  Jeffrey A Law  (law@cygnus.com)

	* elf-m10300.c (mn10300_elf_relax_section): Correctly handle
	absolute symbols.

Mon Mar 30 12:46:15 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Set version to 2.9.1.
	* configure: Rebuild.

	* Branched binutils 2.9.

Mon Mar 30 12:20:50 1998  Brent Baccala  <baccala@freesoft.org>

	* syms.c (ENABLE_CACHING): Define.
	(struct indexentry): Define.
	(struct stab_cache): Remove.
	(cmpindexentry): New static function.
	(struct stab_find_info): Add new fields: indextable,
	indextablesize, cached_indexentry, cached_offset, cached_stab, and
	cached_file_name.  Remove fields: file_cache, function_cache, and
	line_cache.
	(_bfd_stab_section_find_nearest_line): Rewrite to build a sorted
	index table and search it.

Mon Mar 30 10:39:34 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elf.c (_bfd_elf_copy_private_section_data): Call
	copy_private_bfd_data once we've seen the last SEC_ALLOC section.

	* cpu-mips.c: Remove trailing comma at end of enumeration list.

Sat Mar 28 16:33:02 1998  Ian Lance Taylor  <ian@cygnus.com>

	* coff-arm.c: Define all globally visible variables and functions
	only when COFF_WITH_PE is not defined.
	* configure.in (armpe_little_vec, armpe_big_vec): Add
	coff-arm.lo.
	* configure: Rebuild.

Fri Mar 27 16:06:02 1998  Ian Lance Taylor  <ian@cygnus.com>

	Fix some gcc -Wall warnings:
	* aout-arm.c (MY(fix_pcrel_26)): Add casts to avoid warnings.
	* archive.c (_bfd_generic_read_ar_hdr_mag): Likewise.
	* archures.c (bfd_default_scan): Likewise.
	* bfd.c (bfd_scan_vma): Likewise.
	* binary.c (mangle_name): Likewise
	* coff-arm.c (aoutarm_fix_pcrel_26): Likewise.
	* coff-sh.c (sh_relocate_section): Likewise.
	* coff-stgo32.c (create_go32_stub): Likewise.
	* coffcode.h (coff_slurp_line_table): Likewise.
	* ecoff.c (_bfd_ecoff_write_armap): Likewise.
	* elf.c (_bfd_elf_make_section_from_shdr): Likewise.
	(assign_file_positions_for_segments): Likewise.
	* elf32-mips.c (mips_elf_relocate_section): Likewise.
	* elf32-ppc.c (ppc_elf_add_symbol_hook): Likewise.
	* oasys.c (oasys_write_sections): Likewise.
	* ppcboot.c (ppcboot_object_p): Likewise.
	(mangle_name): Likewise.
	* riscix.c (riscix_fix_pcrel_26): Likewise.
	* srec.c (srec_scan): Likewise.
	* stabs.c (_bfd_write_section_stabs): Likewise.
	* sunos.c (sunos_add_dynamic_symbols): Likewise.
	* aout-ns32k.c (_bfd_ns32k_relocate_contents): Add default case to
	switch.  Declare parameters for function pointers.
	* archures.c (bfd_default_scan): Add braces to avoid ambiguous if
	warning.
	* elf.c (elf_sort_sections): Likewise.
	* coff-arm.c (coff_thumb_pcrel_common): Initialize relocation.
	Add default cases to switches.
	(coff_arm_relocate_section): Remove unused local variables.
	Always set rstat.
	(coff_arm_bfd_set_private_flags): Change flag variable to type
	flagword.
	* coff-mips.c (mips_relocate_section): Initialize use_lo.
	* coff-ppc.c (ppc_record_toc_entry): Change i to unsigned int.
	(dump_toc): Change cat to const, and initialize it.
	* coff-sh.c (sh_relax_delete_bytes): Initialize start and voff.
	* elf32-sh.c (sh_elf_relax_delete_bytes): Likewise.
	(sh_elf_relocate_section): Initialize r_symndx.
	* coffcode.h (coff_compute_section_file_positions): Only declare
	old_sofar if ALIGN_SECTIONS_IN_FILE.
	(coff_write_object_contents): Initialize csym.
	* coffgen.c (coff_pointerize_aux): Make type and class unsigned.
	* cpu-ns32k.c (_bfd_ns32k_get_displacement): Add default case to
	switch.
	* dwarf2.c: Include libiberty.h.
	(read_2_signed_bytes, read_4_signed_bytes): Comment out.
	(decode_line_info): Remove unused local variables.
	* elf32-m32r.c (m32r_elf_sda16_reloc): Likewise.
	(m32r_elf_relocate_section): Likewise.
	* elf32-v850.c (v850_elf_store_addend_in_insn): Likewise.
	(v850_elf_reloc): Likewise.
	* elf-bfd.h (elf_linker_section_t): Make alignment unsigned.
	(struct elf_obj_tdata): Make cverdefs and cverrefs unsigned.
	* elf.c (assign_file_positions_for_segments): Always set adjust.
	* elf32-d30v.c (bfd_elf_d30v_reloc): Initialize tmp_addr.  Fully
	parenthesize expression.
	* elf32-m32r.c (m32r_elf_relocate_section): Always initialize h.
	(m32r_elf_object_p): Return a value.
	(m32r_elf_print_private_bfd_data): Change fprintf format string.
	* elf32-mips.c (mips_elf_final_link): Initialize last.
	(mips_elf_finish_dynamic_sections): Initialize last and dindx.
	* elf32-v850.c (v850_elf_object_p): Return a value.
	(v850_elf_print_private_bfd_data): Change fprintf format string.
	* elfcode.h (elf_slurp_symbol_table): Change symcount and i to
	unsigned long.
	* elflink.h (elf_link_add_object_symbols): Change vernum to
	unsigned int, and initialize it.  Change fprintf format string.
	(NAME(bfd_elf,size_dynamic_sections)): Cast -1 to bfd_size_type
	when setting or comparing to soname_indx.
	(elf_create_pointer_linker_section): Change num_symbols to
	unsigned int.
	* libcoff-in.h (coff_data_type): Change flags to flagword.
	* peicode.h (pe_print_idata): Initialize idx.  Change j to
	bfd_size_type.  Initialize hint_member.  Remove useless test to
	time_stamp.
	(pe_print_edata): Change num_functions and num_names in struct
	EDT_type to unsigned long.  Remove cast.  Change fprintf format
	string.
	* ppcboot.c (ppcboot_object_p): Change i to size_t.
	* reloc.c (bfd_get_reloc_size): Change return type to unsigned
	int.
	* reloc16.c (bfd_coff_reloc16_relax_section): Change shrinks to
	int *.  Update uses.  Change j to long.
	* bfd-in2.h, libcoff.h: Rebuild.

Fri Mar 27 10:10:46 1998  Catherine Moore <clm@cygnus.com>

	* elf32-v850.c Remove definition of USE_REL.
	(v850_elf_info_to_howto_rela): New function.
	(v850_elf_perform_relocation):  Renamed from
	v850_elf_store_addend_in_insn.  Removed replace argument.
	(v850_elf_reloc): store the relocation in the addend field instead
	of the insn.
	(v850_elf_final_link_relocate):  Now calls
	v850_elf_perform_relocation.
	(v850_elf_relocate_section):  Remove code to generate REL
	relocations.

Thu Mar 26 13:32:17 1998  Ian Lance Taylor  <ian@cygnus.com>

	* coffcode.h (coff_new_section_hook): Set the type and storage
	class in the native symbol information allocated for a new section
	symbol.

Thu Mar 26 10:13:41 1998  Nick Clifton  <nickc@cygnus.com>

	* peicode.h: Chain together calls to
	coff_bfd_copy_private_bfd_data and
	coff_bfd_print_private_bfd_data.

	* coff-arm.c: Add prototypes for
	coff_arm_bfd_print_private_bfd_data and
	coff_arm_bfd_copy_private_bfd_data.

Wed Mar 25 15:45:55 1998  Nick Clifton  <nickc@cygnus.com>

	* coffcode.h (coff_mkobject_hook): Set private falgs even for a PE
	build.

	* peicode.h: Call arm-coff private data functions after handling
	pe private data.

	* coff-arm.c: Turn statics into globals so that they can be shared
	both pe and pei backends.

Wed Mar 25 15:19:38 1998  Ian Lance Taylor  <ian@cygnus.com>

	* aoutf1.h (sunos_set_arch_mach): Use bfd_mach_m68* rather than
	plain numbers.
	(sunos_write_object_contents): Likewise.
	* aoutx.h (NAME(aout,machine_type)): Likewise.
	* coffcode.h (coff_set_arch_mach_hook): Likewise.

Wed Mar 25 13:59:24 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* archures.c (bfd_mach_m68*): Add definitions for various m68k
	variants.
	(bfd_default_scan): Remove m68k special cases.
	* bfd-in2.h: Rebuild.
	* mipsbsd.c (MY(write_object_contents)): Use bfd_mach_m68* rather
	than plain numbers.
	* sparclynx.c (NAME(lynx,set_arch_mach)): Likewise.
	* cpu-m68k.c (arch_info_struct): Likewise.  Add entry for
	m68k:68000.
	(bfd_m68k_arch): Set mach field to zero to signal no explicit
	selection, change printable_name to just "m68k" and make that the
	default instead of m68k:68020.

	* aout-tic30.c (NAME): Define this to avoid multiple definitions
	from aoutx.h.
	(MY_get_section_contents): Define as aout_32_get_section_contents
	rather than NAME(aout,get_section_contents).

	* elf-m10300.c (elf32_mn10300_link_hash_table_create): Fix cast.

	* evax-alpha.c (evax_set_arch_mach): Only accept bfd_arch_alpha
	and call bfd_default_set_arch_mach to do the real work.

Wed Mar 25 10:41:35 1998  Richard Henderson  <rth@cygnus.com>

	* bout.c (BALX): Include return register g14 as part of the insn.
	(BALX_MASK): New.
	(calljx_callback): Use it.

Wed Mar 25 11:19:28 1998  Ian Lance Taylor  <ian@cygnus.com>

	* libbfd-in.h (BFD_ALIGN): Cast this parameter to bfd_vma.
	* libbfd.h: Rebuild.

	* elf-m10300.c (elf32_mn10300_finish_hash_table_entry): Change
	byte_count to unsigned int.
	(mn10300_elf_relax_section): Initialize internal_relocs.  Remove
	unused local variables.

	* evax-alpha.c (evax_close_and_cleanup): Remove unused local
	variables er and er1.

	* cpu-v850.c: Include <ctype.h>.
	(scan): Case isdigit argument to unsigned char.

	From Yan Meroth <YAN.MEROTH@st.com>:
	* ihex.c (ihex_scan): Add extbase variable so that getting an
	extended linear address record does not ignore any previous
	extended address.
	(ihex_write_object_contents): When writing out an extended linear
	address record, zero out any previous extended address.

Tue Mar 24 16:09:43 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* ieee.c (do_one): Check section before dereferencing it.
	(ieee_canonicalize_reloc): Likewise with src->relent.sym_ptr_ptr.
	(ieee_generic_stat_arch_elt): Likewise with abfd->my_archive.

Mon Mar 23 18:51:47 1998  Joel Sherrill  <joel@OARcorp.com>

	* config.bfd: (sh*-*-rtems*): Switched from ELF to COFF.

Mon Mar 23 14:23:36 1998  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c: Add interworking functions to pe backends.

Fri Mar 20 18:47:20 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Use AM_DISABLE_SHARED.
	* aclocal.m4, configure: Rebuild with libtool 1.2.

Fri Mar 20 11:25:41 1998  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c (coff_arm_relocate_section): Better error messages
	when interowrking conflucts occur.  Courtesy of Jonathan Walton
	and Tony Thompson.
	(aoutarm_std_reloc_howto): Fixed bitsize fields of rightshifted
	relocations.  Patch courtesy of Jonathan Walton and Tony
	Thompson.

Fri Mar 20 02:26:43 1998  Richard Henderson  <rth@cygnus.com>

	* elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Revert
	part of Feb 22 change controling when to override the existing
	symbol with the .plt entry.

Wed Mar 18 09:26:25 1998  Nick Clifton  <nickc@cygnus.com>

	* config.bfd (targ_cpu): Add thumb-pe target.

	* coffcode.h (OTHER_GLOBAL_CLASS): Support thumb external
	functions in PE build.

Sun Mar  8 23:37:26 1998  Stan Cox  <scox@equinox.cygnus.com>

	* config.bfd (sparclite-*-elf*): Added.

Mon Feb 23 19:31:19 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Add elf.lo to elf shell variable.
	* Makefile.am (BFD_LIBS): Remove elf.lo.
	(BFD_LIBS_CFILES): Remove elf.c.
	(BFD32_BACKENDS): Add elf.lo.
	(BFD32_BACKENDS_CFILES): Add elf.c.
	* configure, Makefile.in: Rebuild.

1998-02-23 15:53  Richard Henderson  <rth@cygnus.com>

	* elf32-i386.c (elf_i386_relocate_section): A pc-relative
	relocation against a non-local symbol should not have a dynamic
	relocation.

Mon Feb 23 16:17:08 1998  Ian Lance Taylor  <ian@cygnus.com>

	* peicode.h (coff_swap_filehdr_in): Don't set BFD flag HAS_SYMS in
	COFF filehdr flags.
	(pe_print_private_bfd_data): Print PE flags.  From Mikey
	<jeffdb@netzone.com>.

Sun Feb 22 20:39:00 1998  Richard Henderson  <rth@cygnus.com>

	* elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Don't create
	a plt entry when we can determine that we authoritatively define
	the symbol.

Sun Feb 22 20:33:05 1998  Richard Henderson  <rth@cygnus.com>

	* configure.in (COREFILE selection): Remove sparc-*-linux*.  They
	don't actually use trad-core, but a SunOS-style core file handled
	by gdb directly.
	* hosts/sparclinux.h: Remove.

Wed Feb 18 15:31:06 1998  Ian Lance Taylor  <ian@cygnus.com>

	* peicode.h (pe_print_idata): If there is no .idata section, look
	for the import tables in some other section.  Make the initial
	label line up better with the data.  Print the import address
	table even if there is no import name table.  If the import
	address table holds actual addresses, print them.

Tue Feb 17 12:58:34 1998  Ian Lance Taylor  <ian@cygnus.com>

	* libbfd.c (bfd_seek): If fseek fails, save errno around call to
	bfd_tell.  If errno is EINVAL, set bfd_error_file_truncated, not
	bfd_error_system_call.

Fri Feb 13 13:11:33 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (AUTOMAKE_OPTIONS): Define.
	* configure, Makefile.in, aclocal.m4: Rebuild with automake 1.2e.

	From H.J. Lu <hjl@gnu.org>:
	* Makefile.am (libbfd_la_LDFLAGS): Define.
	* Makefile.in: Rebuild.

Thu Feb 12 17:31:11 1998  Ian Lance Taylor  <ian@cygnus.com>

	NetBSD patches from Gordon W. Ross <gwr@mc.com>:
	* netbsd.h (MACHTYPE_OK): Define.
	(MY(write_object_contents)): Use DEFAULT_ARCH and DEFAULT_MID when
	calling N_SET_MACHTYPE, rather than having a switch.
	* libaout.h (enum machine_type): Add M_PMAX_NETBSD, M_VAX_NETBSD,
	and M_ALPHA_NETBSD.
	* i386netbsd.c (MACHTYPE_OK): Don't define.
	(DEFAULT_MID): Define.
	* m68k4knetbsd.c (SEGMENT_SIZE): Don't define.
	(MACHTYPE_OK): Don't define.
	(DEFAULT_MID): Define.
	* m68knetbsd.c: (MACHTYPE_OK): Don't define.
	(DEFAULT_MID): Define.
	* ns32knetbsd.c (MACHTYPE_OK): Don't define.
	(DEFAULT_MID): Define.
	* sparcnetbsd.c (MACHTYPE_OK): Don't define.
	(DEFAULT_MID): Define.

	NetBSD patches from Gordon W. Ross <gwr@mc.com>:
	* vaxnetbsd.c: New file.
	* netbsd-core.c: Clean up.  Remove unused macros.  Use netbsd
	rather than netbsd_core.
	* targets.c (vaxnetbsd_vec): Declare.
	(bfd_target_vector): Add vaxnetbsd_vec.  If NETBSD_CORE is
	defined, add netbsd_core_vec.
	* configure.in: Set COREFILE for alpha*-*-netbsd* and
	powerpc-*-netbsd* to netbsd-core.lo.  If COREFILE is
	netbsd-core.lo, set COREFLAG to -DNETBSD_CORE.
	* config.bfd (alpha*-*-netbsd*): New target.
	* Makefile.am: Rebuild dependencies.
	(BFD32_BACKENDS): Add vaxnetbsd.lo.
	(BFD32_BACKENDS_CFILES): Add vaxnetbsd.c.
	* configure, Makefile.in: Rebuild.

	* configure.host: Remove the old shared library build stuff.  We
	now use libtool instead.

Wed Feb 11 17:13:09 1998  Richard Henderson  <rth@cygnus.com>

	* tekhex.c (tekhex_write_object_contents): Call tekhex_init.

Tue Feb 10 19:23:28 1998  H.J. Lu  <hjl@gnu.org>

	* configure.in: Take stab-syms.lo out of sparclinux_vec list.
	* configure: Rebuild.

Tue Feb 10 15:16:38 1998  Nick Clifton  <nickc@cygnus.com>
	* elf32-v850.c (remember_hi16s_reloc): New function.
	(find_remembered_hi16s_reloc): New function.
	(v850_elf_store_addend_in_insn): Use the above new functions to
	match up HI6S relocs with LO16 relocs.

Tue Feb 10 15:01:39 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Change -linux* to -linux-gnu*.
	* config.bfd, configure.host: Likewise.
	* configure: Rebuild.

Mon Feb  9 19:40:59 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_store_addend_in_insn): Fix another
	LO16/HI16S bug and improve comments about what is going on.

Sat Feb  7 15:27:03 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure, aclocal.m4: Rebuild with new libtool.

Fri Feb  6 14:48:20 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_merge_private_bfd_data): Do not complain
	when merging v850 code into v850e/v850ea code.  Do not initialise
	output flags if the input is the default architecture.

Fri Feb  6 11:50:22 1998  Jeffrey A Law  (law@cygnus.com)

	* elf32-mips.c (bfd_elf32_bfd_reloc_type_lookup): For BFD_RELOC_CTOR
	get the size from bfd_arch_bits_per_address instead of directly
	from the isa.

Thu Feb  5 14:21:34 1998  Michael Meissner  <meissner@cygnus.com>

	* libbfd-in.h (BFD_ALIGN): If rounding up would cause the address
	to wrap, just return all 1's bits instead.
	* libbfd.h: Regenerate.

Thu Feb  5 11:51:05 1998  Ian Lance Taylor  <ian@cygnus.com>

	* coff-i386.c (coff_pe_i386_relocate_section): New static function
	if COFF_WITH_PE.
	(coff_relocate_section): If COFF_WITH_PE, define as
	coff_pe_i386_relocate_section.
	* coffcode.h (coff_write_object_contents): If COFF_IMAGE_WITH_PE,
	skip empty sections, to match coff_write_object_contents.

	* elf64-mips.c (mips_elf64_swap_reloca_out): Swap out r_addend,
	rather than swapping out r_offset twice.  From Luke Deller
	<luked@cse.unsw.edu.au>.

Wed Feb  4 19:11:28 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Set libtool_enable_shared rather than
	libtool_shared.  Remove diversion hack.
	* configure, Makefile.in, doc/Makefile.in, aclocal.m4: Rebuild
	with new libtool.

Wed Feb  4 16:10:21 1998  Brent Baccala  <baccala@freesoft.org>

	* syms.c (struct stab_cache): Define.
	(struct stab_find_info): Remove cached_offset, cached_stab,
	cached_str, and cached_stroff fields.  Add file_cache,
	function_cache, and line_cache fields.
	(_bfd_stab_section_find_nearest_line): Use extensive caching to
	speed up searches.

Wed Feb  4 13:34:22 1998  Ian Lance Taylor  <ian@cygnus.com>

	* peicode.h (pe_print_idata): Check for import of ordinal rather
	than name.
	(pe_print_edata): If there is no .edata section, look for the
	export data in some other section.

Mon Feb  2 20:05:42 1998  Jason Molenda  (crash@bugshack.cygnus.com)

	* configure.in: Change version to 2.8.4.
	* configure: Regenerated.

Mon Feb  2 17:39:39 1998  Steve Haworth  <steve@pm.cse.rmit.EDU.AU>

	Add tms320c30 support:
	* cpu-tic30.c: New file.
	* aout-tic30.c: New file.
	* coff-tic30.c: New file.
	* archures.c (bfd_arch_tic30): Define.
	(bfd_tic30_arch): Declare.
	(bfd_archures_list): Add bfd_tic30_arch.
	* targets.c (bfd_target_vector): Add tic30_aout_vec and
	tic30_coff_vec.
	* reloc.c (BFD_RELOC_TIC30_LDP): Define.
	* coffcode.h (coff_set_arch_mach_hook): Add tic30 case.
	(coff_set_flags): Likewise.
	* config.bfd (tic30-*-*aout*, tic30-*-*coff*): New targets.
	* configure.in (tic30_aout_vec, tic30_coff_vec): New vectors.
	* Makefile.am: Rebuild dependencies.
	(ALL_MACHINES): Add cpu-tic30.lo.
	(ALL_MACHINES_CFILES): Add cpu-tic30.c.
	(BFD32_BACKENDS): Add aout-tic30.lo and coff-tic30.lo.
	(BFD32_BACKENDS_CFILES): Add aout-tic30.c and coff-tic30.c.
	* configure, Makefile.in, bfd-in2.h, libbfd.h: Rebuild.

Mon Feb  2 12:25:12 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_store_addend_in_insn): Allow HI16_S reloc
	to lag behind LO16 reloc by a couple of instructions.

Mon Feb  2 14:09:46 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am ($(srcdir)/bfd-in2.h): Add dummy command to force
	make to reexamine the file timestamp.
	($(srcdir)/libbfd.h, $(srcddir)/libcoff.h): Likewise.

	* elf64-alpha.c (ELF_MAXPAGESIZE): Change to 0x10000 from
	0x100000.

Fri Jan 30 19:07:07 1998  Geoff Keating  <geoffk@ozemail.com.au>

	* elf32-ppc.c (ppc_elf_create_dynamic_sections): New procedure
	to create .dynsbss and .rela.sbss sections.
	(ppc_elf_adjust_dynamic_symbol): Put space for small data to be
	copied from dynamic objects into .sbss.
	(ppc_elf_size_dynamic_sections): Strip .rela.sbss if we don't
	use it.  Correct typo of .rela.sdata2.
	(ppc_elf_finish_dynamic_symbol): Generate reloc to where we
	put the data, which may now be in .sbss.
	(ppc_elf_relocate_section): A SDAREL16 reloc can be in dynsbss.
	(elf_backend_create_dynamic_sections): Define as
	ppc_elf_create_dynamic_sections.

	* elf32-ppc.c (ppc_elf_check_relocs): Don't emit R_PPC_REL* relocs
	against _GLOBAL_OFFSET_TABLE_.
	(ppc_elf_relocate_section): Don't emit R_PPC_REL32 relocs in
	shared libraries which refer to local symbols.  Make sure that the
	test for allocating space for a reloc in a shared object is the
	same as the test for emitting a reloc.

Thu Jan 29 15:55:35 1998  J.J. van der Heijden  <J.J.vanderHeijden@student.utwente.nl>

	* config.bfd (i[3456]-*-mingw32*): New target.
	* acinclude.m4 (BFD_BINARY_OPEN): Check for mingw32.
	* aclocal.m4, configure: Rebuild.

Wed Jan 28 13:41:26 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elf.c (_bfd_elf_close_and_cleanup): Only check the strtab if we
	have a bfd_object.

Tue Jan 27 21:43:55 1998  Richard Henderson  <rth@cygnus.com>

	Sparc v9 ABI compliant PLT:
	* elf64-sparc.c (PLT_HEADER_SIZE): V9 ABI uses 4 entries.
	(plt_templates, sparc64_elf_build_plt_entry): Delete.
	(LARGE_PLT_THRESHOLD): New define.
	(GOT_RESERVED_ENTRIES): V9 ABI only uses 1.
	(sparc64_elf_build_plt): New function.
	(sparc64_elf_plt_entry_offset): Likewise.
	(sparc64_elf_plt_ptr_offset): Likewise.
	(sparc64_elf_adjust_dynamic_symbol): Change h->plt_offset to
	contain the index for convenience.  Skip the initial entries
	in .rela.plt.
	(sparc64_elf_size_dynamic_sections): Zero the allocated contents
	memory for the benefit of .rela.plt.
	(sparc64_elf_relocate_section): Call sparc64_elf_plt_entry_offset.
	(sparc64_elf_finish_dynamic_symbol): Kill template stuff.  Use
	sparc64_elf_plt_entry_offset & sparc64_elf_plt_ptr_offset for reloc.
	(sparc64_elf_finish_dynamic_sections): DT_PLTGOT points to .plt.
	Call sparc64_elf_build_plt.
	(elf_backend_want_got_plt): No.
	(elf_backend_plt_readonly): No.
	(elf_backend_plt_alignment): 8.

	* elf.c (_bfd_elf_close_and_cleanup): New function; free the shstrtab.
	* elf-bfd.h (_bfd_elf_close_and_cleanup): Declare it.
	* elfxx-target.h (bfd_elfNN_close_and_cleanup): Arrange for it
	to be called.

Tue Jan 27 21:45:15 1998  Jeffrey A Law  (law@cygnus.com)

	* archures.c (bfd_mach_mips*): Add definitions for various MIPS
	processors.
	* cpu-mips.c (arch_info_struct): Add mips variants.
	* bfd-in2.h: Rebuilt.

Tue Jan 27 15:06:04 1998  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c (coff_arm_relocate_section): Preserve the contents of
	t2a3_b_insn.

Tue Jan 27 12:47:27 1998  Robert Lipe  <robertl@dgii.com>

	* config.bfd (i[3456]86-sco3.2v5*): ELF now the default.
	(i[3456]86sco3.2v5*coff): New target.

Mon Jan 26 15:41:30 1998  Ian Lance Taylor  <ian@cygnus.com>

	* bfd-in2.h: Rebuild with changes to chew--tab expansion.

Thu Jan 22 21:26:48 1998  Richard Henderson  <rth@cygnus.com>

	* bfd.c (bfd_get_error_handler): Add orthogonal function.
	* bfd-in2.h: Regenerate.

Thu Jan 22 21:13:39 1998  Richard Henderson  <rth@cygnus.com>

	* tekhex.c (tekhex_write_object_contents): Check for no symbols.

Wed Jan 21 21:19:03 1998  Ian Lance Taylor  <ian@cygnus.com>

	* coff-i386.c (coff_i386_rtype_to_howto): If COFF_WITH_PE, don't
	adjust addend for an output common symbol (from Jimmy Blair
	<jimmyb@wrs.com>).  If COFF_WITH_PE, adjust addend for PC relative
	defined symbol to counteract adjustment made in generic relocation
	code.

	* dwarf2.c: Include sysdep.h, not stdio.h and stdlib.h.

Wed Jan 21 21:16:06 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* coff-m88k.c (GET_SCNDHR_NRELOC): Fix typo in macro name.
	(GET_SCNDHR_NLNNO): Likewise.

Mon Jan 19 12:49:52 1998  Ian Lance Taylor  <ian@cygnus.com>

	* cpu-sh.c (arch_info_struct): Correct next field of sh3e.

Wed Jan 14 17:23:27 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-m32r.c: Add macros to handle NOP insertion.

Wed Jan 14 16:15:22 1998  Richard Henderson  <rth@cygnus.com>

	* xcofflink.c (xcoff_mark_symbol): Don't mark the absolute section.
	(xcoff_mark): Likewise.
	(xcoff_build_ldsyms): Mark absolute symbols.

Wed Jan 14 16:03:11 1998  Richard Henderson  <rth@cygnus.com>

	* bout.c (b_out_write_object_contents): Sort symbols before output
	to keep {CALL,BAL}NAME symbols adjacent.
	(b_out_symbol_cmp): New function.

For older changes see ChangeLog-9697

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
