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 linl together big endian and little endian code.
	(elf32_arm_post_process_headers): New function:  Initialise the
	EI_OSABI and EI_ABIVERSION fields of the newly created ELF program
	header.
	(elf_backend_post_process_headers): Define.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* sysdep.h (LC_MESSAGES): Never define.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* config.bfd: Add support for strongarm target.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* configure.in: Require autoconf 2.12.1 or higher.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* elf32-fr30.c (fr30_elf_pc9_reloc,fr30_elf_pc12_reloc): Not
	needed.

1998-11-25  DJ Delorie  <dj@cygnus.com>

	* coff-i386.c (i3coff_object_p): Remove hack.  Use new emulation
	hook now.

Tue Nov 24 10:25:27 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-fr30.c (fr30_elf_relocate_section): Call
	fr30_final_link_relocate.
	(fr30_final_link_relocate): New function: Handle I20 and I32
	relocs.
	(fr30_elf_i32_reloc): New function: Handle I32 relocs.
	(fr30_elf_pc9_reloc): New function: Handle 9_PCREL relocs.
	(fr30_elf_pc12_reloc): New function: Handle 12_PCREL relocs.

	* elf32-v850.c (v850_elf_relocate_section): Reset hi16s reloc
	chain to empty.

	The following changes are based on a patch submitted by Gianluca
	Moro <glctr@abc.it>:

	(v850_elf_perform_relocation): Only update a hi16s reloc if it has
	not already been updated.
	(find_remembered_hi16s_reloc): New parameter 'already_found'
	returns state of remembered hi16s reloc.
	(remember_hi16s_reloc): Set 'found' field to false.
	(hi16s_location): Add 'found' field.

1998-11-23  DJ Delorie  <dj@cygnus.com>

	* coff-i386.c (bfd_pe_dll_not_recognized_hack): the linker wants
	to see .DLL files as unrecognized.
	(i3coff_object_p): Sorry, had to hack it to not recognize these
	files (pei-i386) on request.

1998-11-23  DJ Delorie  <dj@cygnus.com>

	* opncls.c (bfd_make_readable): need more cleanup for symbols and
	relents.  Call bfd_check_format to reinitialize.

Fri Nov 20 14:21:36 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-fr30.c (fr30_elf_relocate_section): Remove spurious
	warnings.

Thu Nov 19 14:42:15 1998  Geoffrey Noer  <noer@cygnus.com>

	* aclocal.m4: regenerate
	* configure: regenerate

Tue Nov 17 20:23:35 1998  Richard Henderson  <rth@cygnus.com>

	* elf-bfd.h (struct elf_link_hash_entry): Add vtable_entries_size.
	* elf.c (_bfd_elf_link_hash_newfunc): Clear it.
	* elflink.h (elf_gc_propagate_vtable_entries_used): Copy it, and
	respect it as an upper bound on what memory to reference.
	(elf_gc_smash_unused_vtentry_relocs): Likewise.
	(elf_gc_record_vtentry): Handle as-yet undefined vtables.  Set and
	update vtable_entries_size appropriately.

Tue Nov 17 15:28:31 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-fr30.c (fr30_reloc_type_lookup): Used integers to hold
	reloc number.

Mon Nov 16 22:19:21 1998  DJ Delorie  <dj@cygnus.com>

	* archive.c (bfd_ar_hdr_from_filesystem): support BFD_IN_MEMORY
 	bfds; they have no "file" so we fake it.
	* bfd-in2.h: add bfd_make_writable and bfd_make_readable (regen)
	* libbfd.c (bfd_write): Allow writing to BFD_IN_MEMORY bfds by
 	resizing the memory buffer.
	* opncls.c (bfd_make_writable): New function; lets you write a
 	bfd_create'd bfd to an in-memory buffer.
	(bfd_make_readable): New function; lets you read back that buffer
 	as if it were from bfd_openr.  Used to build generated archive
 	members (winsup's ld's dlltool)

Mon Nov 16 19:15:19 1998  Dave Brolley  <brolley@cygnus.com>

	* po/bfd.pot: Regenerated.

Mon Nov 16 10:57:06 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (hi16s_location): Replaced fixed size array with
	linked list.

Sun Nov 15 20:28:25 1998  Richard Henderson  <rth@cygnus.com>

	* elf64-alpha.c (elf64_alpha_relax_section): Search for the proper
	element of the gotentry list for local symbols too.
	(elf64_alpha_relocate_section): Unify local and global handling.
	Assert that gotent->use_count > 0.

Sat Nov 14 15:16:01 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in (vms_alpha_vec): Rename from evax_alpha_vec, and
	update for file name changes of July 2, 1998.
	(vms_vax_vec): New.
	* configure: Rebuild.

Thu Nov 12 19:19:54 1998  Dave Brolley  <brolley@cygnus.com>

	* po/bfd.pot: Regenerated.

Tue Nov 10 16:17:06 1998  Geoffrey Noer  <noer@cygnus.com>

	* acinclude.m4, config.bfd: detect cygwin* instead of cygwin32*.
	* aclocal.m4, configure: regenerate

Tue Nov 10 15:13:59 1998  Nick Clifton  <nickc@cygnus.com>

	* elf.c (prep_headers): Add support for bfd_arch_fr30.

Tue Nov 10 13:37:36 1998  Felix Lee  <flee@cygnus.com>

	* acinclude.m4 (BFD_HAVE_SYS_PROCFS_TYPE,
 	BFD_HAVE_SYS_PROCFS_TYPE_MEMBER): didn't define macro when value
 	was cached.
	* aclocal.m4, configure: regenerated.

Tue Nov 10 14:31:01 1998  Catherine Moore  <clm@cygnus.com>

        * elf32-d10v.c (reloc_type):  Add R_D10V_GNU_VTINHERIT and
        R_D10V_GNU_VTENTRY relocs.
        (elf_d10v_howto_table):  Likewise.
        (d10v_reloc_map d10v_reloc_map):  Likewise.
        (elf32_d10v_gc_mark_hook):  New.
        (elf32_d10v_gc_sweep_hook):  New.
        (elf32_d10v_check_relocs):  New.
        (elf32_d10v_relocate_section):  New.
        (elf_backend_relocate_section):  Define.
        (elf_backend_can_gc_sections):  Define.

Sat Nov  7 18:07:51 1998  Peter Schauer  <peter.schauer@regent.e-technik.tu-muenchen.de>

	* Makefile.am (BFD32_BACKENDS): Move vms files here...
	(BFD64_BACKENDS): ...from here.
	(BFD32_BACKENDS_CFILES): Move vms files here...
	(BFD64_BACKENDS_CFILES): ...from here.
	* Makefile.in: Rebuild.

Wed Nov  4 15:58:48 1998  Nick Clifton  <nickc@cygnus.com>

	* Makefile.am: Add FR30 target.
	* Makefile.in: Add FR30 target.
	* archures.c: Add support for FR30.
	* config.bfd: Add support for FR30.
	* configure.in: Add support for FR30.
	* reloc.c: Add support for FR30 relocations.
	* targets.c: Add support for FR30 relocations.
	* bfd-in2.h: Regenerate.
	* configure: Regenerate.
	* libbfd.h:  Regenerate.
	* cpu-fr30.c: New file.
	* elf32-fr30.c: New file.

Mon Nov  2 14:59:33 1998  Geoffrey Noer  <noer@cygnus.com>

	* configure.in: detect cygwin* instead of cygwin32*
	* configure: regenerate

Sun Nov  1 19:32:28 1998  Jeffrey A Law  (law@cygnus.com)

	* elf-m10300.c (mn10300_elf_relax_section): Do not use alloca,
	use bfd_malloc and free instead and check return value from bfd_malloc.

