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>

	* 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.c (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.c: Allow previous header files to override definition of
	TARGET_LITTLE_SYM and TARGET_BIG_SYM.
	* pei-arm.c: 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_mach_mips4111): New.
	* bfd-in2.h: Regenerate.
	* 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: Likewise.
	* i386msdos.c: Likewise.
	* i386os9k.c: Likewise.
	* 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

Copyright (C) 1998-1999 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