Sun Nov  1 16:20:35 1998  Ian Lance Taylor  <ian@cygnus.com>

	* libbfd-in.h (_bfd_dwarf1_find_nearest_line): Declare.
	* libbfd.h: Rebuild.

	* elf32-mips.c (mips_elf_dynsym_sec_names): Comment out.
	(SIZEOF_MIPS_DYNSYM_SECNAMES): Likewise.
	(MIPS_TEXT_DYNSYM_SECN): Likewise.
	(_bfd_mips_elf_fake_sections): Don't set sh_info field of a .hash
	section.
	(struct mips_elf_link_hash_table): Remove dynsym_sec_strindex
	field.
	(mips_elf_link_hash_table_create): Don't initialize
	dynsym_sec_strindex.
	(mips_elf_gc_mark_hook): Add default case to avoid warning.
	(mips_elf_size_dynamic_sections): Generate a section symbol for
	every output section.
	(mips_elf_finish_dynamic_sections): Count all sections for
	DT_MIPS_UNREFEXTNO.
	(mips_elf_finish_dynamic_sections): Use dynamic symbols for all
	output sections.

Sun Nov  1 12:46:53 1998  Geoff Keating  <geoffk@ozemail.com.au>

	* elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Allocate two slots
	for later PLT entries in large PLTs.
	(ppc_elf_finish_dynamic_symbol): Allow for the extra slots.

Sat Oct 31 20:10:09 1998  Jeffrey A Law  (law@cygnus.com)

	* elf32-ppc.c (ppc_elf_reload_section): Fix typo.

1998-10-26 15:58  Ulrich Drepper  <drepper@cygnus.com>

	* elf-bfd.h (struct elf_link_hash_entry): Add new field elf_hash_value.
	* elflink.h (elf_collect_hash_codes): New function.  This function is
	called for each exported symbol and we compute the ELF hash value for
	it.
	(compute_bucket_value): New function.  It is called from
	size_dynamic_sections to determine the hash table size.  When we are
	optimizing a better, but slower, algorithm is used.
	(size_dynamic_sections): Call compute_bucket_value.

	* elf.c (bfd_elf_hash): Optimize the hash function a bit.

Mon Oct 19 20:03:21 1998  Catherine Moore  <clm@cygnus.com>

        * elf32-sh.c:  Add HOWTO entries for R_SH_GNU_VTINHERIT and
        R_SH_GNU_VTENTRY.
        (sh_elf_gc_mark_hook):  New.
        (sh_elf_gc_sweep_hook):  New.
        (sh_elf_check_relocs):  New.
        (elf_backend_can_gc_sections):  Define.

Mon Oct 19 16:57:05 1998  Felix Lee  <flee@cygnus.com>

	* acinclude.m4: undo previous gettext change
	* aclocal.m4: rebuild with right version of aclocal.

Mon Oct 19 01:47:21 1998  Felix Lee  <flee@cygnus.com>

	* acinclude.m4, aclocal.m4: move gettext-related fragments from
 	aclocal.m4 to acinclude.m4, so they don't get lost.

	* elfcore.h: rewrite for better corefile support.
	* elf.c (elfcore_*): new functions.
	* elf-bfd.h (elf_obj_tdata): new structure members.
	* acconfig.h, acinclude.m4, configure.in: add feature-tests for
 	flavor of procfs.
	* aclocal.m4, config.in, configure, Makefile.in: regenerated.

Fri Oct 16 14:07:45 1998  Catherine Moore  <clm@cygnus.com>

        * elf32-m32r.c:  Add HOWTO entries for R_M32R_GNU_VTINHERIT
        and R_M32R_GNU_VTENTRY.
        (elf_backend_can_gc_sections):  Define.
        (m32r_elf_check_relocs):  New.
        (m32r_elf_gc_mark_hook):  New.
        (m32r_elf_gc_sweep_hook):  New.
        (m32r_elf_relocate_section):  Handle VT relocs.

Mon Oct 12 14:18:40 1998  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c (arm_relocate_section): Remove redundant test.

	* bfd-in2.h (struct reloc_howto_struct): Improve comment to make
	cleat that the 'bitsize' field is the size of the bitfield AFTER
	relocation not before.

	* elf32-m32r.c (R_M32R_18_PCREL): Fix size of bitfield.

	* coff-mips.c (mips_relocate_hi): Cope with missing refhi or reflo
	relocs.

Tue Oct  6 09:20:44 1998  Catherine Moore  <clm@cygnus.com>

        * elf32-sparc.c:  Add HOWTO entries for R_SPARC_GNU_VTINHERIT and
        R_SPARC_GNU_VTENTRY.
        (elf32_sparc_check_relocs):  Handle them.
        (elf32_sparc_reloc_type_lookup):  Likewise.
        (elf32_sparc_relocate_section):  Likewise.
        (elf32_sparc_gc_mark_hook):  New.
        (elf32_sparc_gc_sweep_hook):  New.

Mon Oct  5 14:55:30 1998  Jeffrey A Law  (law@cygnus.com)

	* som.c (som_finish_writing): Perform some sanity checks when
	writing an executable or shared library.

Mon Oct  5 12:02:31 1998  Gavin Romig-Koch  <gavin@cygnus.com>

	* dwarf1.c : New file.  Adds _bfd_dwarf1_find_nearest_line.
	* configure.in (elf): Add dwarf1.lo.
	* elf_bfd.h (elf_ob_tdata): Add dwarf1_find_line_info.
	* elf.c (_bfd_elf_find_nearest_line): Add call to
	_bfd_dwarf1_find_nearest_line.
	* elf32-mips.c (_bfd_mips_elf_find_nearest_line):
	Add call to _bfd_dwarf1_find_nearest_line.
	* configure: Rebuilt.

Mon Oct  5 10:06:22 1998  Catherine Moore  <clm@cygnus.com>

        * elflink.h (elf_gc_sections):  Do not allow garbage
        collection if dynamic sections have been created.

Mon Oct  5 09:07:37 1998  Catherine Moore  <clm@cygnus.com>

        * elf32-v850.c: Add HOWTO entries for R_V850_GNU_VTINHERIT and
        R_V850_GNU_VTENTRY.
        (v850_elf_check_relocs):  Handle VTINHERIT and VTENTRY relocs.
        (v850_elf_perform_relocation):  Likewise.
        (v850_elf_final_link_relocate):  Likewise.
        (v850_elf_relocate_section):  Likewise.
        (v850_elf_gc_sweep_hook):  New routine.
        (v850_elf_gc_mark_hook):  New routine.
        (elf_backend_can_gc_sections):  Define.

Mon Oct  5 09:04:25 1998  Catherine Moore  <clm@cygnus.com>

        * elf32-m68k.c (elf_m68k_gc_sweep_hook):  Don't assume
        that dynobj exists.

Sun Oct  4 23:29:34 1998  David Edelsohn  <edelsohn@mhpcc.edu>

	* rs6000-core.c (rs6000coff_core_file_matches_executable_p):
	Declare size as bfd_size_type.
	(rs6000coff_get_section_contents): Declare count as bfd_size_type.

Sun Oct  4 20:38:29 1998  Jeffrey A Law  (law@cygnus.com)

	* cpu-hppa.c (bfd_hppa20_arch): Define.  Link it into the bfd_hppa_arch
	structure.
	* som.c (CPU_PA_RISC2_0): Define.
	(_PA_RISC2_0_ID): Likewise.
	(som_finish_writing): Use CPU_PA_RISC2_0 for the system_id as needed.

Sun Oct  4 21:19:09 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_link_add_object_symbols): When a versioned symbol
	has a base which is already defined, only add the referenced
	symbol to the dynamic symbol table if it is defined or referenced
	by a regular file.

	* elf32-i386.c (elf_i386_info_to_howto_rel): Handle vtable relocs
	correctly.

1998-09-27  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

        * elflink.h (elf_link_add_object_symbols): Undo last change.

Wed Sep 23 16:09:31 1998  Richard Henderson  <rth@cygnus.com>

        * elflink.h (elf_link_add_object_symbols): Don't record a dynamic
        symbol for the indirect alias to a versioned symbol.

Mon Sep 21 12:15:22 1998  Catherine Moore  <clm@cygnus.com>

        * elf32-i386.c (elf32_i386_vtinherit_howto): New.
        (elf32_i386_vtentry_howto): New.
        (elf_i386_reloc_type_lookup):  Return elf32_i386_vtentry_howto
        or elf32_i386_vtinherit_howto  on lookup.

Sun Sep 20 00:48:07 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf32-m68k.c: Include "elf/m68k.h".  Remove definition of enum
	reloc_type.  Rename R_68K__max to R_68K_max.
	(howto_table): Use _bfd_elf_rel_vtable_reloc_fn for a VTENTRY
	reloc.

Sun Sep 20 00:09:25 1998  Chris Torek  <torek@bsdi.com>

	* libbfd.c (bfd_getb32): Rewrite expression to get better code.
	(bfd_getl32, bfd_getb_signed_32, bfd_getl_signed_32): Likewise.

	* libbfd.c (bfd_log2): Cast to bfd_vma before shifting, not
	after.

Sat Sep 19 22:42:23 1998  Doug Rabson  <dfr@nlsystems.com>

	* elflink.h (elf_link_add_object_symbols): Ensure that the warning
	message has a null byte terminator.

Fri Sep 18 14:35:29 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_perform_relocation): Ignore contents of
	word subject to R_V850_32 relocation.

Thu Sep 17 17:20:36 1998  Nick Clifton  <nickc@cygnus.com>

	* dwarf2.c: Add comment describing problem computing line numbers
	for undefined symbols at link time.

Thu Sep 17 16:03:28 1998  Richard Henderson  <rth@cygnus.com>

        * elf64-alpha.c (elf64_alpha_adjust_dynamic_symbol): Don't
        transform a defweak into a plt entry.
        (elf64_alpha_calc_dynrel_sizes): Allow room for secondary
        plt entry references to receive a RELATIVE reloc.
        (elf64_alpha_finish_dynamic_symbol): Fill them in.
        (elf64_alpha_relocate_section): Assert we don't overrun
        the allocated relocation space.

Wed Sep 16 18:03:13 1998  Nick Clifton  <nickc@cygnus.com>

	* elf.c (swap_out_syms): Always treat section symbols as
	special, even if they are attached to a common section.

Wed Sep 16 10:34:13 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_symbol_processing): Move symbols in
	sections with v850 common section attributes into named v850
	common sections.
	(v850_elf_add_symbol_hook): Move symbols in sections with v850
	common section attributes into named v850 common sections.

Wed Sep 16 11:26:49 CDT 1998  Catherine Moore  <clm@cygnus.com>

        * elf32-arm.c (elf32_arm_gc_mark_hook):  Remove print
        statement.

1998-09-15  Geoff Keating  <geoffk@ozemail.com.au>

	* elf32-ppc.c (ppc_elf_relocate_section): Reverse output_offset
	part of Vladimir's change of 1998-08-19.  Make a R_PPC_SDAREL16
	reloc to the wrong section a warning, not an error.  .dynsbss
	is not an output section, so there is no need to check for it.

Tue Sep 15 12:40:05 1998  Catherine Moore  <clm@cygnus.com>

       * elf-bfd.h:  Add argument to elf_backend_get_symbol_type.

Tue Sep 15 08:34:40 1998  Catherine Moore  <clm@cygnus.com>

       * elf.c (swap_out_syms):  Pass type to elf_backend_get_symbol_type.
       * elf32-arm.c:  Add HOWTO entries for R_ARM_GNU_VTINHERIT and
       R_ARM_GNU_VTENTRY.
       (elf32_arm_gc_mark_hook): New.
       (elf32_arm_gc_sweep_hook): New.
       (elf32_arm_check_relocs): New.
       (elf32_arm_final_link_relocate):  Handle VTINHERIT and VTENTRY
       relocations.
       (elf32_arm_relocate_section): Handle VTINHERIT and VTENTRY
       relocations.

1998-09-10  Geoff Keating  <geoffk@ozemail.com.au>

        * elf32-ppc.c (ppc_elf_relocate_section): If dynobj is NULL,
        assume there is no PLT or GOT.

Wed Sep  9 14:24:12 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-arm.c (elf32_arm_find_nearest_line): New function:  just
	like _elf_bfd_find_nearest_line() except that STT_ARM_TFUNC is
	also accepted as a function symbol type.

Mon Sep  7 13:24:03 1998  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* rs6000-core.c (_LONG_LONG):  Define for AIX 4.x only.

Sat Sep  5 20:40:18 1998  Ian Lance Taylor  <ian@cygnus.com>

	* libbfd-in.h (_bfd_nolink_bfd_gc_sections): Correct definition to
	match definition of _bfd_gc_sections field.
	* libbfd.h: Rebuild.

Fri Sep  4 13:54:23 1998  David Miller  <davem@dm.cobaltmicro.com>

	* elf32-sparc.c (elf32_sparc_relocate_section): Properly adjust
	the addend of a dynamic relocation referencing a section.
	* elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
	(sparc64_elf_finish_dynamic_symbol): Fix the PLT relocation offset.

Thu Sep  3 17:28:50 1998  Richard Henderson  <rth@cygnus.com>

	* elflink.h (bfd_elfNN_size_dynamic_sections): Verify that the
	bed has a size_dynamic_sections routine before trying to use it.

Mon Aug 31 14:49:22 1998  Richard Henderson  <rth@cygnus.com>

	* elf32-mips.c (elf_mips_gnu_vtentry_howto): Use
	_bfd_elf_rel_vtable_reloc_fn.

Mon Aug 31 10:23:40 1998  Catherine Moore  <clm@cygnus.com>

        * Makefile.am:  Add elf32-arm.c.
        * Makefile.in:  Rebuild.
        * elf-bfd.h:  Add elf_backend_get_symbol_type.
        * elf.c (swap_out_syms):  If defined, call
        elf_backend_get_symbol_type.
        * elf32-arm.c: Define elf_backend_get_symbol_type.
        (elf32_arm_get_symbol-type):  New routine.
        (record_thumb_to_arm_glue):  Change to use STT_ARM_TFUNC.
        (bfd_elf32_arm_process_before_allocation):  Change to
        check for STT_ARM_TFUNC.
        (elf32_arm_final_link_relocate):  Likewise.
        * elfxx-target.h:  Add elf_backend_get_symbol_type.

Fri Aug 28 19:44:07 1998  Richard Henderson  <rth@cygnus.com>

	* archures.c (bfd_mach_alpha_ev[456]): New.
	* cpu-alpha.c: Rework to match these types.
	* bfd-in2.h: Rebuild.

Fri Aug 28 19:38:53 1998  Richard Henderson  <rth@cygnus.com>

	* elf-bfd.h (_bfd_elf_rel_vtable_reloc_fn): Declare.
	* elf.c (_bfd_elf_rel_vtable_reloc_fn): New.

	* elf32-i386.c (elf_howto_table): Add vtable relocs.
	(elf_i386_reloc_type_lookup): Recognize them.
	(elf_i386_check_relocs): Pass them off to generic code.
	(elf_i386_relocate_section): Ignore them.
	(elf_i386_gc_mark_hook, elf_i386_gc_sweep_hook): New.
	(elf_backend_can_gc_sections): True.

Thu Aug 20 15:03:45 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-arm.c (elf32_thumb_to_arm_stub): Check sym_sec is not NULL
	before looking at owner field.
	(elf32_arm_to_thumb_stub): Ditto.
	(elf32_arm_relocate_section): Compute name before calling
	elf32_arm_final_link_relocate().

Thu Aug 20 11:30:17 1998  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* elf.c: comment and formatting cleanups.
	* elfcore.h: ditto.

Wed Aug 19 15:43:26 1998  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* elfcode.h (elf_object_p): Reject files of header type ET_CORE
	(core files are treated differently than object files).
	* elf-bfd.h (_bfd_elf_write_corefile_contents,
	bfd_elf_mkcorefile): declare.
	* elfxx-target.h (_bfd_elf_write_corefile_contents,
	bfd_elf_mkcorefile): add to bfd_target vector.
	* elfcore.h (elf_core_file_p): save the program header table,
	and set the bfd architecture from the elf file header.
	* elf.c (bfd_elf_mkcorefile): new function.
	(_bfd_elf_write_corefile_contents): new function.
	(assign_file_positions_for_segments): add cases for handling
	PT_NOTE segments.  (assign_file_positions_except_relocs):
	core files should be handled the same as exec files.
	(prep_headers): identify core files as type ET_CORE.
	(copy_private_bfd_data): identify the sections belonging to
	the PT_NOTE segment.

	* elf32-sparc.c (elf32_sparc_final_write_processing):
	add break statement to default case.

1998-08-19  Vladimir N. Makarov  <vmakarov@cygnus.com>

	* elf32-ppc.c (ppc_elf_relocate_section): Check that output
	section (not input) will be in sections ".sbss", ".sbss2",
	".sdata", and ".sdata" for R_PPC_SDAREL16, R_PPC_EMB_SDA2REL,
	R_PPC_EMB_SDA21, R_PPC_EMB_RELSDA.  In all these cases also ignore
	output_offset for correct evaluation of addend.

Tue Aug 18 11:48:12 1998  Catherine Moore  <clm@cygnus.com>

        * elf32-arm.c: Add prefix bfd_ to elf32_arm_get_bfd_for_interworking,
        elf32_arm_allocate_interworking_sections and
        elf32_arm_process_before_allocation.

Tue Aug 18 11:46:00 1998  Nick Clifton  <nickc@cygnus.com>

        * bfd-in.h: Ammend prototype for
        elf32_arm_process_before_allocation to remove surplus third
        argument.

        * bfd-in2.h: Regenerate.

Sat Aug 15 20:55:08 1998  Richard Henderson  <rth@cygnus.com>

	* elf64-alpha.c (elf64_alpha_relax_section): Handle indirect symbols.

Fri Aug 14 09:12:28 1998  Stan Cox  <scox@cygnus.com>

	* aoutx.h (aout_link_input_section_ext): Use the relocation already
	calculated for RELOC_SPARC_REV32 case.

Thu Aug 13 14:02:02 1998  Catherine Moore  <clm@cygnus.com>

       * bfd-in.h:  Add prototypes for elf32_arm_get_bfd_for_interworking,
       elf32_arm_allocate_interworking_sections and
       elf32_arm_process_before_allocation.
       * bfd-in2.h:  Regenerated.
       * elf32-arm.c Define elf32_arm_link_hash_table.
       (insert_thumb_branch): New routine.
       (find_thumb_glue): New routine.
       (find_arm_glue): New routine.
       (record_arm_to_thumb_glue): New routine.
       (record_thumb_to_arm_glue): New routine.
       (elf32_arm_link_hash_table_create): New routine.
       (elf32_arm_get_bfd_for_interworking): New routine.
       (elf32_arm_allocate_interworking_sections) New routine.
       (elf32_arm_process_before_allocation) New routine.
       (elf32_thumb_to_arm_stub): New routine.
       (elf32_arm_to_thumb_stub): New routine.
       (elf32_print_private_bfd_data): Fix typo.
       (elf32_arm_final_link_relocate):  Add argument sym_sec.
       Check for branches to thumb symbols in case R_ARM_PC24.
       Check for branches to arm symbols in case R_ARM_THM_PC22.
       (elf32_arm_relocate_section):  Pass symbol section to
       elf32_arm_final_link_relocate.

Wed Aug 12 19:00:39 1998  Geoff Keating  <geoffk@ozemail.com.au>

	* elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Generate PLT
	entries unless the symbol is defined in the executable; in
	particular, undefined weak symbols get a PLT entry.

Wed Aug 12 14:48:33 1998  Ian Lance Taylor  <ian@cygnus.com>

	* libaout.h: Remove nested comment to avoid warning.

Wed Aug 12 08:10:11 1998 Catherine Moore  <clm@cygnus.com>

       * elf32-arm.c (elf32_arm_final_link_relocate):  Rework
       R_ARM_PC24 relocation.

Tue Aug 11 14:42:26 1998  Catherine Moore  <clm@cygnus.com>

       * elf32-arm.c (elf32_arm_final_link_relocate):  Remove unused
       argument is_local.  Add argument sym_flags.  Check sym_flags
       in R_ARM_ABS32 case.  Include addend for R_ARM_THM_PC22 case.
       (elf32_arm_relocate_section):  Don't pass local sym and pass
       sym_flags to elf32_arm_final_link_relocate.

Mon Aug 10 20:38:39 1998  Richard Henderson  <rth@cygnus.com>

	* elf64-alpha.c (elf64_alpha_calc_dynrel_sizes): Correct last change
	to not count too few relocs for dynamicly linked executables.

Mon Aug 10 15:35:34 1998  Richard Henderson  <rth@cygnus.com>

	* elf64-alpha.c (alpha_elf_dynamic_symbol_p): Never consider
	symbols without a dynamic index dynamic.  Consider all weak
	symbols dynamic.
	(elf64_alpha_strip_section_from_output): Don't assume 1-1
	correspondance between input and output sections.

Mon Aug 10 15:31:39 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elflink.h (elf_gc_common_finalize_got_offsets): For backends
	that use a .got.plt section start the got offset at zero.

Mon Aug 10 17:31:21 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ieee.c (ieee_write_processor): Correct the processor ID written
	out for bfd_arch_m68k, accommodating change of March 25.

Sun Aug  9 20:55:44 1998  Catherine Moore  <clm@cygnus.com>

        * elf32-arm.c (elf32_arm_final_link_relocate):  Rework
        R_ARM_THM_RPC22 relocations.

Sat Aug  8 15:15:30 1998  Richard Henderson  <rth@cygnus.com>

	* elf64-alpha.c (alpha_elf_dynamic_symbol_p): Undef weak symbols
	are always dynamic.
	(elf64_alpha_calc_dynrel_sizes): Allow enough room for RELATIVE
	.got relocs in -Bsymbolic shared objects.

Wed Aug  5 15:48:08 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-arm.c: Add private flags to ELF header.
	(elf32_arm_print_private_bfd_data): New Function.
	(elf32_arm_set_private_flags): New Function.
	(elf32_arm_copy_private_flags): New Function.
	(elf32_arm_merge_private_bfd_data): New Function.

Mon Aug  3 17:10:15 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-sparc.c (elf32_sparc_check_relocs): Permit WPLT30 against
	a local symbol.
	(elf32_sparc_relocate_section): Likewise.

Sun Aug  2 03:19:23 1998  Richard Henderson  <rth@cygnus.com>

	* elf32-ppc.c (ppc_elf_check_relocs): Init sgot to NULL.  Create the
	.got if any relocation referrs to _GLOBAL_OFFSET_TABLE_.
	(ppc_elf_relocate_section): Pull sgot and splt search to the start
	of the function.  Recognize no .plt as static linking.

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

	* elf32-mips.c (_bfd_mips_elf_section_from_shdr): Don't pass
	".liblist" string through gettext.

Fri Jul 31 16:38:14 1998  Catherine Moore  <clm@cygnus.com>

        * Makefile.am: Add support for elf32-arm.lo.
        * Makefile.in: Rebuild.
        * config.bfd (arm-*-elf):  Define targ_defvec and targ_selvecs.
        (thumb-*-elf): Define targ_defvec and targ_selvecs.
        * configure.in:  Handle bfd_elf32_littlearm_vec and bfd_elf32_bigarm_vec.
        * configure: Regenerate.
        * elf.c: (prep_headers):  Support arch_type of EM_ARM.
        * targets.c:  Support new targets bfd_elf32_bigarm_vec and
        bfd_target bfd_elf32_littlearm_vec.
        * elf32-arm.c:  New file.

Tue Jun 28 19:05:28 1998  Stan Cox  <scox@cygnus.com>

	* libaout.h (M_SPARCLITE_LE): New machine.
	* sunos.c (MACHTYPE_OK): Add machine M_SPARCLITE_LE.
	* aoutf1.h (sunos_set_arch_mach): Add machine M_SPARCLITE_LE.
	(sunos_write_object_contents): Add machine bfd_mach_sparc_sparclite_le
	* aoutx.h (howto_table_ext): Add relocation R_SPARC_REV32.
	(NAME(aout,machine_type)) Add machine bfd_mach_sparc_sparclite_le
	(aout_link_input_section_ext): Add RELOC_SPARC_REV32 support.
	* elf32-sparc.c (_bfd_sparc_elf_howto_table, sparc_reloc_map,
	elf32_sparc_relocate_section): Rename R_SPARC_32LE to be R_SPARC_REV32
	* libbfd.h (bfd_reloc_code_real_names): Rename BFD_RELOC_SPARC_32LE to
	be BFD_RELOC_SPARC_REV32.
	* reloc.c: Ditto.
	* config.bfd (sparc86x-*-aout): New

Fri Jul 24 13:54:19 1998  Nick Clifton  <nickc@cygnus.com>

	* linker.c (_bfd_generic_final_link): Allocate NULL symbol before
	actually mapping the output sections.

Fri Jul 24 11:24:29 1998  Jeffrey A Law  (law@cygnus.com)


	* elf-m10300.c (mn10300_elf_howto): Add R_MN10300_24 entry.
	(mn10300_elf_reloc_map): Similarly.
	(mn10300_elf_final_link_relocate): Handle R_MN10300_24.

Fri Jul 24 12:36:04 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-mips.c (elf_mips_howto_table): Add reloc types used on
	Irix 6.
	(bfd_elf32_bfd_reloc_type_lookup): Add default case.
	* elf64-mips.c: Replace all uses of mips_elf64_reloc_type with
	elf_mips_reloc_type defined in elf/mips.h.

1998-07-24  Ulrich Drepper  <drepper@cygnus.com>

	* elf64-mips.c: Remove reloc_type definition completely.  It's now
	in elf/mips.h.

Thu Jul 23 13:33:19 1998  Doug Evans  <devans@canuck.cygnus.com>

	* elf64-mips.c (mips_elf64_reloc_type): #if 0 out more relocations
	as they are defined in elf/mips.h now.

Thu Jul 23 11:29:43 1998  Jeffrey A Law  (law@cygnus.com)


	* Re-add lost change:
        * elf-m10300.c (elf32_mn10300_link_hash_entry): Add new field
        "movm_stack_size".
        (mn10300_elf_relax_section): Include stack space for register saves
        in the imm8 field of a "call" instruction.
        (compute_function_info): Determine how much stack is allocated by
        the movm instruction.  Fix typo.
        (elf32_mn10300_link_hash_newfunc): Initialize movm_stack_size.

Thu Jul 23 11:38:05 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-sparc.c (elf_backend_got_header_size): Define as 4.
	* elf64-sparc.c (elf_backend_got_header_size): Define as 8.

1998-07-22  Ulrich Drepper  <drepper@cygnus.com>

	* elf32-ppc.c: Change use of pp_reloc_type to elf_ppc_reloc_type.

Wed Jul 22 16:27:18 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-hppa.h: Let ELF header define the enum containing the
	external reloc numbers.
	* elf32-i386.h: Likewise.

1998-07-22 14:57  Ulrich Drepper  <drepper@cygnus.com>

	* elf-m10300.c: Let ELF header now define the macros to get the enum.
	* elf32-mips.c: Likewise.
	* elf32-ppc.c: Likewise.

Wed Jul 22 13:53:52 1998  Nick Clifton  <nickc@cygnus.com>

	* bfd-in2.h: Change type of 'class' parameter to 'unsigned int' in
	bfd_coff_set_symbol_class(), in order to avoid K&R compatability
	prblems.
	* bfd-in.h: Regenerate.
	* coffgen.c (bfd_coff_set_symbol_class): Change type of 'class'
	parameter to 'unsigned int' to avoid K&R compatability problems.

Wed Jul 22 16:43:24 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ieee.c (ieee_find_nearest_line): Change filename_ptr and
	functionname_ptr to be const.  Change line_ptr to be unsigned.

	* coffcode.h (coff_link_output_has_begun): Simplify handling when
	macro is not defined.  Change second parameter from bfd_link_info
	to coff_final_link_info.  Add prototype.
	(coff_final_link_postscript): Simplify handling when macro is not
	defined.  Add prototype.

1998-07-22 13:08  Ulrich Drepper  <drepper@cygnus.com>

	* elf-mn10300.c: Before include system specific ELF header define
	START_RELOC_NUMBERS, RELOC_NUMBER, and END_RELOC_NUMBERS.
	* elf32-mips.c: Likewise.
	* elf32-ppc.c: Likewise.

Wed Jul 22 13:46:51 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elf64-mips.c (mips_elf64_reloc_type): Copy Ulrich's elf32-mips.c
	temporary patch over to elf64-mips.c as well.

1998-07-21  Ulrich Drepper  <drepper@cygnus.com>

	* elf32-mips.c (reloc_type): Temporarily disable definition of
	standard relocation since they are now defined in elf/mips.h.

Tue Jul 21 09:47:00 1998  Catherine Moore  <clm@cygnus.com>

        * elf-m10200.c (mn10200_elf_final_link_relocate):
        Modify range test for case R_MN10200_8.

        * elf-m10300.c (mn10300_elf_final_link_relocate):
        Modify range test for case R_MN10300_8.

Mon Jul 20 18:50:54 1998  Richard Henderson  <rth@cygnus.com>

	* elf-bfd.h (struct elf_backend_data): Add got_ & plt_header_size.
	* elf32-i386.c (elf_backend_got_header_size): Define.
	(elf_backend_plt_header_size): Define.
	* elf32-m68k.c, elf32-mips.c, elf32-ppc.c: Likewise.
	* elf32-sparc.c, elf64-alpha.c, elf64-sparc.c: Likewise.
	* elfxx-target.h: Provide a default of zero.
	* elflink.c (_bfd_elf_create_got_section): Use got_header_size.
	* elflink.h (elf_gc_common_finalize_got_offsets): Likewise.

	* elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Don't remove a PLT
	entry from an executable, even if the plt refcount goes to 0.

Mon Jul 20 12:47:26 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* aoutx.h (NAME(aout,find_nearest_line)): Also remember the
	directory name at the line number.

	* elf.c (_bfd_elf_find_nearest_line): Also consider symbols
	with an unspecified type.

Wed Jul 15 11:20:01 1998  Ian Lance Taylor  <ian@cygnus.com>

	* sunos.c: Add undef of valid to avoid problem on SunOS.

Tue Jul 14 15:30:59 1998  Richard Henderson  <rth@cygnus.com>

	* config.bfd (i?86-pc-beos{pe,elf,}*): Recognize.

Tue Jul 14 11:22:21 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf32-m68k.c (elf_m68k_check_relocs): Also reference count
	R_68K_PCxx and R_68K_xx relocations.  Make sure that
	ELF_LINK_HASH_NEEDS_PLT is always set for a PLT reloc reference.
	(elf_m68k_gc_sweep_hook): Also reference count R_68K_PCxx and
	R_68K_xx relocations.
	(elf_m68k_adjust_dynamic_symbol): Reset the plt offset of a symbol
	that has no plt entry.
	(elf_m68k_relocate_section): Ignore the plt offset in a static
	link.
	* elflink.h (elf_adjust_dynamic_symbol): Reset the plt offset for
	an ignored symbol.
	(elf_gc_common_finalize_got_offsets): Set the got offsets also in
	a static link.

	* elf32-m68k.c (R_68K_GNU_VTINHERIT, R_68K_GNU_VTENTRY): New reloc
	types.
	(howto_table, reloc_map): Add entries for them.
	(elf_m68k_check_relocs): Handle them.  Implement reference
	counting for got and plt entries.
	(elf_m68k_gc_mark_hook, elf_m68k_gc_sweep_hook): New functions.
	(elf_m68k_adjust_dynamic_symbol): Handle unreferenced plt
	symbols.
	(rtype_to_howto_rel, elf_info_to_howto_rel): Delete.
	(elf_m68k_relocate_section): Handle the new reloc types.
	(bfd_elf32_bfd_final_link, elf_backend_gc_mark_hook,
	elf_backend_gc_sweep_hook, elf_backend_can_gc_sections): Define.
	* elflink.h (elf_link_add_object_symbols): When creating an
	indirect reference for symbol versioning also copy the plt
	offset.
	(elf_fix_symbol_flags): When clearing the ELF_LINK_HASH_NEEDS_PLT
	flag also reset the plt offset.
	(elf_link_assign_sym_version): Likewise.
	(elf_gc_common_finalize_got_offsets): Increment the got offset by
	the size of the entry in bytes.
	(elf_gc_allocate_got_offsets): Likewise.

Tue Jul 14 11:18:14 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_gc_sections): Return true rather than falling off
	the bottom.

	* coffgen.c (bfd_coff_set_symbol_class): Call bfd_alloc, not
	xmalloc.

Mon Jul 13 11:06:31 1998  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c: Supress definition of TARGET_UNDERSCORE and add a
	comment describing when it should be enabled.
	Changed definition of USER_LABEL_PREFIX to "", to fall into line
	with GCC sources.

Mon Jul 13 13:06:54 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ieee.c (ieee_slurp_external_symbols): Handle call optimization
	information ATN records.

Fri Jul 10 16:31:06 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ieee.c (ieee_slurp_external_symbols): Select an appropriate
	section for an absolute symbol in a fully linked file.  Based on
	patch from Christian Holland <CHolland@de.lucent.com>.

Wed Jul  8 11:29:56 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* coff-m88k.c (m88k_special_reloc): Don't lose the information
	that a symbol is undefined.

Tue Jul  7 21:47:02 1998  Jeffrey A Law  (law@cygnus.com)

	* som.c (som_bfd_gc_sections): Define.

Mon Jul  6 11:35:50 1998  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c (aoutarm_std_reloc_howto): Do not complain about
	overflows in ARM_26D patches, since they have already been
	implmented.  Patch submitted by Dr. R.J. Black <rjb@dcs.gla.ac.uk>

Sat Jul  4 12:25:36 1998  Ian Lance Taylor  <ian@cygnus.com>

	* coffcode.h (coff_write_object_contents): If we have any long
	section names, call coff_write_symbols even if there are no
	symbols.

Fri Jul  3 13:11:35 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elf.c (copy_private_bfd_data): Only set phdr_included once for a
	PT_LOAD segment, rather than only setting it once for the entire
	file.

	* elf.c (_bfd_elf_make_section_from_shdr): When setting the LMA,
	rather than ignoring every phdr with a p_paddr of 0, ignore all
	the phdrs if they all have a p_paddr of 0.

	* stabs.c (_bfd_write_stab_strings): Check whether the .stabstr
	section was discarded from the link.

Fri Jul  3 14:39:05 1998  J"orn Rennecke <amylaar@cygnus.co.uk>

	* coff-sh.c (sh_insn_uses_freg): Ignore lowest bit of register number.

Fri Jul  3 14:35:48 1998  J"orn Rennecke <amylaar@cygnus.co.uk>

	* coff-sh.c (sh_insns_conflict): Load of fpscr conflicts with
	floating point operations.

Thu Jul  2 18:37:25 1998  Ian Lance Taylor  <ian@cygnus.com>

	* cofflink.c (_bfd_coff_link_input_bfd): Skip undefined global
	function symbols.

Thu Jul  2 14:59:42 1998  Klaus Kaempf  <kkaempf@rmi.de>

	Merge of vax/vms (read-only) support
	* configure.com: Support Vax target.
	* makefile.vms: Support Vax target.
        * vms.h: Renamed from evax.h, merged vax/vms (read-only) support.
	* vms.c: Renamed from evax-alpha.c, merged vax/vms (read-only)
	support.
	* vms-hdr.c: Renamed from evax-emh.c, merged vax/vms (read-only)
	support.
	* vms-gsd.c: Renamed from evax-egsd.c, merged vax/vms (read-only)
	support.
	* vms-tir.c: Renamed from evax-etir.c, merged vax/vms (read-only)
	support.
	* vms-misc.c: Renamed from evax-misc.c, merged vax/vms (read-only)
	support.
	* libbfd.c (real_read): Use unbuffered read on VMS/Vax.
	* targets.c (bfd_target_ovax_flavour): New flavour.
	(vms_alpha_vec): Renamed from evax_alpha_vec.
	(vms_vax_vec): New.
	(target_vector): Update accordingly.
	* config.bfd (alpha*-*-*vms*): Use vms_alpha_vec, not
	evax_alpha_vec.
	(vax*-*-*vms*): New target.
	* Makefile.am: Update for renamed files.  Rebuild dependencies.
	* bfd-in2.h: Rebuild.
	* configure.in, Makefile.in, aclocal.m4: Rebuild.

Thu Jul  2 13:31:55 1998  Ian Lance Taylor  <ian@cygnus.com>

	Based on patch from Matt Semersky <matts@scd.hp.com>:
	* linker.c (_bfd_generic_final_link): Force a trailing NULL
	pointer on abfd->outsymbols.
	(generic_add_output_symbol): Handle NULL sym parameter.

Wed Jul  1 17:05:53 1998  Nick Clifton  <nickc@cygnus.com>

	* elf.c (copy_private_bfd_data): Add support for changing VMA or
	LMA of sections.

Wed Jul  1 16:58:50 1998  Ian Lance Taylor  <ian@cygnus.com>

	* coff-sh.c (sh_relax_delete_bytes): Correct address comparisons
 	when handling 32 bit immediate relocs.
	* elf32-sh.c (sh_elf_relax_delete_bytes): Likewise.

Tue Jun 30 09:55:03 1998  Jeffrey A Law  (law@cygnus.com)

	* section.c (STD_SECTION): Account for recently added gc_mark
	field in struct asection.

	* elf-m10300.c (bfd_mn10300_elf_merge_private_bfd_data): New function.
	(bfd_elf32_bfd_merge_private_bfd_data): Define.

Thu Jun 25 18:31:41 1998  Richard Henderson  <rth@cygnus.com>

	ELF Section-level Garbage Collection:
	* bfd.c (bfd_gc_sections): New.
	* aout-adobe.c: Hook to default implementation.
	* aout-target.h, aout-tic30.c, binary.c, bout.c: Likewise.
	* coff-alpha.c, coff-mips.c, coff-rs6000.c, coffcode.h: Likewise.
	* evax-alpha.c, i386msdos.c, i386os9k.c, ieee.c: Likewise.
	* ihex.c, nlm-target.h, oasys.c, ppcboot.c, srec.c: Likewise.
	* tekhex.c, versados.c: Likewise.
	* libbfd-in.h (_bfd_nolink_bfd_gc_sections): New.
	* targets.c (BFD_JUMP_TABLE_LINK): Add _bfd_gc_sections.

	* reloc.c (BFD_RELOC_VTABLE_INHERIT, BFD_RELOC_VTABLE_ENTRY): New.
	(bfd_generic_gc_sections): New.
	* section.c (SEC_KEEP): New.
	(asection): Add gc_mark member.

	* elfcode.h (elf_gc*): New name remappings.
	* elflink.h (elf_link_input_bfd): Don't set contents on stabs
	sections to be excluded.
	(elf_gc_mark, elf_gc_sweep, elf_gc_sweep_symbol): New.
	(elf_gc_propogate_vtable_entries_used): New.
	(elf_gc_smash_unused_vtentry_relocs): New.
	(elf_gc_sections, elf_gc_record_vtinherit, elf_gc_record_vtentry): New.
	(elf_gc_common_finalize_got_offsets): New.
	(elf_gc_allocate_got_offsets, elf_gc_common_final_link): New.
	* elfxx-target.h: Add and default gc hooks.

	* elf-bfd.h (struct elf_link_hash_entry): Swap got_offset/plt_offset
	for unions.
	(struct elf_obj_tdata): Likewise for local_got_offsets.
	* elf.c, elf-i386.c, elf32-m68k.c, elf32-mips.c: Update all uses.
	* elf32-ppc.c, elf32-sparc.c, elf64-alpha.c: Likewise.
	* elf64-sparc.c, elflink.h: Likewise.

	* elf-bfd.h (struct elf_link_hash_entry): Add vtable members.
	(ELF_LINK_HASH_MARK): Define.
	(struct elf_backend_data): Add GC hooks.
	* elf.c (_bfd_elf_link_hash_newfunc): Zero vtable members.

	* elf-m10300.c (mn10300_elf_check_relocs): New.
	(mn10300_elf_gc_mark_hook): New.
	(R_MN10300_GNU_VTINHERIT, R_MN10300_GNU_VTENTRY): New.
	(elf_mn10300_howto, mn10300_reloc_map): Handle them.
	(mn10300_elf_final_link_relocate): Likewise.
	(mn10300_elf_relocate_section): Likewise.
	(elf_backend_can_gc_sections): Define.
	* elf32-mips.c (R_MIPS_GNU_VTINHERIT, R_MIPS_GNU_VTENTRY): New.
	(elf_mips_gnu_vtinherit_howto, elf_mips_gnu_vtentry_howto): New.
	(bfd_elf32_bfd_reloc_type_lookup): Handle them.
	(mips_info_to_howto_rel): Likewise.
	(mips_elf_relocate_section): Likewise.
	(mips_elf_check_relocs): Likewise.
	(mips_elf_gc_mark_hook, mips_elf_gc_sweep_hook): New.
	(elf_backend_can_gc_sections): Define.
	* elf32-ppc.c (R_PPC_GNU_VTINHERIT, R_PPC_GNU_VTENTRY): New.
	(ppc_elf_howto_raw): Handle them.
	(ppc_elf_reloc_type_lookup): Likewise.
	(ppc_elf_relocate_section): Likewise.
	(ppc_elf_check_relocs): Reference count .got and .plt entires.
	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 now-local symbol should not have a dynamic
	relocation.

Mon Feb 23 16:17:08 1998  Ian Lance Taylor  <ian@cygnus.com>

	* peicode.h (coff_swap_filehdr_in): Don't set BFD flag HAS_SYMS in
	COFF filehdr flags.
	(pe_print_private_bfd_data): Print PE flags.  From Mikey
	<jeffdb@netzone.com>.

Sun Feb 22 20:39:00 1998  Richard Henderson  <rth@cygnus.com>

	* elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Don't create
 	a plt entry when we can determine that we authoritatively define
 	the symbol.

Sun Feb 22 20:33:05 1998  Richard Henderson  <rth@cygnus.com>

	* configure.in (COREFILE selection): Remove sparc-*-linux*.  They
	don't actually use trad-core, but a SunOS-style core file handled
	by gdb directly.
	* hosts/sparclinux.h: Remove.

Wed Feb 18 15:31:06 1998  Ian Lance Taylor  <ian@cygnus.com>

	* peicode.h (pe_print_idata): If there is no .idata section, look
	for the import tables in some other section.  Make the initial
	label line up better with the data.  Print the import address
	table even if there is no import name table.  If the import
	address table holds actual addresses, print them.

Tue Feb 17 12:58:34 1998  Ian Lance Taylor  <ian@cygnus.com>

	* libbfd.c (bfd_seek): If fseek fails, save errno around call to
	bfd_tell.  If errno is EINVAL, set bfd_error_file_truncated, not
	bfd_error_system_call.

Fri Feb 13 13:11:33 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (AUTOMAKE_OPTIONS): Define.
	* configure, Makefile.in, aclocal.m4: Rebuild with automake 1.2e.

	From H.J. Lu <hjl@gnu.org>:
	* Makefile.am (libbfd_la_LDFLAGS): Define.
	* Makefile.in: Rebuild.

Thu Feb 12 17:31:11 1998  Ian Lance Taylor  <ian@cygnus.com>

	NetBSD patches from Gordon W. Ross <gwr@mc.com>:
	* netbsd.h (MACHTYPE_OK): Define.
	(MY(write_object_contents)): Use DEFAULT_ARCH and DEFAULT_MID when
	calling N_SET_MACHTYPE, rather than having a switch.
	* libaout.h (enum machine_type): Add M_PMAX_NETBSD, M_VAX_NETBSD,
	and M_ALPHA_NETBSD.
	* i386netbsd.c (MACHTYPE_OK): Don't define.
	(DEFAULT_MID): Define.
	* m68k4knetbsd.c (SEGMENT_SIZE): Don't define.
	(MACHTYPE_OK): Don't define.
	(DEFAULT_MID): Define.
	* m68knetbsd.c: (MACHTYPE_OK): Don't define.
	(DEFAULT_MID): Define.
	* ns32knetbsd.c (MACHTYPE_OK): Don't define.
	(DEFAULT_MID): Define.
	* sparcnetbsd.c (MACHTYPE_OK): Don't define.
	(DEFAULT_MID): Define.

	NetBSD patches from Gordon W. Ross <gwr@mc.com>:
	* vaxnetbsd.c: New file.
	* netbsd-core.c: Clean up.  Remove unused macros.  Use netbsd
	rather than netbsd_core.
	* targets.c (vaxnetbsd_vec): Declare.
	(bfd_target_vector): Add vaxnetbsd_vec.  If NETBSD_CORE is
	defined, add netbsd_core_vec.
	* configure.in: Set COREFILE for alpha*-*-netbsd* and
	powerpc-*-netbsd* to netbsd-core.lo.  If COREFILE is
	netbsd-core.lo, set COREFLAG to -DNETBSD_CORE.
	* config.bfd (alpha*-*-netbsd*): New target.
	* Makefile.am: Rebuild dependencies.
 	(BFD32_BACKENDS): Add vaxnetbsd.lo.
	(BFD32_BACKENDS_CFILES): Add vaxnetbsd.c.
	* configure, Makefile.in: Rebuild.

	* configure.host: Remove the old shared library build stuff.  We
	now use libtool instead.

Wed Feb 11 17:13:09 1998  Richard Henderson  <rth@cygnus.com>

	* tekhex.c (tekhex_write_object_contents): Call tekhex_init.

Tue Feb 10 19:23:28 1998  H.J. Lu  <hjl@gnu.org>

	* configure.in: Take stab-syms.lo out of sparclinux_vec list.
	* configure: Rebuild.

Tue Feb 10 15:16:38 1998  Nick Clifton  <nickc@cygnus.com>
	* elf32-v850.c (remember_hi16s_reloc): New function.
	(find_remembered_hi16s_reloc): New function.
	(v850_elf_store_addend_in_insn): Use the above new functions to
	match up HI6S relocs with LO16 relocs.

Tue Feb 10 15:01:39 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Change -linux* to -linux-gnu*.
	* config.bfd, configure.host: Likewise.
	* configure: Rebuild.

Mon Feb  9 19:40:59 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_store_addend_in_insn): Fix another
	LO16/HI16S bug and improve comments about what is going on.

Sat Feb  7 15:27:03 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure, aclocal.m4: Rebuild with new libtool.

Fri Feb  6 14:48:20 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_merge_private_bfd_data): Do not complain
	when merging v850 code into v850e/v850ea code.  Do not initialise
	output flags if the input is the default architecture.

Fri Feb  6 11:50:22 1998  Jeffrey A Law  (law@cygnus.com)

	* elf32-mips.c (bfd_elf32_bfd_reloc_type_lookup): For BFD_RELOC_CTOR
	get the size from bfd_arch_bits_per_address instead of directly
	from the isa.

Thu Feb  5 14:21:34 1998  Michael Meissner  <meissner@cygnus.com>

	* libbfd-in.h (BFD_ALIGN): If rounding up would cause the address
	to wrap, just return all 1's bits instead.
	* libbfd.h: Regenerate.

Thu Feb  5 11:51:05 1998  Ian Lance Taylor  <ian@cygnus.com>

	* coff-i386.c (coff_pe_i386_relocate_section): New static function
	if COFF_WITH_PE.
	(coff_relocate_section): If COFF_WITH_PE, define as
	coff_pe_i386_relocate_section.
	* coffcode.h (coff_write_object_contents): If COFF_IMAGE_WITH_PE,
	skip empty sections, to match coff_write_object_contents.

	* elf64-mips.c (mips_elf64_swap_reloca_out): Swap out r_addend,
 	rather than swapping out r_offset twice.  From Luke Deller
 	<luked@cse.unsw.edu.au>.

Wed Feb  4 19:11:28 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Set libtool_enable_shared rather than
	libtool_shared.  Remove diversion hack.
	* configure, Makefile.in, doc/Makefile.in, aclocal.m4: Rebuild
	with new libtool.

Wed Feb  4 16:10:21 1998  Brent Baccala  <baccala@freesoft.org>

	* syms.c (struct stab_cache): Define.
	(struct stab_find_info): Remove cached_offset, cached_stab,
	cached_str, and cached_stroff fields.  Add file_cache,
	function_cache, and line_cache fields.
	(_bfd_stab_section_find_nearest_line): Use extensive caching to
	speed up searches.

Wed Feb  4 13:34:22 1998  Ian Lance Taylor  <ian@cygnus.com>

	* peicode.h (pe_print_idata): Check for import of ordinal rather
	than name.
	(pe_print_edata): If there is no .edata section, look for the
	export data in some other section.

Mon Feb  2 20:05:42 1998  Jason Molenda  (crash@bugshack.cygnus.com)

	* configure.in: Change version to 2.8.4.
	* configure: Regenerated.

Mon Feb  2 17:39:39 1998  Steve Haworth  <steve@pm.cse.rmit.EDU.AU>

	Add tms320c30 support:
	* cpu-tic30.c: New file.
	* aout-tic30.c: New file.
	* coff-tic30.c: New file.
	* archures.c (bfd_arch_tic30): Define.
	(bfd_tic30_arch): Declare.
	(bfd_archures_list): Add bfd_tic30_arch.
	* targets.c (bfd_target_vector): Add tic30_aout_vec and
	tic30_coff_vec.
	* reloc.c (BFD_RELOC_TIC30_LDP): Define.
	* coffcode.h (coff_set_arch_mach_hook): Add tic30 case.
	(coff_set_flags): Likewise.
	* config.bfd (tic30-*-*aout*, tic30-*-*coff*): New targets.
	* configure.in (tic30_aout_vec, tic30_coff_vec): New vectors.
	* Makefile.am: Rebuild dependencies.
	(ALL_MACHINES): Add cpu-tic30.lo.
	(ALL_MACHINES_CFILES): Add cpu-tic30.c.
	(BFD32_BACKENDS): Add aout-tic30.lo and coff-tic30.lo.
	(BFD32_BACKENDS_CFILES): Add aout-tic30.c and coff-tic30.c.
	* configure, Makefile.in, bfd-in2.h, libbfd.h: Rebuild.

Mon Feb  2 12:25:12 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_store_addend_in_insn): Allow HI16_S reloc
	to lag behind LO16 reloc by a couple of instructions.

Mon Feb  2 14:09:46 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am ($(srcdir)/bfd-in2.h): Add dummy command to force
	make to reexamine the file timestamp.
	($(srcdir)/libbfd.h, $(srcddir)/libcoff.h): Likewise.

	* elf64-alpha.c (ELF_MAXPAGESIZE): Change to 0x10000 from
	0x100000.

Fri Jan 30 19:07:07 1998  Geoff Keating  <geoffk@ozemail.com.au>

	* elf32-ppc.c (ppc_elf_create_dynamic_sections): New procedure
	to create .dynsbss and .rela.sbss sections.
	(ppc_elf_adjust_dynamic_symbol): Put space for small data to be
	copied from dynamic objects into .sbss.
	(ppc_elf_size_dynamic_sections): Strip .rela.sbss if we don't
	use it.  Correct typo of .rela.sdata2.
	(ppc_elf_finish_dynamic_symbol): Generate reloc to where we
	put the data, which may now be in .sbss.
	(ppc_elf_relocate_section): A SDAREL16 reloc can be in dynsbss.
	(elf_backend_create_dynamic_sections): Define as
	ppc_elf_create_dynamic_sections.

	* elf32-ppc.c (ppc_elf_check_relocs): Don't emit R_PPC_REL* relocs
	against _GLOBAL_OFFSET_TABLE_.
 	(ppc_elf_relocate_section): Don't emit R_PPC_REL32 relocs in
	shared libraries which refer to local symbols.  Make sure that the
	test for allocating space for a reloc in a shared object is the
	same as the test for emitting a reloc.

Thu Jan 29 15:55:35 1998  J.J. van der Heijden  <J.J.vanderHeijden@student.utwente.nl>

	* config.bfd (i[3456]-*-mingw32*): New target.
	* acinclude.m4 (BFD_BINARY_OPEN): Check for mingw32.
	* aclocal.m4, configure: Rebuild.

Wed Jan 28 13:41:26 1998  Ian Lance Taylor  <ian@cygnus.com>

	* elf.c (_bfd_elf_close_and_cleanup): Only check the strtab if we
	have a bfd_object.

Tue Jan 27 21:43:55 1998  Richard Henderson  <rth@cygnus.com>

	Sparc v9 ABI compliant PLT:
	* elf64-sparc.c (PLT_HEADER_SIZE): V9 ABI uses 4 entries.
	(plt_templates, sparc64_elf_build_plt_entry): Delete.
	(LARGE_PLT_THRESHOLD): New define.
	(GOT_RESERVED_ENTRIES): V9 ABI only uses 1.
	(sparc64_elf_build_plt): New function.
	(sparc64_elf_plt_entry_offset): Likewise.
	(sparc64_elf_plt_ptr_offset): Likewise.
	(sparc64_elf_adjust_dynamic_symbol): Change h->plt_offset to
	contain the index for convenience.  Skip the initial entries
	in .rela.plt.
	(sparc64_elf_size_dynamic_sections): Zero the allocated contents
	memory for the benefit of .rela.plt.
	(sparc64_elf_relocate_section): Call sparc64_elf_plt_entry_offset.
	(sparc64_elf_finish_dynamic_symbol): Kill template stuff.  Use
	sparc64_elf_plt_entry_offset & sparc64_elf_plt_ptr_offset for reloc.
	(sparc64_elf_finish_dynamic_sections): DT_PLTGOT points to .plt.
	Call sparc64_elf_build_plt.
	(elf_backend_want_got_plt): No.
	(elf_backend_plt_readonly): No.
	(elf_backend_plt_alignment): 8.

	* elf.c (_bfd_elf_close_and_cleanup): New function; free the shstrtab.
	* elf-bfd.h (_bfd_elf_close_and_cleanup): Declare it.
	* elfxx-target.h (bfd_elfNN_close_and_cleanup): Arrange for it
	to be called.

Tue Jan 27 21:45:15 1998  Jeffrey A Law  (law@cygnus.com)

	* archures.c (bfd_mach_mips*): Add definitions for various MIPS
	processors.
	* cpu-mips.c (arch_info_struct): Add mips variants.
	* bfd-in2.h: Rebuilt.

Tue Jan 27 15:06:04 1998  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c (coff_arm_relocate_section): Preserve the contents of
	t2a3_b_insn.

Tue Jan 27 12:47:27 1998  Robert Lipe  <robertl@dgii.com>

	* config.bfd (i[3456]86-sco3.2v5*): ELF now the default.
	(i[3456]86sco3.2v5*coff): New target.

Mon Jan 26 15:41:30 1998  Ian Lance Taylor  <ian@cygnus.com>

	* bfd-in2.h: Rebuild with changes to chew--tab expansion.

Thu Jan 22 21:26:48 1998  Richard Henderson  <rth@cygnus.com>

	* bfd.c (bfd_get_error_handler): Add orthogonal function.
	* bfd-in2.h: Regenerate.

Thu Jan 22 21:13:39 1998  Richard Henderson  <rth@cygnus.com>

	* tekhex.c (tekhex_write_object_contents): Check for no symbols.

Wed Jan 21 21:19:03 1998  Ian Lance Taylor  <ian@cygnus.com>

	* coff-i386.c (coff_i386_rtype_to_howto): If COFF_WITH_PE, don't
 	adjust addend for an output common symbol (from Jimmy Blair
 	<jimmyb@wrs.com>).  If COFF_WITH_PE, adjust addend for PC relative
 	defined symbol to counteract adjustment made in generic relocation
 	code.

	* dwarf2.c: Include sysdep.h, not stdio.h and stdlib.h.

Wed Jan 21 21:16:06 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* coff-m88k.c (GET_SCNDHR_NRELOC): Fix typo in macro name.
	(GET_SCNDHR_NLNNO): Likewise.

Mon Jan 19 12:49:52 1998  Ian Lance Taylor  <ian@cygnus.com>

	* cpu-sh.c (arch_info_struct): Correct next field of sh3e.

Wed Jan 14 17:23:27 1998  Nick Clifton  <nickc@cygnus.com>

	* elf32-m32r.c: Add macros to handle NOP insertion.

Wed Jan 14 16:15:22 1998  Richard Henderson  <rth@cygnus.com>

	* xcofflink.c (xcoff_mark_symbol): Don't mark the absolute section.
	(xcoff_mark): Likewise.
	(xcoff_build_ldsyms): Mark absolute symbols.

Wed Jan 14 16:03:11 1998  Richard Henderson  <rth@cygnus.com>

	* bout.c (b_out_write_object_contents): Sort symbols before output
	to keep {CALL,BAL}NAME symbols adjacent.
	(b_out_symbol_cmp): New function.

For older changes see ChangeLog-9697

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
