Tue Dec 30 12:45:18 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-sparc.c (elf32_sparc_check_relocs): If -Bsymbolic, don't
	allocate space for a PC relative reloc against a symbol which is
	defined in a regular file.
	(elf32_sparc_relocate_section): If -Bsymbolic, don't copy a PC
	relative reloc against a symbol which is defined in a regular
	file.

Mon Dec 29 18:02:28 1997  Ian Lance Taylor  <ian@cygnus.com>

	From Jonathan Stone <jonathan@DSG.Stanford.EDU>:
	* config.bfd (mips-dec-netbsd*): Add ECOFF vectors to
	targ_selvecs.
	(mips*el-*-netbsd*): Like mips-dec-netbsd*.
	(mips*-*-netbsd*): New target.

Mon Dec 29 17:13:28 1997  H.J. Lu  (hjl@gnu.org)

	* elflink.h (elf_link_assign_sym_version): Change error message
	from "undefined version name" to "undefined versioned symbol
	name".

Mon Dec 29 11:41:16 1997  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c (coff_arm_relocate_section): Fix typo from previous
	delta.

Tue Dec 23 17:01:10 1997  Ian Lance Taylor  <ian@cygnus.com>

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

	* peicode.h (coff_swap_scnhdr_out): Set .reloc section to be
	shared.  Set stab* sections to be shared and read.  Set .rsrc
	section to be read and shared.

Mon Dec 22 13:20:57 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am: Rebuild dependencies.
 	(ALL_MACHINES_CFILES): Add dwarf2.lo.
	(ALL_MACHINES_CFILES): Add dwarf2.c.
	* Makefile.in: Rebuild.

	* coff-arm.c: Don't include obstack.h.

Mon Dec 22 13:04:33 1997  Joel Sherrill  <joel@oarcorp.com>

        * config.bfd (i[3456]86*-go32-rtems*): Fix to be the same as
	i[3456]86-go32.

Thu Dec 18 16:01:25 1997  Doug Evans  <devans@canuck.cygnus.com>

	* configure: Regenerate to get @SHELL@ substituted.

Wed Dec 17 09:45:09 1997  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c (coff_arm_relocate_section): Only look at section
	owner if there is one.

	* elf.c (assign_file_positions_for_segments): Fail if there is not
	enough room for the program headers.

Tue Dec 16 08:09:56 1997  Gavin Koch  <gavin@cygnus.com>

	* elf.c (_bfd_elf_find_nearest_line): Call
	_bfd_dwarf2_find_nearest_line first.
	* elf32-mips.c (_bfd_mips_elf_find_nearest_line): Same.
	* dwarf2.c: New file; implement _bfd_dwarf2_find_nearest_line.

Mon Dec 15 16:08:52 1997  Nick Clifton  <nickc@cygnus.com>

	* archures.c: Add bfd_mach_m32r.

Mon Dec 15 16:11:22 1997  Fred Fish  <fnf@cygnus.com>

	* coffcode.h (ALIGN_SECTIONS_IN_FILE): Define if I960 not defined.
	(coff_compute_section_file_positions): Use ALIGN_SECTIONS_IN_FILE
	to decide when to align the file sections for paging.
	* coffcode.h (ALIGN_SECTIONS_IN_FILE): Undefine for TIC80COFF.

Mon Dec 15 15:01:15 1997  Nick Clifton  <nickc@cygnus.com>

	* elf32-m32r.c (m32r_elf_object_p): New Function.
	(m32r_elf_final_write_processing):  New Function.
	(m32r_elf_set_private_flags):  New Function.
	(m32r_elf_copy_private_bfd_data):  New Function.
	(m32r_elf_merge_private_bfd_data):  New Function.
	(m32r_elf_print_private_bfd_data):  New Function.
	(elf_backend_object_p): Point to m32r_object_p.
	(elf_backend_final_write_processing): Point to
	m32r_elf_final_write_processing.
	(bfd_elf32_bfd_copy_private_bfd_data): Point to
	m32r_elf_copy_private_bfd_data.
	(bfd_elf32_bfd_merge_private_bfd_data): Point to
	m32r_elf_merge_private_bfd_data.
	(bfd_elf32_bfd_set_private_flags): Point to
	m32r_elf_set_private_bfd_data.
	(bfd_elf32_bfd_print_private_bfd_data): Point to
	m32r_elf_print_private_bfd_data.


	* bfd-in2.h (bfd_mach_m32r): Add identifier for M32R architecture
	machines.

Fri Dec 12 11:30:28 1997  Brendan Kehoe  <brendan@canuck.cygnus.com>

	* configure: Only build libbfd shared if --enable-shared's value
	was `yes', or was set to `*bfd*'.
	* aclocal.m4: Likewise.
	* NOTE: this really needs to be fixed in libtool/libtool.m4, the
	original source of this bit of code.  It's not clear what the best fix
	would be, though.

Thu Dec 11 17:48:11 1997  Richard Henderson  <rth@cygnus.com>

	* linker.c (generic_link_add_symbol_list): Always init udata.p so
	that the generic relaxation code can function when input and output
	file formats are mismatched.

Thu Dec 11 01:02:18 1997  Ian Lance Taylor  <ian@cygnus.com>

	* coff-sh.c (bfd_coff_small_swap_table): Initialize new fields.

	* elf.c (assign_file_positions_for_segments): For a loadable
	section, make sure that the load address is correct relative to
	the load address of the segment plus the size of the segment so
	far.

	* coffcode.h (_coff_link_output_has_begun): Make static.
	(_coff_final_link_postscript): Likewise.

Wed Dec 10 23:37:11 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_link_input_bfd): Handle a relocateable link in
	which a relocation refers to an indirect or warning symbol.

Wed Dec 10 11:15:55 1997  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c (bfd_arm_coff_final_link): Function deleted.
	(coff_arm_final_link_postscript): New function.
	(coff_arm_link_output_has_begun): New function.

	* libcoff.h (struct bfd_coff_backend_data): Add new fields:
	_bfd_coff_link_output_has_begun and
	_bfd_coff_final_link_postscript.  Add new macros:
	bfd_coff_link_output_has_begun() and
	bfd_coff_final_link_postscript().

	* cofflink.c (_bfd_coff_final_link): Insert calls to
	bfd_coff_link_output_has_begun() and
	bfd_coff_final_link_postscript().

	* coffcode.h: Add two new fields to bfd_coff_backend_data
	structure: _bfd_coff_link_output_has_begun and
	_bfd_coff_final_link_postscript.  Add default initialisers for
	these fields.  Add overridable aliases for the coff swap functions
	in the backend data structure.

	* elf32-v850.c: Update with patches from the branch to fix
	HI16_S/LO16 reloc pairs.

Wed Dec 10 14:06:48 1997  Michael Meissner  <meissner@cygnus.com>

	* elf32-d30v.c (d30v_info_to_howto_rela): New function to support
	RELA relocations.
	(USE_REL): Don't define any more, switch to using RELA
	relocations.
	(elf_info_to_howto): Define as d30v_info_to_howto_rela.

Tue Dec  9 11:37:53 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* archures.c (bfd_mach_mips*): Define.
	(bfd_default_scan): For 3000 and 4000 replace magic constant with
 	macro.

	* cpu-mips.c (N): Define.
	(bfd_mips_arch, arch_info_struct): Re-write using macro N, replace
 	numbers with bfd_mach_mips* macros.

Fri Dec  5 11:13:46 1997  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_reloc, v850_elf_store_addend_in_insn,
	v850_elf_relocate_section): Fix reloc addend handling.
	(v850_elf_section_from_bfd_section, v850_elf_symbol_processing,
	v850_elf_add_symbol_hook, v850_elf_link_output_symbol_hook,
	v850_elf_section_from_shdr, v850_elf_fake_sections): New functions
	to create and handle special common sections.
	(v850_elf_final_link_relocate): Fix HI16 and HI16_S relocations
	which have data stored in the instructions.

Tue Dec  2 10:26:16 1997  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c (TARGET_UNDERSCORE): Revert back to '_'
	(USER_LABEL_PREFIX): Revert back to '_'

	* config.bfd (targ_cpu): Add support for Thumb target.

Mon Dec  1 20:24:18 1997  J"orn Rennecke <amylaar@cygnus.co.uk>

	* coff-sh.c (sh_coff_howtos): Add R_SH_SWITCH8 entry.
	(get_symbol_value): Handle R_SH_SWITCH8.
	(sh_relax_delete_bytes): Likewise.

Wed Nov 26 14:13:34 1997  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c (TARGET_UNDERSCORE): Changed to match definition in
	gcc/config/arm/semi.h

	* coffcode.h (coff_slurp_symbol_table): Add ARM and Thumb symbol
	classes.

Sun Nov 23 16:02:58 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* freebsd.h (SWAP_MAGIC): Read magic number little and not big
 	endian.

Wed Nov 26 09:30:37 1997  Nick Clifton  <nickc@cygnus.com>

	* coffcode.h (coff_mkobject_hook): Only set private flags for non
	PE ARM ports.

Tue Nov 25 15:33:23 1997  Richard Henderson  <rth@cygnus.com>

	* binary.c (binary_set_section_contents): Also ignore NEVER_LOAD
	sections.

Tue Nov 25 10:55:36 1997  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c (coff_arm_bfd_merge_private_bfd_data): Do not
	complain if inout and output formats differ.

Tue Nov 25 11:26:27 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (BFD32_BACKENDS): Remove tekhex.lo.
	(BFD32_BACKENDS_CFILES): Remove tekhex.c.
	* Makefile.in: Rebuild.
	* aclocal.m4, configure, src/Makefile.in: Rebuild with current
	automake and autoconf.

	* coff-arm.c (arm_allocate_interworking_sections): Fix typo
	(COFF_WITH_PR to COFF_WITH_PE).

Mon Nov 24 15:47:49 1997  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c: Make variables and some functions static, so that
	this file can be included in multiple object files.
	(coff_arm_bfd_final_link): Fix minor bug.

Sat Nov 22 15:16:00 1997  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c: Add support for PIC and APCS-FLOAT type binaries.

	* coffcode.h: Add support for PIC and APCS-FLOAT type binaries.

Sat Nov 22 16:06:56 1997  Klaus Kaempf  <kkaempf@progis.de>

	* evax-emh.c (_bfd_evax_write_emh): Use alloca instead of strdup.

Sat Nov 22 12:29:30 1997  Ian Lance Taylor  <ian@cygnus.com>

	* sunos.c (sunos_add_one_symbol): When overriding a defined
	symbol, set it to undefined, not new.

	* elf32-sh.c (sh_elf_relax_delete_bytes): Don't kill LABEL
	relocs.

Fri Nov 21 14:14:22 1997  Richard Henderson  <rth@cygnus.com>

	* coff-sh.c (sh_relax_section): Force sign extention of USES r_offset.
	(sh_relax_delete_bytes): Don't kill LABEL relocs.

Mon Nov 17 15:08:38 1997  Jeffrey A Law  (law@cygnus.com)

	* elf-m10300.c (elf32_mn10300_finish_hash_table_entry): Fix typo.
	(mn10300_elf_relax_section): Likewise.

Sat Nov 15 15:36:07 1997  Fred Fish  <fnf@cygnus.com>

	* peicode.h (coff_swap_aouthdr_in): Cast second arg of
	bfd_h_get_* calls to "bfd_byte *".

Tue Nov 11 10:37:23 1997  Jeffrey A Law  (law@cygnus.com)

	* 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.

Mon Nov 10 14:32:40 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elflink.h (NAME(bfd_elf,size_dynamic_sections)): Don't crash if
	a version dependency could not be found.

Tue Nov  4 12:05:56 1997  Klaus K"ampf  <kkaempf@progis.de>

	* configure.com: Get version info from configure.in

Fri Oct 24 11:15:58 1997  Jakub Jelinek  <jj@sunsite.mff.cuni.cz>

	* elf64-sparc.c (sparc64_elf_merge_private_bfd_data):
	New function. Avoid mixing US1 and HAL R1 code.
	Set resulting memory ordering to the strongest one used.
	(sparc64_elf_object_p): Set bfd_mach correctly.

Thu Oct 23 14:09:33 1997  Richard Henderson  <rth@cygnus.com>

	* elf64-sparc.c (sparc64_elf_howto_table): Add UA64 & UA16.
	(sparc64_elf_check_relocs): Handle them.
	(sparc64_elf_relocate_section): Likewise.  Before emitting a dyn reloc,
	check alignment and transmute R_SPARC_x<->R_SPARC_UAx.

Thu Oct 23 00:53:14 1997  Richard Henderson  <rth@dot.cygnus.com>

	* configure.in (sparc*-*-linux*): Use trad-core and ...
	* hosts/sparclinux.h: New file.

Thu Oct 23 00:25:29 1997  Richard Henderson  <rth@dot.cygnus.com>

	* config.bfd (sparc64-*-linux*): New target.

	* elf-bfd.h (struct elf_backend_data): Add plt_alignment member.
	* elflink.c (_bfd_elf_create_got_section): Set .got alignment based
	on arch_size.
	(_bfd_elf_create_dynamic_sections): Likewise for .rel* sections.
	Set .plt alignment from new plt_alignment.
	* elflink.h (elf_link_create_dynamic_sections): Set version section
	alignment to LOG_FILE_ALIGN.
	* elfxx-target.h (elf_backend_plt_alignment): Provide default.
	(elfXX_bed): Init plt_alignment.

	* elf64-sparc.c (sparc64_elf_check_relocs,
	sparc64_elf_adjust_dynamic_symbol, sparc64_elf_size_dynamic_sections,
	sparc64_elf_adjust_dynindx, sparc64_elf_finish_dynamic_symbol,
	sparc64_elf_finish_dynamic_sections): New functions.
	(sparc64_elf_howto_table): Fix a few name strings.
	(ELF_DYNAMIC_INTERPRETER): New definition.
	(sparc64_elf_relocate_section): Handle shared libraries.

	* elf64-sparc.c (struct plt_template, plt_*_header, plt_*_entry,
	sparc64_elf_build_plt_entry, sparc64_elf_finish_dynamic_symbol):
	PLT definitions sparc64-linux originally choose.  These will go
	away soon in favour of the official abi definitions.

Wed Oct 22 16:08:45 1997  Ian Lance Taylor  <ian@cygnus.com>

	* coff-sh.c (coff_small_object_p): New static function.
	(coff_small_new_section_hook): New static function.
	(bfd_coff_small_swap_table): New static const structure.
	(coff_small_close_and_cleanup): Define.
	(coff_small_bfd_free_cached_info): Define.
	(coff_small_get_section_contents): Define.
	(coff_small_get_section_contents_in_window): Define.
	(shcoff_small_vec): New static structure.
	(shlcoff_small_vec): New static structure.
	* targets.c (bfd_target_vector): Add shcoff_small_vec and
	shlcoff_small_vec.
	* config.bfd (sh-*-elf*): Add shcoff_small_vec and
	shlcoff_small_vec to targ_selvecs.
	(sh-*-*): Likewise.
	* configure.in: Add shcoff_small_vec and shlcoff_small_vec cases.
	* configure: Rebuild.

Mon Oct 20 15:01:27 1997  Klaus K"ampf  <kkaempf@progis.de>

	* evax-egsd.c: Weak symbols are global.

	* evax-emh.c: Use proper casts.

	* evax-egsd.c (_bfd_evax_write_egsd): Remove unneeded uname.

	* evax-egsd.c: Section names and symbols have different
	length restrictions. Add length parameter to
	_bfd_evax_length_hash_symbol.
	* evax-etir.c: Likewise.
	* evax-misc.c (_bfd_evax_length_hash_symbol): Add length
	parameter.
	* evax.h (EOBJ_S_C_SECSIZ): Define.

	* evax-alpha.c: Remove duplicate test.

	* evax-emh.c: SYS$ functions are upper-case.

	* evax-egsd.c: Create separate sections for common symbols.
	* evax-etir.c: Don't output common section.
	* evax.h: Bump up section count.

	* configure.com: Use 64bit integers with DEC C.

	* evax-egsd.c: Make section flags dec c compatible.

Mon Oct 20 09:38:31 1997  Jeffrey A Law  (law@cygnus.com)

	* som.c (normalize): Delete function.
	(som_bfd_ar_write_symbol_stuff): New parameter elength.  All callers
	changed.  Use passed in elength to determine size of the extended
	name table instead of computing it again.

Sun Oct 19 23:36:21 1997  Jim Wilson  <wilson@cygnus.com>

	* peicode.h (coff_swap_scnhdr_out): Use |= not = to set
	IMAGE_SCN_MEM_READ for an unrecognized section.

Sun Oct 19 21:04:56 1997  Jeffrey A Law  (law@cygnus.com)

	* som.c (som_bfd_ar_write_symbol_stuff): Account for trailing
	'/' in the extended name table.

Fri Oct 17 00:04:13 1997  Richard Henderson  <rth@cygnus.com>

	* elflink.h (elf_link_assign_sym_version): For explicitly versioned
	symbols, check globals list before matching on locals.

Thu Oct 16 08:17:06 1997  Michael Meissner  <meissner@cygnus.com>

	* peicode.h (coff_swap_scnhdr_out,pe_print_idata): Fix mangled
	patch.

Wed Oct 15 13:45:10 1997  Ian Lance Taylor  <ian@cygnus.com>

	* peicode.h (pe_mkobject_hook): Set DLL flag.
	(pe_bfd_copy_private_bfd_data): Copy DLL flag.

	* peicode.h (coff_swap_scnhdr_out): Set IMAGE_SCN_MEM_DISCARDABLE
	for .stab* sections.  Replace strlen of constant strings with
	number.

Tue Oct 14 15:42:45 1997  Richard Henderson  <rth@cygnus.com>

	* elf64-alpha.c (elf64_alpha_merge_ind_symbols): New function to
	merge got and reloc entries from ind syms to their target.
	(elf64_alpha_always_size_sections): Call it.
	(elf64_alpha_check_relocs): Operate on the target of indirect symbols.
	(elf64_alpha_can_merge_gots): Likewise.
	(elf64_alpha_merge_gots): Likewise.

	* elf64-alpha.c (elf64_alpha_relocate_section): Back out HJ's change,
	as it is insufficient to handle the relocation changes as well.

Mon Oct 13 23:10:08 1997  Richard Henderson  <rth@cygnus.com>

	* elf64-alpha.c (elf64_alpha_calc_dynrel_sizes): Allow for RELATIVE
	relocs for symbols in shlibs that have been forced local.
	(elf64_alpha_relocate_section): Output RELATIVEs in .got for same.

Mon Oct 13 21:24:04 1997  Richard Henderson  <rth@cygnus.com>

	* elf64-alpha.c (elf64_alpha_relocate_section): Use the
	got_enties of the default symbol for the default versioned
	symbol.  Patch from hjl@gnu.ai.mit.edu, modified not to use
	alloca in the loop.

Mon Oct 13 17:37:37 1997  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_final_link_relocate): Only use the bottom
	24 bits of the PC when computing a PC relative relocation.

Fri Oct 10 16:01:30 1997  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_reloc, v850_elf_final_link_relocate):
	Correct value for maximum positive 22 bit PC relative relocation.
	(v850_elf_final_link_relocate):  Prevent overflow from HI16_S and
	HI_16 relocations.  Correct bit adjustment in TDA offsets.

Thu Oct  9 16:43:39 1997  Doug Evans  <dje@canuck.cygnus.com>

	* elf64-sparc.c (sparc_elf_{hix22,lox10}_reloc): New functions.
	(sparc64_elf_howto_table): Use them for HIX22,LOX10 relocs.

Wed Oct  8 11:38:45 1997  Richard Henderson  <rth@cygnus.com>

	* elfcore.h (bfd_prstatus): Pedanticly, alignment_power should
	be LOG_FILE_ALIGN.

Wed Oct  8 11:36:00 1997  Richard Henderson  <rth@cygnus.com>

	* config.bfd: Missed one alpha* change.

Tue Oct  7 13:00:17 1997  Doug Evans  <dje@canuck.cygnus.com>

	* elf32-sparc.c (_bfd_sparc_elf_howto_table): Remove BFD64 support.
	* elf64-sparc.c (SPARC64_OLD_RELOCS): Undef.
	(MINUS_ONE): New macro.
	(sparc_elf_notsup_reloc): New function.
	(sparc64_elf_howto_table): Add entries for DISP64,PLT64,HIX22,LOX10,
	H44,M44,L44,REGISTER.
	(sparc_reloc_map): Likewise.  Map BFD_RELOC_CTOR to R_SPARC_64.
	(init_insn_reloc): New function.
	(sparc_elf_wdisp16_reloc): Use it.
	(sparc64_elf_relocate_section): Add entries for OLO10,HIX22,LOX10.

Tue Oct  7 11:40:37 1997  Ian Lance Taylor  <ian@cygnus.com>

	* som.c (som_construct_extended_name_table): Remove static
	function, and define as macro instead.

Fri Oct  3 14:02:17 1997  Richard Henderson  <rth@cygnus.com>

	* config.bfd: Change alpha-*-* to alpha*-*-*; config.guess now
	recognizes alphaev5 etc.
	* configure.host: Likewise.

Fri Oct  3 11:23:47 1997  Ian Lance Taylor  <ian@cygnus.com>

	Make ld -s work on AIX:
	* xcofflink.c (xcoff_link_add_symbols): Don't create the .debug
	section if we are stripping.
	(bfd_xcoff_size_dynamic_sections): Don't set the .debug section
	size if we are stripping.
	(_bfd_xcoff_bfd_final_link): Don't set SEC_RELOC or rel_filepos,
	and don't write out relocs, if we are stripping.
	(xcoff_link_input_bfd): Don't set up reloc if we are stripping.
	(xcoff_write_global_symbol): Don't write out symbol or reloc if we
	are stripping.

	* configure.in: Don't include elf.lo again for ELF targets; it's
	always in the library anyhow.
	* configure: Rebuild.

	* bfd-in2.h: Rebuild.

	* elf32-sparc.c (sparc_elf_wdisp16_reloc): Cast to bfd_byte *, not
	char *, when calling bfd_get_32 and bfd_put_32.
	* sunos.c (sunos_scan_dynamic_symbol): Cast contents to char *
	when calling strcpy.

Thu Oct  2 16:15:50 1997  Doug Evans  <dje@canuck.cygnus.com>

	* reloc.c (bfd_check_overflow): New function.
	(bfd_perform_relocation, bfd_install_relocation): Use it.
	(BFD_RELOC_SPARC_{DISP64,PLT64}): New relocs.
	(BFD_RELOC_SPARC_{HIX22,LOX10,H44,M44,L44,REGISTER}): New relocs.
	* bfd-in2.h: Regenerate.
	* libbfd.h: Regenerate.

Thu Oct  2 13:17:18 1997  Ian Lance Taylor  <ian@cygnus.com>

	* peicode.h (coff_swap_scnhdr_out): Set IMAGE_SCN_MEM_READ for an
	unrecognized section.  From Jon Thackray <jont@harlequin.co.uk>.

Wed Oct  1 14:03:44 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am ($(BFD_H)): Change stmp-bfd.h to stmp-bfd-h.
 	(stmp-bfd-h): Rename from stmp-bfd.h.
 	(BFD_H_FILES, LIBBFD_H_FILES, LIBCOFF_H_FILES): New variables.
	($(srcdir)/bfd-in2.h): Just depend upon stmp-bin2-h.
	(stmp-bin2-h): New target.
	($(srcdir)/libbfd.h): Just depend upon stmp-lbfd-h.
	(stmp-lbfd-h): New target.
	($(srcdir)/libcoff.h): Just depend upon stmp-lcoff-h.
	(stmp-lcoff-h): New target.
	(CLEANFILES): Change stmp-bfd.h to stmp-bfd-h.  Add stmp-bin2.h,
	stmp-lbfd-h, and stmp-lcoff-h.
	* Makefile.in: Rebuild.

	* configure.in: Use a diversion to set enable_shared before the
	arguments are parsed.
	* configure: Rebuild.

Tue Sep 30 14:18:32 1997  Doug Evans  <dje@canuck.cygnus.com>

	* elf32-sparc.c (_bfd_sparc_elf_howto_table): R_SPARC_GLOB_JMP
	renamed to R_SPARC_UNUSED_42.
	(sparc_reloc_map): Delete R_SPARC_GLOB_JMP entry.
	* elf64-sparc.c (_bfd_sparc_elf_howto_table): R_SPARC_GLOB_JMP
	renamed to R_SPARC_UNUSED_42.
	(sparc_reloc_map): Delete R_SPARC_GLOB_JMP entry.
	* reloc.c (BFD_RELOC_SPARC_GLOB_JMP): Delete.
	* bfd-in2.h: Regenerated.
	* libbfd.h: Regenerated.

Thu Sep 25 12:15:02 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_merge_symbol): Don't check the hash creator until
	after we have set *sym_hash.

Wed Sep 24 16:52:28 1997  Joel Sherrill  <joel@oarcorp.com>

        * config.bfd (sh*-*-rtems*): New target, like sh-*-*elf*.

Wed Sep 24 11:27:23 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (libbfd_a_SOURCES): Define.
	* Makefile.in: Rebuild.

	* configure.in: Call AC_CHECK_TOOL before AM_PROG_LIBTOOL.
	* aclocal.m4: Rebuild with new libtool.
	* configure: Rebuild.

Tue Sep 23 19:03:13 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elf.c (map_sections_to_segments): Even if we are not demand
	paged, don't put a loadable section after a nonloadable section.
	(assign_file_positions_for_segments): Increment the file offset
	for a section with contents, even if it is not loadable.

Sun Sep 21 11:03:24 1997  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_final_link_relocate): Add return code
	indicating that __ctbp could not be found.

Thu Sep 18 15:04:57 1997  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_check_relocs): Improve error message.

Wed Sep 17 09:54:51 1997  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_final_link_relocate, v850_elf_reloc,
	v850_elf_check_relocs, v850_elf_reloc_map, v850_elf_howto_table):
	Add support for the CALLT relocs.

	* reloc.c (COMMENT): Add BFD_RELOC_V850_CALLT_6_7_OFFSET and
	BFD_RELOC_V850_CALLT_16_16_OFFSET.

	* elf32-v850.c (v850_elf_final_link_relocate): Add checks to catch
	relocations against non-existant symbols.

Tue Sep 16 14:20:27 1997  Nick Clifton  <nickc@cygnus.com>

	* reloc.c: Add BFR_RELOC_V850_TDA_16_16_OFFSET.

	* elf32-v850.c (v850_elf_reloc, v850_elf_final_link_relocate,
	v850_elf_howto_table, v850_elf_reloc_map): Add support for a 16
	bit reloc in the tiny data area.

Mon Sep 15 11:27:36 1997  Ken Raeburn  <raeburn@cygnus.com>

	Merged changes from Martin Hunt:

	* elf32-d30v.c (bfd_elf_d30v_reloc): Change pc-relative relocs
	over 2^32 bytes to be absolute.  Needed because D30V PC doesn't
	necessarily wrap.

	* reloc.c, elf32-d30v.c (BFD_RELOC_D30V_9_PCREL,
	BFD_RELOC_D30V_9_PCREL_R): New relocs.

	* elf32-d30v.c (bfd_elf_d30v_reloc_21): New function.
	Do 15 and 21 bit pc-relative relocations.
	* reloc.c (BFD_RELOC_D30V_15_PCREL_R, BFD_RELOC_D30V_21_PCREL_R):
	New relocations.

	* elf32-d30v.c (bfd_elf_d30v_reloc): Addend needs to be
	added to the relocation, not or'd.

Wed Sep 10 15:17:25 1997  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_reloc): Remove spurious error message.

Wed Sep 10 11:17:50 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* archures.c (bfd_default_scan): Use strcasecmp.
	(bfd_default_scan): Test for match with arch_name + ":" +
 	printable_name.
	(bfd_default_scan): Test for match with printable_name - ":".
	(bfd_default_scan): Delete w65, h8300, h8500, z8k, i960 special
 	cases.  Each implements their own scan function.
	(bfd_default_scan): Delete 386, 2900, 860, mips 2000, mips 4400
 	special cases.  Since info->mach == 0.  The test mach == number
 	fails.
	(bfd_arch_list): New function, return name of all the supported
 	architectures.

Tue Sep  9 10:21:56 1997  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_print_private_bfd_data): Break after
	decoding architecture.
	(v850_elf_reloc): Do not complain if a R_V850_LO16 reloc has bit
	15 set.

Sun Sep  7 12:25:22 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)

	* bfd/elf64-alpha.c (reloc_howto_type): Fix the howto table.

Thu Sep  4 09:44:10 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am: Rebuild dependencies.
 	(ALL_MACHINES_CFILES): Add cpu-v850.c.
	(ALL_MACHINES_CFILES): Add elf32-v850.c.
	* Makefile.in: Rebuild.

	* reloc.c: Remove extraneous commas from relocation entries.
	Remove BFD_RELOC_V850_16_PCREL.
	* bfd-in2.h: Rebuild.

	* xcofflink.c (xcoff_link_add_symbols): Put XTY_CM/XMC_TD symbols
	in sections named .tocbss rather than .bss.

Wed Sep  3 11:23:23 1997  Nick Clifton  <nickc@cygnus.com>

	* libbfd.h, bfd-in2.h, elf32-v850.c: Removed
	BFD_RELOC_V850_16_PCREL.

Tue Sep  2 20:44:10 1997  Fred Fish  <fnf@cygnus.com>

	* cofflink.c (coff_link_check_ar_symbols): Handle C_SYSTEM syms
	the same as C_EXT syms.
	(coff_link_add_symbols): Ditto.
	(_bfd_coff_link_input_bfd): Ditto.
	(_bfd_coff_write_task_globals): Add save_global_to_static.  Use
	it to preserve and restore state of global_to_static flag.

Tue Sep  2 17:45:22 1997  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_object_p): Set machine number based on
	bits in e_flags field rather than magic numbers.
	(v850_elf_final_write_processing, v850_elf_set_private_flags,
	v850_elf_copy_private_bfd_data, v850_elf_merge_private_bfd_data,
	v850_elf_print_private_bfd_data): New functions.

Tue Sep  2 17:43:49 1997  Nick Clifton  <nickc@cygnus.com>

	* elf.c (prep_headers): Remove V850E magic number.
	* elf.c (prep_headers): Remove V850EA magic number.

Tue Sep  2 17:35:05 1997  Doug Evans  <dje@canuck.cygnus.com>

	* cpu-arc.c (arc_get_mach): Properly scan defined mach entries.

Tue Sep  2 18:29:37 1997  Jeffrey A Law  (law@cygnus.com)

	* elf-m10200.c (mn10200_elf_final_link_relocate): PC relative
	instructions are relative to the next instruction, not the
	current instruction.
	(mn10200_elf_relax_section): Similarly.

Tue Sep  2 15:45:45 1997  Nick Clifton  <nickc@cygnus.com>

	* cpu-v850.c: Use a macro to construct bfd_arch_info_type
	entries.

	* reloc.c, libbfd.h, bfd-in2.h, elf32-v850.c: Replace
	BFD_RELOC_V850_{SDA/TDA/ZDA}_OFFSET relocs with new bit pattern
	specific versions: BFD_RELOC_V850_{area}_{bits}_OFFSET.

Thu Aug 28 17:01:09 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* cpu-v850.c: Remove "plain" from v850 printable name.
	(scan): Use strcasecmp.

	* archures.c (bfd_mach_v850): Define.

	* cpu-sh.c (scan_mach): Compare with table instead of hardwired to
 	just sh/SH, use strcasecmp.
	(arch_info_struct): Add entries for sh3 et.al.

	* archures.c (bfd_mach_sh, ...): Define.

Wed Aug 27 17:33:07 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* archures.c (bfd_archures_list): Always NULL terminate the list.

Tue Aug 26 17:26:51 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am: Rebuild dependencies.
	(ALL_MACHINES_CFILES): Add cpu-arc.c.
	(ALL_MACHINES_CFILES): Add elf32-arc.c.
	(elf32-arc.lo): Remove explicit dependency.
	* Makefile.in: Rebuild.

	* acinclude.m4 (BFD_CC_FOR_BUILD): Set EXEEXT_FOR_BUILD.
	* doc/Makefile.am (MKDOC): Use EXEEXT_FOR_BUILD, not EXEEXT.
	* aclocal.m4, configure, Makefile.in, doc/Makefile.in: Rebuild.

Mon Aug 25 16:14:34 1997  Christopher Provenzano  <proven@cygnus.com>

	* configure: Rebuild with latest devo autoconf for NT support

Mon Aug 25 16:11:04 1997  Nick Clifton  <nickc@cygnus.com>

	* cpu-arm.c (compatible): If B is a default type, return A.

Mon Aug 25 15:35:46 1997  Nick Clifton  <nickc@cygnus.com>

	* cpu-v850.c (scan): New function.
	(arch_info_struct): New structure.
	(bfd_v850_arch): Add link into arch_info_structure.

	* config.bfd (targ_cpu): All v850 variants use the bfd_arch_v850
	architecture.

	* elf32-v850.c (v850_elf_object_p): New function.

	* archures.c (bfd_mach_v850e): Machine value for v850e.

	* bfd-in2.h (bfd_mach_v850e): Machine value for v850e.

	* elf32-v850.c (ELF_MACHINE_CODE): Default to v850e machine
	number.

	* elf.c (prep_headers): Add support for v850e machine number.

	* archures.c (bfd_mach_v850ea): Machine value for v850ea.

	* bfd-in2.h (bfd_mach_v850ea): Machine value for v850ea.

	* elf32-v850.c (ELF_MACHINE_CODE): Default to v850ea machine
	number.

	* elf.c (prep_headers): Add support for v850ea machine number.

Mon Aug 25 14:07:33 1997  Ian Lance Taylor  <ian@cygnus.com>

	* syms.c (_bfd_stab_section_find_nearest_line): Clear the
 	cached_stab field if the offset prevents us from using the cache.

Mon Aug 25 12:08:13 1997  Ian Lance Taylor  <ian@cygnus.com>

	* aout-target.h (MY(vec)): Add SEC_CODE and SEC_DATA to section
	flags.
	* aout-arm.c (aout_arm_little_vec): Likewise.
	(aout_arm_big_vec): Likewise.
	* bout.c (b_out_vec_big_host): Likewise.
	(b_out_vec_little_host): Likewise.
	* mipsbsd.c (aout_mips_little_vec): Likewise.
	(aout_mips_big_vec): Likewise.

Tue Aug 19 10:09:10 1997  Fred Fish  <fnf@cygnus.com>

	* coff-tic80.c (COFF_ALIGN_IN_SFLAGS): Define to 1.
	* coffcode.h (styp_to_sec_flags): Ignore incoming STYP_INFO
	bit in s_flags if COFF_ALIGN_IN_S_FLAGS is defined.

Tue Aug 19 08:47:17 1997  Fred Fish  <fnf@cygnus.com>

	* coff-i960.c (COFF_ALIGN_IN_SECTION_HEADER): Define to 1.
	(GET_SCNHDR_ALIGN, PUT_SCNHDR_ALIGN): Define.
	* coff-m88k.c (GET_SCNHDR_NRELOC, GET_SCNHDR_NLNNO): Define.
	* coffcode.h (coff_set_alignment_hook): Conditionally compile in if
	COFF_ALIGN_IN_SECTION_HEADER is defined.  Convert alignment to power
	of two for I960 only.
	* coffswap.h (GET_SCNHDR_NRELOC, PUT_SCNHDR_NRELOC, GET_SCNDHR_NLNNO,
	PUT_SCNHDR_NLNNO, GET_SCNHDR_FLAGS, PUT_SCNHDR_FLAGS): Provide
	default definitions.
	(coff_swap_scnhdr_in): Use GET_SCNHDR_FLAGS, GET_SCNHDR_NRELOC,
	GET_SCNHDR_NLNNO, and GET_SCNHDR_ALIGN.
	(coff_swap_scnhdr_out): Use PUT_SCNHDR_FLAGS, PUT_SCNHDR_ALIGN.
	* Makefile.in (coff-tic80.o): Depends upon coffswap.h.
	* coff-tic80.c (COFF_ALIGN_IN_SECTION_HEADER): Define to 1.
	(GET_SCNHDR_FLAGS, PUT_SCNHDR_FLAGS): Define
	* coffcode.h (coff_write_object_contents): Set alignment field in
 	section header for TIC80COFF files.

Mon Aug 18 11:36:19 1997  Nick Clifton  <nickc@cygnus.com>

	* elf32-v850.c (v850_elf_howto_table, v850_elf_reloc_map,
	v850_elf_check_relocs, v850_elf_reloc,
	v850_elf_final_link_relocate):  Add support for
	BFD_RELOC_V850_16_PCREL relocation.

	* reloc.c (COMMENT): Add suuport for BFD_RELOC_V850_16_PCREL
	relocation.

	* libbfd.h: Add support for BFD_RELOC_V850_16_PCREL relocation.

	* bfd-in2.h: Add support for BFD_RELOC_V850_16_PCREL relocation.

Mon Aug 18 11:33:56 1997  Nick Clifton  <nickc@cygnus.com>

	* cpu-v850e: New file.

	* elf.c (prep_headers): Add support for v850e target.

	* bfd-in2.h (bfd_architecture): Add support for v850e target.

	* config.bfd: Add support for v850e target.

	* archures.c: Add support for v850e target.

Mon Aug 18 11:33:56 1997  Nick Clifton  <nickc@cygnus.com>

	* cpu-v850ea: New file.

	* elf.c (prep_headers): Add support for v850ea target.

	* bfd-in2.h (bfd_architecture): Add support for v850ea target.

	* config.bfd: Add support for v850ea target.

	* archures.c: Add support for v850ea target.

Fri Aug 15 12:01:28 1997  Ian Lance Taylor  <ian@cygnus.com>

	* coffgen.c (coff_find_nearest_line): Correctly handle the offset
	argument as section relative, rather than an absolute address.
	From Jan Hoogenraad <hoogenrd@natlab.research.philips.com>.

Fri Aug 15 04:58:02 1997  Doug Evans  <dje@canuck.cygnus.com>

	* config.bfd (arc-*-elf*): Add.
	* configure.in (bfd_elf32_{little,big}arc_vec): Add.
	* configure: Rebuild.
	* Makefile.am (ALL_MACHINES): Add cpu-arc.lo.
	(BFD32_BACKENDS): Add elf32-arc.lo.
	(cpu-arc.lo,elf32-arc.lo): Add rules for.
	* Makefile.in: Rebuild.
	* archures.c (architecture list): Add bfd_arch_arc.
	(bfd_archures_list): Add bfd_arc_arch.
	(bfd_mach_arc_base): Define.
	* reloc.c (BFD_RELOC_ARC_B22_PCREL,BFD_RELOC_ARC_B26): Add.
	* targets.c (bfd_elf32_{little,big}arc_vec): Declare.
	(bfd_target_vect): Add them.
	* bfd-in2.h, libbfd.h: Rebuild.
	* cpu-arc.c, elf32-arc.c: New files.
	* elf.c (pre_headers): Recognize bfd_arch_arc.

Tue Aug 12 11:45:18 1997  Ian Lance Taylor  <ian@cygnus.com>

	* aoutx.h (NAME(aout,final_link)): If no symbols, make sure the
	data section is correctly rounded to a page in the file.

Mon Aug 11 12:45:43 1997  Ian Lance Taylor  <ian@cygnus.com>

	* aoutx.h (NAME(aout,final_link)): Don't emit the string table if
	there are no symbols.

Sun Aug 10 14:45:56 1997  Ian Lance Taylor  <ian@cygnus.com>

	* coff-stgo32.c: Rename from coff-stubgo32.c to avoid old System V
	file system 14 character limit.
	* Makefile.am, configure.in: Corresponding changes.
	* Makefile.in, configure: Rebuild.

Fri Aug  8 18:34:36 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am: (ALL_MACHINES_CFILES): Add elf32-d10v.c.
	Rebuild dependencies.
	* Makefile.in: Rebuild.

Wed Aug  6 18:56:51 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (docdir): Define.
	* Makefile.in: Rebuild.

Tue Aug  5 23:05:03 1997  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Rebuild with autoconf 2.12.1.

Mon Aug  4 12:00:35 1997  Ian Lance Taylor  <ian@cygnus.com>

	* aclocal.m4, configure: Rebuild with new automake patches.

Sun Aug  3 08:15:12 1997  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* rs6000-core.c (make_bfd_asection):  New function to add a section
	to the core file bfd.
	(rs6000coff_core_p):  Use make_bfd_asection to add the core file
	sections.
	Use BFD routines to seek, read and stat the core file.
	Handle .data sections from loaded objects and anonymously mmapped
	regions, these are available in AIX 4 core files.

Fri Aug  1 12:58:32 1997  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Set enable_shared before AM_PROG_LIBTOOL.
	* acinclude.m4: Move acmacros.m4 in here.  Remove AM_PROG_LIBTOOL
	copy; use a patches libtool instead.
	* acmacros.m4: Remove.
	* Makefile.in, aclocal.m4, configure: Rebuild.

Thu Jul 31 19:55:36 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am: New file, based on old Makefile.in.
	* acmacros.m4: New file, copied from old aclocal.m4.
	* acinclude.m4: New file.
	* configure.in: Call AM_PROG_LIBTOOL.  Remove shared library
	handling; now handled by libtool.  Replace AC_CONFIG_HEADER with
	AM_CONFIG_HEADER.  Replace AC_PROG_INSTALL with AM_PROG_INSTALL.
	Call AM_MAINTAINER_MODE, AM_CYGWIN32, and AM_EXEEXT.  Change all
	.o files to .lo.  Remove stamp-h handling in AC_OUTPUT.
	* acconfig.h: Mention PACKAGE and VERSION.
	* stamp-h.in: New file.
	* dep-in.sed: Change .o to .lo.
	* Makefile.in: Now built with automake.
	* aclocal.m4: Now built with aclocal.
	* config.in, configure: Rebuild.
	* VERSION: Remove.

Thu Jul 31 12:09:20 1997  Geoff Keating  <geoffk@ozemail.com.au>

	* elf32-ppc.c (ppc_elf_size_dynamic_sections): Don't set TEXTREL
 	if there is only a relocation to a read-only but not allocatable
 	section (like .stab).
	* elf32-sparc.c (elf32_sparc_size_dynamic_sections): Likewise.
	* elf32-i386.c (elf_i386_size_dynamic_sections): Likewise.
	* elf32-m68k.c (elf_m68k_size_dynamic_sections): Likewise.
	* elf32-mips.c (mips_elf_size_dynamic_sections): Likewise.
	* elf64-alpha.c (elf64_alpha_size_dynamic_sections): Likewise.

	* elf32-ppc.c (ppc_elf_howto_raw): Correct various comments.
	(ppc_elf_create_linker_section): These sections are not
	created by the linker (that is, they are created by the user
	putting data in them). In particular, they can be the source
	and target of relocations.
	(ppc_elf_adjust_dynamic_symbol): Check postcondition of
 	bfd_elf32_link_record_dynamic_symbol.  Align 16-byte common
 	objects (for instance, 'long double') to 16-byte boundaries.
	(ppc_elf_size_dynamic_sections): Make the code that generates
	section symbols exactly the same as for sparc, reducing the
	number of section symbols output.
	(ppc_elf_check_relocs): Check postcondition of
	bfd_elf32_link_record_dynamic_symbol.  Make default case the
	same as corresponding code for sparc, fixing bug involving
	.rela.stabs.
	(ppc_elf_finish_dynamic_symbol): Fix case involving GOT symbols
 	forced to be local because of versioning (by replicating
 	corresponding change in sparc).  Treat R_PPC_RELATIVE RELA relocs
 	as usual in ELF, not as pseudo-REL relocs (as the sparc linker
 	does).
	(ppc_elf_relocate_section): Add handy debugging code for when
 	assertion fails.  Add some more 'symbol made local because of
 	versioning' cases.

	* elf32-ppc.c (ppc_elf_relocate_section): Cope with addend when
	processing a GOT relocation as required by ABI.

Wed Jul 30 21:30:35 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elflink.h (NAME(bfd_elf,record_link_assignment)): Remove any
	version info if this symbol came from a dynamic object.
	(elf_link_add_object_symbols): Set the version info of a symbol
	only if the object actually contains version definitions and
	defines this symbol.

Mon Jul 28 18:07:43 1997  Rob Savoye  <rob@chinadoll.cygnus.com>

	* aclocal.m4: Add CYGWIN and EXEEXT autoconf macros.
        * configure.in: Use CYGWIN and EXEEXT autoconf macro to look for
        win32 dependencies.
        * configure: Regenerated with autoconf 2.12.
        * doc/Makefile.in: Add $(EXEEXT) to chew executable.

Mon Jul 28 02:50:29 1997  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* rs6000-core.c (rs6000coff_core_p):  If CORE_TRUNC is set, print
	a warning rather than returning an error.

Sun Jul 27 19:54:14 1997  Felix Lee  <flee@cygnus.com>

	* coffswap.h (coff_swap_aux_in): add semicolon to make MSVC happy.

Fri Jul 25 14:50:08 1997  Felix Lee  <flee@cygnus.com>

	* cisco-core.c: define signals for wingdb.

Fri Jul 25 16:27:07 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ecofflink.c (bfd_ecoff_debug_accumulate): Only merge files with
	the same number of aux entries.

Fri Jul 25 08:22:15 1997  Jeffrey A Law  (law@cygnus.com)

	* som.c (hppa_som_gen_reloc_type): Use R_DATA_EXPR for the
	difference of two symbols if the relocation size is 32 bits.
	(som_write_fixups): Handle R_DATA_EXPR.

Wed Jul 23 16:08:02 1997  Ian Lance Taylor  <ian@cygnus.com>

	* coff-i386.c (coff_i386_reloc): Don't offset a common symbol by
	its value if COFF_WITH_PE is defined.

Tue Jul 22 17:19:45 1997  Robert Hoehne <robert.hoehne@Mathematik.TU-Chemnitz.DE>

	* coff-stubgo32.c: New file.
	* go32stub.h: New file.
	* coff-i386.c: If COFF_GO32_EXE, include coff/go32exe.h.
	* coffswap.h (coff_swap_filehdr_in): Invoke
	COFF_ADJUST_FILEHDR_IN_PRE and COFF_ADJUST_FILEHDR_IN_POST if they
	are defined.
	(coff_swap_filehdr_out): Invoke COFF_ADJUST_FILEHDR_OUT_PRE and
	COFF_ADJUST_FILEHDR_OUT_POST if they are defined.
	(coff_swap_aux_in): Invoke COFF_ADJUST_AUX_IN_PRE and
	COFF_ADJUST_AUX_IN_POST if they are defined.
	(coff_swap_aux_out): Invoke COFF_ADJUST_AUX_OUT_PRE and
	COFF_ADJUST_AUX_OUT_POST if they are defined.
	(coff_swap_scnhdr_in): Invoke COFF_ADJUST_SCNHDR_IN_PRE and
	COFF_ADJUST_SCNHDR_IN_POST if they are defined.
	(coff_swap_scnhdr_out): Invoke COFF_ADJUST_SCNHDR_OUT_PRE and
	COFF_ADJUST_SCNHDR_OUT_POST if they are defined.
	* targets.c (go32stubbedcoff_vec): Declare.
	(bfd_target_vector): Add go32stubbedcoff_vec.
	* configure.in (go32coff_vec): New target vector.
	(go32stubbedcoff_vec): Likewise.
	* config.bfd (i[3456]86-*-msdosdjgpp*): New target.
	(i[3456]86-*-go32*): Change to be like new msdosdjgpp*.
	* Makefile.in: Rebuild dependencies.
 	(BFD32_BACKENDS): Add coff-stubgo32.o.
	(BFD32_BACKENDS_CFILES): Add coff-stubgo32.c.
	(HFILES): Add go32stub.h.

Tue Jul 22 15:09:12 1997  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Check for fdopen.
	* configure, config.in: Rebuild.
	* opncls.c (bfd_fdopenr): Check HAVE_FDOPEN rather than VMS or
	__GO32__.  Reindent a bit.

Sun Jul 20 20:05:20 1997  Ian Lance Taylor  <ian@cygnus.com>

	* sunos.c (sunos_create_dynamic_sections): Set SEC_LINKER_CREATED
	flag for newly created sections.
	(sunos_add_dynamic_symbols): Don't discard newly created sections
	if shared library is dynobj.

Mon Jul 14 15:33:55 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elf.c (map_sections_to_segments): When checking whether
	including a section in a segment would force us to skip a page,
	align the address of the next segment to avoid wraparound
	problems.

Tue Jul  8 12:11:29 1997  Fred Fish  <fnf@cygnus.com>

	* coffcode.h (coff_write_object_contents): Initialize
 	target id field to TIC80_TARGET_ID.
	* coffswap.h (coff_swap_filehdr_out): Swap out target id field
 	if used.
	(coff_swap_filehdr_in): Swap in target id field if used.

Mon Jul  7 16:41:20 1997  Ian Lance Taylor  <ian@cygnus.com>

	* coff-i386.c (coff_i386_is_local_label_name): New static function
	if TARGET_UNDERSCORE.
	(coff_bfd_is_local_label_name): Define if TARGET_UNDERSCORE.
	(i386coff_vec): Add SEC_CODE and SEC_DATA to section_flags.

Mon Jun 30 14:29:26 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-m68k.c (howto_table): Use complain_overflow_bitfield, not
	complain_overflow_signed, for 32 bit PC relative relocations.

Thu Jun 26 01:26:31 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_link_add_object_symbols): When a version
	indirection symbol is overridden, make the original symbol point
	at the real overriding symbol.

	* elf.c (bfd_elf_string_from_elf_section): Check for an invalid
	string index.

	* elflink.h (elf_link_output_extsym): Use the right section for a
	common symbol.
	* elf32-mips.c (mips_elf_link_output_symbol_hook): If a common
	symbol was in .scommon, mark it as SHN_MIPS_SCOMMON.

Wed Jun 25 12:43:10 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* elflink.h (elf_merge_symbols): Resolve indirect and warning
	symbols before checking for new symbols.

	* elfcore.h (elf_corefile_note): Move out of HAVE_SYS_PROCFS_H.

Tue Jun 24 11:20:43 1997  Ian Lance Taylor  <ian@cygnus.com>

	* coffgen.c (coff_object_p): Read the f_opthdr bytes from the
	file, not aoutsz bytes (they are different in XCOFF .o files).

	* xcofflink.c (xcoff_link_add_symbols): Permit symbols to be
	redefined by objects included from archives.

Mon Jun 23 18:03:27 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_merge_symbol): In the case of a new defined
	symbol overriding an old defined symbol, return the hash table
	entry which we modify, even if it is the target of an
	indirection.
	(elf_link_add_object_symbols): If the real name of the symbol gets
	overridden, convert the versioned symbol into an indirect symbol
	to the real symbol.

	* elflink.h (elf_merge_symbol): New static function, broken out of
	elf_link_add_object_symbols.
	(elf_link_add_object_symbols): Call it.

Sun Jun 22 19:40:57 1997  Ian Lance Taylor  <ian@cygnus.com>

	* coff-i386.c (i3coff_object_p): If COFF_IMAGE_WITH_PE, hack to
	handle case where COFF filehdr does not immediately follow PE
	header.
	* coffgen.c (coff_object_p): Remove useless seek to current
	location.

Wed Jun 18 19:03:38 1997  Ian Lance Taylor  <ian@cygnus.com>

	* linker.c (link_action): Change COMMON_ROW/indr to from CREF to
	REFC.

Tue Jun 17 11:55:02 1997  Ian Lance Taylor  <ian@cygnus.com>

	* cofflink.c (_bfd_coff_link_input_bfd): If stripping debugging
	symbols, skip N_ABS symbols with debugging storage classes.

Mon Jun 16 18:56:27 1997  Geoff Keating  <geoffk@ozemail.com.au>

	* elf32-ppc.c (ppc_elf_relocate_section): Don't emit R_PPC_REL*
	relocs in shared libraries which refer to local symbols.  Cope
	with addend when processing a GOT relocation.

	* elf32-ppc.c (ppc_elf_size_dynamic_sections): Only create symbols
	for sections that the linker didn't create.
	(ppc_elf_finish_dynamic_sections): Only try to write out a section
	symbol if it was created in ppc_elf_size_dynamic_sections.
	(ppc_elf_relocate_section): Complain if we have to generate a reloc
	relative to a section for which we didn't output a symbol.

	* elf32-ppc.c (ppc_elf_size_dynamic_sections): Clean up.  PLT
	relocs are 'rela' relocs, like everything else.  .rela.plt is not
	a read-only section, so we don't have to special-case it.

	* elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Entries in the
	.rela.bss section are (of course) 'rela' relocs not 'rel' relocs.

	* elf32-ppc.c (ppc_elf_check_relocs): Initialise srelgot.
	(ppc_elf_relocate_section): @got offsets are 4 from start of the
	actual .got section.
	* elflink.c (_bfd_elf_create_got_section): The three reserved
	words start from the symbol '_GLOBAL_OFFSET_TABLE_'.

	* elf32-ppc.c (ppc_elf_size_dynamic_sections): '.rela' is 5
	characters, not 4.

	* elf32-ppc.c (ppc_elf_check_relocs): Use
	_bfd_elf_create_got_section to create the GOT rather than
	ppc_elf_create_linker_section. Create the '.rela.got' section
	ourselves.
	(ppc_elf_finish_dynamic_symbol): Set up GOT relocations when a
	symbol has a GOT entry.
	(ppc_elf_relocate_section): Record when a symbol is used through
	the GOT, and allocate space in the GOT for each such symbol.
	(ppc_elf_adjust_dynamic_symbol): Delete unused .got.plt stuff.
	(ppc_elf_create_linker_section): Delete unused LINKER_SECTION_GOT
	stuff.

	* elf32-ppc.c (ppc_elf_howto_raw): GOT16_HA relocs should be
	treated in a similar way to ADDR16_HA relocs.
	(ppc_elf_relocate_section): PLTREL24 relocs do not get copied into
	shared objects; the linker must deal with them.
	(ppc_elf_create_linker_section): Stop setting
	_GLOBAL_OFFSET_TABLE_ to the wrong value; delete unused
	LINKER_SECTION_PLT stuff.
	(ppc_elf_check_relocs): Delete unused LINKER_SECTION_PLT stuff.
	(ppc_elf_finish_dynamic_sections): Use BFD calls to get GOT
	section, not ELF-specific calls.
	(elf_backend_plt_not_loaded): Set to 1.
	(elf_backend_got_symbol_offset): Set to 4.
	* elf-bfd.h (elf_backend_data): Add 'plt_not_loaded' member
	for when ld.so fills in the PLT; and 'got_symbol_offset' member.
	* elflink.c (_bfd_elf_create_dynamic_sections): Apply
	plt_not_loaded member.
	(_bfd_elf_create_got_section): Apply got_symbol_offset.
	* elfxx-target.h (elf_backend_plt_not_loaded): Set default to
	'loaded'.
	(elf_backend_G_O_T_offset): Set default to 0.
	(elfNN_bed): Set added fields.

	* elf32-ppc.c (ppc_elf_size_dynamic_sections): Was setting
	DT_RELENT in shared objects; should be DT_RELAENT.

	* elf32-ppc.c (ppc_elf_relocate_section): Propagate
	R_PPC_ADDR16_HA relocs to shared objects. Cope with case where
	such a reloc (in a non-shared object) refers to a symbol that's
	not defined.

Mon Jun 16 14:42:14 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* elfcode.h (put_signed_word): Define.
	(get_signed_word): Define.
	(elf_swap_reloca_in): Use get_signed_word for the r_addend field.
	(elf_swap_reloca_out): Use put_signed_word for the r_addend
	field.
	* elf32-m68k.c (elf_m68k_finish_dynamic_symbol): Use
	bfd_get_signed_32 to set the r_addend field.
	* elf64-mips.c (mips_elf64_swap_reloca_in): Use
	bfd_h_get_signed_64 to set the r_addend field.

Mon Jun 16 12:31:29 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-i386.c (elf_i386_relocate_section): When generating a
	shared library, do the relocation if the input section is not
	allocated in memory.

	* elflink.h (NAME(bfd_elf,size_dynamic_sections)): Call
	elf_link_assign_sym_version before elf_adjust_dynamic_symbol.
	(elf_fix_symbol_flags): New static function, broken out of
	elf_adjust_dynamic_symbol.
	(elf_adjust_dynamic_symbol): Call elf_fix_symbol_flags.
	(elf_link_assign_sym_version): Likewise.  Permit a symbol to be
	forced local even if NEEDS_PLT is set.  When forcing a symbol to
	be local, clear NEEDS_PLT.
	(elf_link_output_extsym): Remove unused local bed.

Wed Jun 11 22:44:20 1997  Jeffrey A Law  (law@cygnus.com)

	* elf32-mn10300.c (elf32_mn10300_link_hash_entry): New structure
	for derived elf linker hash table entries.  References to
	elf_link_hash_entry changed appropriately.
	(elf32_mn10300_link_hash_table): New structure for derived elf
	linker hash table.
	(elf32_mn10300_hash_table): Define.
	(elf32_mn10300_link_hash_traverse): Likewise.
	(elf32_mn10300_link_hash_newfunc): New function.
	(elf32_mn10300_link_hash_table_create): Likewise.
	(elf32_mn10300_finish_hash_table_entry): Likewise.
	(mn10300_elf_relax_section): Handle "call" -> "calls", removal
	of prologue code, and call:32->call:16 relaxing.
	(compute_function_info: New function.
	(bfd_elf32_bfd_ilink_hash_table_create): Define.

Wed Jun 11 00:00:07 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_link_output_extsym): Call finish_dynamic_symbol
	for a symbol which is being forced to be local.
	* elf32-i386.c (elf_i386_relocate_section): Write out the
	relocation value for a GOT reloc for a symbol which is turning
	into a local symbol.
	(elf_i386_finish_dynamic_symbol): If a symbol is turning into a
	local symbol, write out a RELATIVE reloc rather than a GLOB_DAT
	reloc.
	* elf32-m68k.c, elf32-sparc.c: Corresponding changes.

	* elf32-i386.c (elf_i386_relocate_section): Get the relocation
	value if the symbol is turning into a local symbol.
	* elf32-m68k.c (elf_m68k_relocate_section): Likewise.
	* elf32-sparc.c (elf32_sparc_relocate_section): Likewise.

1997-06-10 22:58  Ulrich Drepper  <drepper@cygnus.com>

	* elflink.h (elf_link_add_object_symbols): Also read verneed
	information by calling `_bfd_elf_slurp_version_tables'.
	(elf_link_add_object_symbols): For undefined symbols look for
	version information in the verneed records.
	(elf_link_add_object_symbols): Use soname of shared object
	for verneed record if it is available.

Tue Jun 10 11:13:03 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* cpu-arm.c: Add prototypes for compatible and scan.
	* cofflink.c: Add prototype for mark_relocs.

	* archive.c (bfd_special_undocumented_glue): Change filename to
	const pointer.  Add prototype.

Mon Jun  9 12:34:21 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elflink.h (elf_link_add_object_symbols): Ignore relocations of
	sections that will be discarded.

1997-06-06 22:58  Ulrich Drepper  <drepper@cygnus.com>

	* elflink.h (elf_link_find_version_dependencies): When searching
	for known version symbol skip non-matching verdef records, not
	matching records.

Thu Jun  5 15:52:45 1997  Ian Lance Taylor  <ian@cygnus.com>

	* cofflink.c (_bfd_coff_generic_relocate_section): Write a long,
	not a bfd_vma, to the base file, to match how dlltool reads it.

Tue Jun  3 16:57:45 1997  Nick Clifton  <nickc@cygnus.com>

	* reloc.c: Add thumb relocations.

	* bfd-in2.h: Add Thumb relocations.

	* libbfd.h: Add Thumb relocations.

Mon Jun  2 10:41:52 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* cpu-m68k.c (arch_info_struct): Fix 68060 cpu name.

Fri May 30 12:46:27 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-sparc.c (elf32_sparc_size_dynamic_sections): Set dynindx
	for a section even if it is not loaded.

	* cofflink.c (coff_link_add_symbols): If PE file, don't subtract
	section VMA.
	(_bfd_coff_link_input_bfd): Separate section VMA handling for
	input and output files.
	(_bfd_coff_generic_relocate_section): Check whether input file,
	not output file, is a PE file.

Wed May 28 15:48:43 1997  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c: (coff_arm_bfd_set_private_flags): Make static.

Wed May 28 16:16:04 1997  Ian Lance Taylor  <ian@cygnus.com>

	* coff-i386.c (coff_i386_reloc): Don't just exit if we see an
	R_IMAGEBASE reloc.

Wed May 28 09:48:43 1997  Nick Clifton  <nickc@cygnus.com>

	* cpu-arm.c (compatible): Add test for supersets of ARM
	architectures.

Tue May 27 19:42:03 1997  Bob Manson  <manson@charmed.cygnus.com>

	* cofflink.c (_bfd_coff_final_link): Initialize global_to_static
	member.

Tue May 27 14:34:08 1997  Nick Clifton  <nickc@cygnus.com>

	* coff-arm.c (coff_arm_bfd_set_private_flags): Make global.  It is
	called directly by gas/config/tc-arm.c.

Tue May 27 15:58:53 1997  Richard Henderson  <rth@tamu.edu>

	* elf64-alpha.c (PLT_ENTRY_*): Use a new thread-safe format.
	(elf64_alpha_finish_dynamic_symbol): Fill it in properly.

Mon May 26 14:05:13 1997  Ian Lance Taylor  <ian@cygnus.com>

	* coff-ppc.c (coff_ppc_relocate_section): If PE file, don't add
	section VMA.

Mon May 26 10:57:48 1997  Fred Fish  <fnf@cygnus.com>

	* peicode.h (coff_bfd_print_private_bfd_data): #undef before #define.
	(coff_bfd_copy_private_bfd_data): Ditto.
	* coff-arm.c (coff_arm_bfd_merge_private_bfd_data): Make static.
	(coff_arm_bfd_print_private_bfd_data): Ditto.
	(coff_arm_bfd_set_private_flags): Ditto.
	(coff_arm_bfd_copy_private_bfd_data): Ditto.

Fri May 23 15:14:58 1997  Fred Fish  <fnf@cygnus.com>

	* libcoff-in.h (struct coff_final_link_info): Add boolean
	global_to_static member for support of task linking.
	(_bfd_coff_write_task_globals): Add prototype.
	* libcoff.h: Regenerate.
	* coffcode.h (coff_write_object_contents): Use #ifdef to
	check RS6000COFF_C, to be consistent with all other uses
	in this file.
	* cofflink.c (_bfd_coff_final_link): If doing task linking,
	call _bfd_coff_write_task_globals.
	(_bfd_coff_link_input_bfd): If doing task linking, convert
	global functions to static.
	(_bfd_coff_write_global_sym): If doing task linking, convert
	global variables to static.
	(_bfd_coff_write_task_globals): New function.
	* coff-tic80.c (TIC80COFF): Define this instead of just TIC80.
	(C_AUTOARG): #undef since it clashes with C_UEXT.
	(C_LASTENT): #undef since it clashes with C_STATLAB.
	* coffcode.h (coff_write_object_contents): Use TIC80COFF
	rather than TIC80.
	(coff_slurp_symbol_table): Use C_SYSTEM.  Hide C_AUTOARG use
	when TIC80COFF defined (clashes with C_UEXT).  Explicitly
	recognize C_UEXT, C_STATLAB, and C_EXTLAB as unsupported.

Fri May 23 12:38:24 1997  Ian Lance Taylor  <ian@cygnus.com>

	* coff-tic80.c (tic80_howto_table): Change overflow check for most
	PP relocations to complain_overflow_dont.

Thu May 22 20:22:14 1997  Ian Lance Taylor  <ian@cygnus.com>

	* coff-tic80.c (tic80_howto_table): Add PP relocations.  Change
	name of R_RELLONG to "RELLONG".  Set rightshift and complain for
	M_PPCR.
	(ppbase_reloc, glob15_reloc): New static functions.
	(glob16_reloc, local16_reloc): New static functions.
	(rtype2howto): Handle all relocation types.
	(coff_tic80_relocate_section): New static function.
	(coff_relocate_section): Define to coff_tic80_relocate_section.
	* Makefile.in (coff-tic80.o): Depends upon include/coff/tic80.h.

Wed May 21 17:15:50 1997  Ian Lance Taylor  <ian@cygnus.com>

	* coffcode.h (coff_slurp_symbol_table): If COFF_WITH_PE or
	COFF_IMAGE_WITH_PE, don't subtract the section VMA from the symbol
	value.
	* coffgen.c (fixup_symbol_value): Add abfd parameter.  Change all
	callers.  If PE file, don't add section VMA.
	(coff_write_alien_symbol): If PE file, don't add section VMA.
	* cofflink.c (_bfd_coff_link_input_bfd): Likewise.
	(_bfd_coff_write_global_sym): Likewise.
	(_bfd_coff_generic_relocate_section): Likewise.

	* peicode.h: Add & 0xffffffff when using ImageBase in case bfd_vma
	is 64 bits.

Wed May 21 09:58:10 1997  Nick Clifton  <nickc@cygnus.com>

	* cofflink.c (mark_relocs): Add new function to mark symbols which
	are used by relocations.
	(_bfd_coff_link_input_bfd): Add call to mark_relocs() and code to
	suppress the skipping of symbols that have thus been marked.

Tue May 20 18:45:26 1997  Ian Lance Taylor  <ian@cygnus.com>

	* coff-sh.c (sh_merge_private_data): New static function.
	(coff_bfd_merge_private_bfd_data): Define.

Mon May 19 14:46:00 1997  Mark Alexander  <marka@cygnus.com>

	* coff-tic80.c: Remove unnecessary #ifdefs.
	* config.bfd: Set targ_underscore to yes for tic80.

Mon May 19 14:26:36 1997  Mark Alexander  <marka@cygnus.com>

	* coff-tic80.c (NAMES_HAVE_UNDERSCORE): Define (fixes problem
	with unresolved external symbols in GDB).

Fri May 16 10:23:03 1997  Jeffrey A Law  (law@cygnus.com)

	* elf-m10300.c (elf32_mn10300_relax_section): Read in all
	the symbols associated with each BFD.
	(mn10300_elf_relax_delete_bytes): Don't adjust the same symbol
	more than once.
	* elf-m10200.c: Likewise.
	* elf32-m32r.c: Likewise.
	* elf32-sh.c: Likewise.

Fri May 16 12:10:52 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_link_add_object_symbols): Don't decrease the
	alignment of a common symbol.  If two symbols that look like
	common symbols are found in two shared libraries, and the size is
	different, use the larger size, and warn if --warn-common.  If a
	common symbol overrides a definition in a shared library, set the
	size to the larger size, and warn if --warn-common.

Thu May 15 14:31:28 1997  Nick Clifton  <nickc@cygnus.com>

	* cpu-arm.c (compatible):  Allow default machine to be polymorphed
	into any other machine type.

	* coffcode.h (coff_set_flags):  Initialise flags variable to 0.

	* coff-arm.c (coff_arm_bfd_merge_private_bfd_data):  When merging
	data into an unitialised destination set its machine type as well.

Thu May 15 16:40:20 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_link_add_object_symbols): Force ELF symbol size
	to common symbol size.  Consistently treat uninitialized symbols
	in shared objects as common symbols.

Fri May  9 10:15:27 1997  Nick Clifton  <nickc@cygnus.com>

	* archures.c (constants):  Added new constants to identify the
	type of the ARM architecture: bfd_mach_arm_2, bfd_mach_arm_2a,
	bfd_mach_arm_3,	bfd_mach_arm_3M, bfd_mach_arm_4 and bfd_mach_arm_4T.

	* bfd-in2.h (constants):   Added new constants to identify
	the type of the ARM architecture: bfd_mach_arm_2, bfd_mach_arm_2a,
	bfd_mach_arm_3, bfd_mach_arm_3M, bfd_mach_arm_4 and
	bfd_mach_arm_4T.  This file is auto-magically generated from the
	archures.c file.  This update is just to save work.

	* coff-arm.c (coff_arm_bfd_merge_private_bfd_data,
	coff_arm_bfd_print_private_bfd_data,
	coff_arm_bfd_set_private_flags,
	coff_arm_bfd_copy_private_bfd_data): Added these new functions.
	(global): Macro redefinitions set up to use these new functions.

	* coffcode.h (coff_mkobject_hook): Added call to
	coff_arm_bfd_set_private_flags().
	(coff_set_arch_mach_hook): Added code to set machine type based on
	bits stored in internal flags.
  	(coff_set_flags): Added code to set the new bits in the flags
	field based on the machine number.
	(function definition macros): Made all function definition macros
	conditional so that they can be overridden by target specific
	files.

	* cpu-arm.c (compatible): Added this function.  (arch_info_struct):
	Structure extended to include new types, one each for ARMv2,
	ARMv2a, ARMv3, ARMv3M, ARMv4 and ARMv4T.

	* libcoff-in.h (struct coff_tdata):  Added flags field.

Fri May  9 17:40:02 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config.bfd (i[3456]86-*-gnu*): Don't include Mach support.

	* config.bfd: Change #if 0 around uses of host_aout_vec to #if
	HAVE_host_aout_vec.

Mon May  5 13:57:32 1997  Mike Meissner  <meissner@cygnus.com>

	* coffgen.c (coff_find_nearest_line): If there are no syments,
	just return false.

Mon May  5 18:18:45 1997  Philip Blundell  <pjb27@cam.ac.uk>

	* config.bfd: cope with '*-*-linux-gnuaout' targets.

Thu May  1 11:31:12 1997  Ian Lance Taylor  <ian@cygnus.com>

	* targmatch.sed: Add explicit \n characters to work around bug in
	HP/UX 10.20 sed program.

Wed Apr 30 12:27:03 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elf.c (copy_private_bfd_data): Cast csecs to avoid sign
	extension problems.

Tue Apr 22 12:06:08 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (do_maintainer_clean): Don't remove bfd-in2.h.

Mon Apr 21 11:21:31 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf32-m68k.c: Follow the last changes in elf32-i386.c:
	(struct elf_m68k_pcrel_relocs_copied, struct
	elf_m68k_link_hash_entry, struct elf_m68k_link_hash_table,
	elf_m68k_link_hash_traverse, elf_m68k_hash_table,
	elf_m68k_link_hash_newfunc, elf_m68k_link_hash_table_create,
	elf_m68k_discard_copies, bfd_elf32_bfd_link_hash_table_create):
	New definitions.
	(elf_m68k_check_relocs): If linking with -Bsymbolic, don't copy
	PC relative relocs for a global symbol defined in a regular
	object, and count the number of PC relative relocs copied for any
	global symbol.
	(elf_m68k_size_dynamic_sections): If linking with -Bsymbolic,
	traverse with elf_m68k_discard_copies.

Sat Apr 19 22:50:14 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-i386.c (elf_i386_check_relocs): Only count PC relative
	relocs.  From Jamie Lokier <jamie@rebellion.co.uk>.

	* coffcode.h (coff_compute_section_file_positions): Force the
	potential last byte in the file to be written out when
	COFF_IMAGE_WITH_PE.

Thu Apr 17 13:46:56 1997  Per Fogelstrom  <pefo@openbsd.org>

	* configure.host (mips*-*-openbsd*): New host.

Thu Apr 17 11:10:54 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_link_add_object_symbols): Only subtract the
	section VMA from the symbol value if this is a fully linked file.

	* elf32-i386.c (struct elf_i386_pcrel_relocs_copied): Define.
	(struct elf_i386_link_hash_entry): Define.
	(struct elf_i386_link_hash_table): Define.
	(elf_i386_link_hash_traverse): Define.
	(elf_i386_hash_table): Define.
	(elf_i386_link_hash_newfunc): New static function.
	(elf_i386_link_hash_table_create): New static function.
	(elf_i386_check_relocs): If linking with -Bsymbolic, don't copy
	PC relative relocs for a global symbol defined in a regular
	object, and count the number of PC relative relocs copied for any
	global symbol.
	(elf_i386_size_dynamic_sections): If linking with -Bsymbolic,
	traverse with elf_i386_discard_copies.
	(elf_i386_discard_copies): New static function.
	(bfd_elf32_bfd_link_hash_table_create): Define.

	From Gordon W. Ross <gwr@mc.com>:
	* aoutf1.h (MY_entry_is_text_address): Define if not defined.
	(sunos4_aout_backend): Use MY_entry_is_text_address.

Wed Apr 16 12:43:32 1997  Martin Hunt  <hunt@cygnus.com>

	* elf32-d30v.c (elf_d30v_howto_table): Changed size of
	R_D30V_32_NORMAL to 2 (4 bytes).

Wed Apr 16 14:02:29 1997  Ian Lance Taylor  <ian@cygnus.com>

	From Gordon W. Ross <gwr@mc.com>:
	* netbsd.h (N_SHARED_LIB): Define.
	(SEGMENT_SIZE): Don't define.
	* m68knetbsd.c (SEGMENT_SIZE): Don't define (revert change of
	April 11).
	* sparcnetbsd.c (TARGET_PAGE_SIZE): Define as 0x2000.
	(SEGMENT_SIZE): Don't define.

	* elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Set .rela.bss size
	to sizeof Rela structure, not sizeof Rel structure.  From Gary
	Thomas <g.thomas@opengroup.org>.

Tue Apr 15 11:50:37 1997  Ian Lance Taylor  <ian@cygnus.com>

	* aout-target.h (MY(callback)): If entry_is_text_address, adjust
	whenever entry is larger than text address, but only by whole
	pages.  From Gordon W. Ross <gwr@mc.com>.

	* Makefile.in (install): Depend upon installdirs.  Use
	mkinstalldirs to build $(oldincludedir).
	(installdirs): New target.

	* elflink.h (elf_link_add_object_symbols): Don't call check_relocs
	if this is a debugging section which we are stripping.

Mon Apr 14 12:39:30 1997  Richard Henderson  <rth@tamu.edu>

	* elf64-alpha.c (elf64_alpha_object_p): Allocate the
	alpha-specific target data struct.

Mon Apr 14 11:45:46 1997  Ian Lance Taylor  <ian@cygnus.com>

	From Thomas Graichen <graichen@rzpd.de>:
	* Makefile.in: Always use $(SHELL) when running move-if-change.
	* configure.in: Use ${CONFIG_SHELL} when running $ac_config_sub.
	* configure: Rebuild.

Fri Apr 11 15:43:24 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elfcode.h (elf_slurp_symbol_table): Only subtract the section
	VMA if this is an executable file or a shared object.

	* targets.c (netbsd_core_vec): Declare.  From Gordon W. Ross
	<gwr@mc.com>.

	* libaout.h (struct aout_backend_data): Add entry_is_text_address
	field.
	* aout-target.h (SEGMENT_SIZE): Define to TARGET_PAGE_SIZE at the
	start of the file.  Remove uses later on which switch using
	ifdef.
	(MY(callback)): Handle entry_is_text_address.
	(MY_entry_is_text_address): Define if not defined.
	(MY(backend_data)): Initialize new field.
	* aoutf1.h (sunos4_aout_backend): Likewise.
	* i386aout.c (MY(backend_data)): Likewise.
	* i386mach3.c (MY(backend_data)): Likewise.
	* mipsbsd.c (MY(backend_data)): Likewise.
	* sparclynx.c (sparclynx_aout_backend): Likewise.
	* netbsd.h (SEGMENT_SIZE): Define if not defined.
	(MY_entry_is_text_address): Define.
	* m68knetbsd.c (SEGMENT_SIZE): Define as 0x20000.

	* xcofflink.c (bfd_xcoff_import_symbol): Handle importing a symbol
	whose name starts with `.'.

Fri Apr 11 11:57:15 1997  Niklas Hallqvist  <niklas@appli.se>

	* config.bfd: (i[3456]86-*-openbsd*, m68*-*-openbsd*,
	mips*el*-*-openbsd*, mips*-*-openbsd*, ns32k-*-openbsd*,
	powerpc-*-*bsd*, sparc-*-openbsd*): New targets.
	* configure.in (i[3456]86-*-openbsd*, mips*-*-openbsd*,
	m68*-*-openbsd*, ns32k-*-openbsd*, powerpc-*-*bsd*,
	sparc-*-openbsd*): New targets.
	* configure: Rebuild.

Tue Apr  8 18:09:29 1997  Jamie Lokier  <jamie@rebellion.co.uk>

	* stabs.c (struct stab_section_info): New field
	`cumulative_skips'.
	(_bfd_link_section_stabs): Fill the above array.
	(_bfd_stab_section_offset): Use `cumulative_skips' to
	speed up offset calculation.

Tue Apr  8 00:01:31 1997  Jeffrey A Law  (law@cygnus.com)

        * elf-mn10300.c (mn10300_elf_relax_section): Don't forget the
        addend for non pc-relative relocations.

	* elf-m10300.c (bfd_elf32_mn10300_reloc): Remove prototype
	for non-existent function.

	* elf-m10300.c (mn10300_elf_relax_section): New function.
	(mn10300_elf_relax_delete_bytes): Likewise.
	(mn10300_elf_symbol_address_p): Likewise.
	(mn10300_elf_get_relocated_section_contents): Likewise.
	(bfd_elf32_bfd_relax_section): Define.
	(bfd_elf32_bfd_get_relocated_section_contents): Likewise.

Mon Apr  7 16:47:09 1997  Ian Lance Taylor  <ian@cygnus.com>

	* configure.host: Set SHLIB_LIBS.
	* configure.in: Substitute SHLIB_LIBS.
	* configure: Rebuild.
	* Makefile.in (SHLIB_LIBS): New variable.
	($(SHLIB)): Use $(SHLIB_LIBS).

Mon Apr  7 10:53:52 1997  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* bfd-in.h bfd-in2.h: add bfd_section_lma macro to correspond
	with bfd_section_vma.

Fri Apr  4 11:37:15 1997  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Update file names for bfd_elf32_mn10[23]00_vec.
	Correct CPU file names for mn10[23]00.
	* configure: Rebuild.

	* bfd.c (bfd_record_phdr): Cast count to size_t before
	subtraction.

	* coff-ppc.c (dump_toc): Add cast to avoid warning from SunOS cc.
	* coff-rs6000.c (xcoff_read_ar_hdr): Likewise.
	(xcoff_write_archive_contents): LIkewise.
	* elf32-mips.c (_bfd_mips_elf_set_section_contents): Likewise.
	(mips_elf_create_procedure_table): Likewise.
	* peicode.h (pe_print_idata): Likewise.
	(pe_print_edata, pe_print_pdata, pe_print_reloc): Likewise.
	* xcofflink.c (xcoff_get_section_contents): Likewise.
	(_bfd_xcoff_canonicalize_dynamic_symtab): Likewise.
	(xcoff_link_add_symbols): Likewise.
	(xcoff_link_add_symbols): Likewise.

	* ppcboot.c (ppcboot_set_arch_mach): Make static.
	(ppcboot_bfd_print_private_bfd_data): Likewise.

	* elf32-mips.c (elf_mips_ctor64_howto): Set complain_on_overflow
	to complain_overflow_signed.

Thu Apr  3 11:51:54 1997  Ian Lance Taylor  <ian@cygnus.com>

	* VERSION: Set to 2.8.1.

	* Branched binutils 2.8.

	* elf32-ppc.c (ppc_elf_check_relocs):  Don't check SEC_ALLOC when
	deciding whether to copy a reloc into a shared object.
	(ppc_elf_relocate_section): Likewise.  Relocate R_PPC_RELATIVE
	relocs in unallocated sections.
	* elf32-sparc.c (elf32_sparc_relocate_section): Relocate
	R_SPARC_RELATIVE relocs in unallocated sections.

Wed Apr  2 16:19:41 1997  Mike Meissner  <meissner@cygnus.com>

	* elf32-ppc.c (ppc_elf_check_relocs): Undo March 26 change and
	always create got section so that the _GLOBAL_OFFSET_TABLE_ label
	is always created.

Wed Apr  2 10:49:07 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_link_add_object_symbols): Let a common symbol
	override an uninitialized symbol from a shared library with a
	smaller size.

	* elf-m10200.c: Rename from elf32-mn10200.c.
	* elf-m10300.c: Rename from elf32-mn10300.c.
	* cpu-m10200.c: Rename from cpu-mn10200.c
	* cpu-m10300.c: Rename from cpu-mn10300.c
	* Makefile.in: Update accordingly.

	* elf32-mips.c (elf_mips_ctor64_howto): New static variable.
	(elf_mips_isa): Move to earlier in file.
	(mips_reloc_map): Remove BFD_RELOC_CTOR entry.
	(bfd_elf32_bfd_reloc_type_lookup): Handle BFD_RELOC_CTOR
	specially.

	* elf32-mips.c (mips16_jump_reloc): Print a warning rather than
	calling abort.

Tue Apr  1 16:18:05 1997  Klaus Kaempf  <kkaempf@progis.de>

	* configure.com: New file.
	* config.h-vms: Remove file.
	* makefile.vms: Update for new configure scheme.

Mon Mar 31 23:28:39 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* libcoff-in.h (ppc_allocate_toc_section): Declare.
	(ppc_process_before_allocation): Declare.
	* libcoff.h: Rebuild.

	* coffcode.h (coff_mkobject_hook): Declare if not a macro.

Mon Mar 31 16:29:50 1997  Joel Sherrill  <joel@oarcorp.com>

        * config.bfd (hppa*-*-rtems*): New target, like hppa-*-*elf*.

Mon Mar 31 16:11:35 1997  Ian Lance Taylor  <ian@cygnus.com>

	* coff-a29k.c (coff_a29k_relocate_section): Don't use symndx as a
	symbol index for a R_IHCONST reloc.

Mon Mar 31 15:40:59 1997  Philippe De Muyter  <phdm@info.ucl.ac.be>

	* targmatch.sed: Do not use \(\) recursively.

Fri Mar 28 14:44:08 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* m68klinux.c (MACHTYPE_OK): Define.
	* i386linux.c (MACHTYPE_OK): Define.

Fri Mar 28 11:56:15 1997  Ian Lance Taylor  <ian@cygnus.com>

	From David S. Miller <davem@caip.rutgers.edu> and H.J. Lu
	<hjl@gnu.ai.mit.edu>:
	* sparclinux.c: New file.
	* bfd-in.h (bfd_sparclinux_size_dynamic_sections): Declare.
	* bfd-in2.h: Rebuild.
	* config.bfd (sparc-*-linuxaout*, sparc-*-linux*): New targets.
	* configure.in (sparclinux_vec): Add to list of vectors.
	* configure: Rebuild.
	* targets.c (sparclinux_vec): Declare.
	(bfd_target_vector): Add sparclinux_vec.
	* Makefile.in: Rebuild dependencies.
	(BFD32_BACKENDS): Add sparclinux.o.
	(BFD32_BACKENDS_CFILES): Add sparclinux.c.

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

	* config.bfd: Add bfd_elf64_{big,little}mips_vec to targ_selvecs
	for mips*el*-*-linux* and mips*-*-linux*.  From H.J. Lu
	<hjl@lucon.org> and Ralf Baechle <ralf@gnu.ai.mit.edu>.

	* bfd.c: Include "libiberty.h".
	(strerror): Don't declare.
	(bfd_errmsg): Call xstrerror rather than strerror.

Thu Mar 27 12:55:42 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-i386.c (elf_i386_adjust_dynamic_symbol): Generate a COPY
	reloc even if the symbol is in the .bss section.
	* elf32-m68k.c (elf_m68k_adjust_dynamic_symbol): Likewise.
	* elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Likewise.
	* elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Likewise.

	* coffcode.h (bfd_coff_backend_data): Add new field
	_bfd_coff_default_section_alignment_power.
	(bfd_coff_default_section_alignment_power): Define.
	(bfd_coff_std_swap_table): Initialize new field.
	* libcoff.h: Rebuild.
	* cofflink.c (coff_link_add_symbols): Limit alignment of a common
	symbol to the default section alignment.

	* COPYING: Update FSF address.

Thu Mar 27 00:45:57 1997  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* elf32-d30v.c (elf_d30v_howto_table): Fix a typo in the
	21-bit absolute that made it act as a relative.

Wed Mar 26 14:50:20 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.c (_bfd_elf_create_linker_section): Don't set
	bss_section and rel_section from existing sections.

	* elf32-ppc.c (ppc_elf_check_relocs): Only create the got section
	if it is needed.

Tue Mar 25 22:26:56 1997  Stu Grossman  (grossman@critters.cygnus.com)

	* aoutx.h (some_aout_object_p):  Change executable test to fix
	problems with embedded a.out systems.

Tue Mar 25 14:35:37 1997  Ian Lance Taylor  <ian@cygnus.com>

	* stabs.c (_bfd_stab_section_offset): New function.
	* libbfd-in.h (_bfd_stab_section_offset): Declare.
	* libbfd.h: Rebuild.
	* elf32-i386.c (elf_i386_relocate_section): Adjust the offset of a
	stab reloc.
	* 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.

	* stabs.c (_bfd_link_section_stabs): Copy over the first header
	symbol.  Check for memory allocation failure of *psinfo.
	(_bfd_write_section_stabs): Add psinfo parameter.  Change all
	callers.  Set the value of the header symbol.
	* libbfd-in.h (_bfd_write_section_stabs): Update declaration.
	* libbfd.h: Rebuild.

Mon Mar 24 20:07:29 1997  Fred Fish  <fnf@cygnus.com>

	* coff-tic80.c (tic80_howto_table): Add R_ABS entry.
	(rtype2howto): Handle R_ABS reloc type.  Also abort on unhandled
	reloc types, rather than silently failing to generate an output file.

Mon Mar 24 13:41:00 1997  Ian Lance Taylor  <ian@cygnus.com>

	* targmatch.sed: Use the hold space to put the #ifdef around the
	the string constant.
	* targets.c (UNSUPPORTED_TARGET): Don't define.
	(find_target): Don't check for UNSUPPORTED_TARGET.
	(bfd_set_default_target): Don't try to optimize by checking for
	default.

	* Makefile.in: Rebuild dependencies.
 	(ALL_MACHINES_CFILES): Add cpu-m32r.c.
	(BFD32_BACKENDS_CFILES): Add elf32-m32r.c.
	(elf32-m32r.o): Remove explicit target.

	* config.bfd: Don't set targ_underscore for i[3456]86-*-gnu* or
	i[3456]86-*-linux*.

	* elf32-sparc.c (elf32_sparc_size_dynamic_sections): Don't
	count section symbols for sections that were created by the
	linker, or are not allocatable or not loadable.
	(elf32_sparc_finish_dynamic_sections): Output output section
	symbols for section for which we made space for them.

Fri Mar 21 13:08:26 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-sparc.c (elf32_sparc_size_dynamic_sections): If there is
	no .rela.plt section, don't output a DT_PLTGOT dynamic entry.

Fri Mar 21 12:36:46 1997  Doug Evans  <dje@canuck.cygnus.com>

	* elf32-m32r.c (m32r_elf_howto_table): Use special function for LO16.
	(m32r_hi16_list): New static local.
	(m32r_elf_hi16_reloc): Don't perform reloc, just queue it up.
	(m32r_elf_do_hi16_reloc): Delete.
	(m32r_elf_relocate_hi16): New function.
	(m32r_elf_lo16_reloc): New function.
	(m32r_elf_relocate_section): For HI16 relocs, scan for corresponding
	LO16 reloc.

	Mon Mar 10 16:03:31 1997  Doug Evans  <dje@seba.cygnus.com>

	* elf32-m32r.c (m32r_elf_create_linker_section): Delete.
	(m32r_elf_add_symbol_hook): Rewrite _SDA_BASE_ support.
	(m32r_elf_final_sda_base): New function.
	(m32r_elf_relocate_section): Rewrite sdata support.
	(m32r_elf_finish_dynamic_sections): Delete.

Thu Mar 20 12:39:02 1997  Ian Lance Taylor  <ian@cygnus.com>

	Based on patches from Philippe De Muyter <phdm@info.ucl.ac.be>.
	* coff-svm68k.c: New file.  Just defines some macros and includes
	coff-m68k.c.
	* coff-m68k.c: Add functions to handle common addends, moved in
	from cf-m68klynx.c.  Control them using COFF_COMMON_ADDEND macro.
	Control whether relocs are visible using STATIC_RELOCS.
	* cf-m68klynx.c: Simplify greatly: just define macros to control
	coff-m68k.c.
	* coff-aux.c: Likewise.  Just leave add_one_symbol routine.
	* targets. (m68ksysvcoff_vec): Declare.
	(bfd_target_vector): Add m68ksysvcoff_vec.
	* config.bfd (m68*-motorola-sysv*): New target.
	* configure.in (m68ksysvcoff_vec): New vector.
	* configure: Rebuild.
	* Makefile.in: Rebuild dependencies.
 	(BFD32_BACKENDS): Add coff-svm68k.o.
	(BFD32_BACKENDS_CFILES): Add coff-svm68k.c.

	* binary.c (binary_set_section_contents): Don't get misled if the
 	first section is not loadable.  From Matthew L. Martin
 	<mlm@xedia.com>.

	* elflink.h (elf_bfd_final_link): Set the value of a section
	symbol to the section address unless doing a relocateable link.

Tue Mar 18 23:03:17 1997  Richard Henderson  <rth@tamu.edu>

	* elf64-alpha.c (elf64_alpha_adjust_dynamic_symbol): Don't create
	.plt entry if we've taken the function's address.
	(elf64_alpha_merge_gots): Merge collected flags info as well.

Tue Mar 18 22:40:09 1997  H.J. Lu  <hjl@lucon.org>

	* Many files: Add function prototypes.
	* cpu-m68k.c (bfd_default_scan_num_mach): Don't declare.
	* ecofflink.c: Include "libcoff.h" and "libecoff.h".
	* elf32-ppc.c (ppc_elf_fake_sections): Make static.
	* opncls.c (bfd_openstreamr): Change stream parameter to PTR.
	* peicode.h: Change several void * parameters to PTR.
	* srec.c (srec_get_symbol_info): Make static.
	* syms.c (bfd_symbol_is_absolute): Remove.
	* Makefile.in: Rebuild dependencies.

Tue Mar 18 12:58:08 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-m32r.c (m32r_elf_is_local_label_name): Remove.
	(bfd_elf32_bfd_is_local_label): Don't define.

	* xcofflink.c (_bfd_xcoff_bfd_final_link): Call bfd_malloc rather
	than malloc.

Mon Mar 17 11:32:53 1997  Ian Lance Taylor  <ian@cygnus.com>

	* bfd-in.h: Don't include obstack.h.
	(struct bfd_hash_table): Change memory field to PTR.
	* bfd.c (struct _bfd): Change memory field to PTR.
	* bfd-in2.h: Rebuild.
	* libbfd-in.h (bfd_release): Declare as function, don't define as
	macro.
	* libbfd.h: Rebuild.
	* opncls.c: Include "objalloc.h" rather than "obstack.h".  Use
	objalloc routines rather than obstack routines.
	(obstack_chunk_alloc, obstack_chunk_free): Don't define.
	(getpagesize): Don't define.
	(_bfd_new_bfd): Don't set _bfd_chunksize.
	(bfd_openr): Free new bfd and objalloc on failure.
	(bfd_fdopenr, bfd_openstreamr, bfd_openw): Likewise.
	(bfd_alloc_size): Remove.
	(bfd_release): New function.
	* hash.c: Include "objalloc.h" rather than "obstack.h".  Use
	objalloc routines rather than obstack routines.
	(obstack_chunk_alloc, obstack_chunk_free): Don't define.
	* ecofflink.c: Include "objalloc.h" rather than "obstack.h".  Use
	objalloc routines rather than obstack routines.
	(obstack_chunk_alloc, obstack_chunk_free): Don't define.
	(struct accumulate): Change memory to struct objalloc *.
	* liboasys.h (oasys_data_type): Remove oasys_obstack field.
	* dep-in.sed: Don't remove obstack.h from dependency list.
	* Makefile.in: Rebuild dependencies.
	(BFD_H_DEPS): Remove obstack.h.
	(install): Don't install obstack.h.
	* Many files: Don't include "obstack.h".
	* VERSION: Bump.

	* opncls.c (bfd_alloc_grow, bfd_alloc_finish): Remove.
	* libbfd-in.h (bfd_alloc_grow, bfd_alloc_finish): Don't declare.
	* libbfd.h: Rebuild.
	* ieee.c (ieee_archive_p): Rewrite to not use bfd_alloc_grow.
	* sunos.c (sunos_add_dynamic_symbols): Likewise.
	* srec.c (srec_scan): Rewrite to not use obstack_1grow.

	* opncls.c (bfd_alloc): Rename from bfd_alloc_by_size_t.  Remove
	old version of bfd_alloc.
	* libbfd-in.h (bfd_alloc_by_size_t): Don't declare.
	* libbfd.h: Rebuild.
	* Several files: Call bfd_alloc rather than bfd_alloc_by_size_t.

Sat Mar 15 15:24:18 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-mips.c (mips_elf_is_local_label_name): Accept the generic
	ELF local label syntax as well.

Sat Mar 15 10:16:42 1997  Fred Fish  <fnf@cygnus.com>

	* config.bfd (powerpc-*-beos*): New target.
	* configure.in (powerpc-*-beos*): Add case that explicitly
	does not set COREFILE for now.  A future BeOS version is
	expected to support core files.
	* configure: Regenerate with autoconf.

Fri Mar 14 16:43:22 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-mips.c (mips_elf_check_relocs): Give an error if CALL16 is
 	seen with a local symbol, rather than crashing.

	* elfcode.h (elf_slurp_symbol_table): Don't try to read the
	version symbols if there aren't any.

Thu Mar 13 16:38:30 1997  Fred Fish  <fnf@cygnus.com>

	* coff-tic80.c (coff_rtype_to_howto): Define
	(coff_tic80_rtype_to_howto): Clone generic coff version and
	add code to handle the funky TI "internal relocations".

Thu Mar 13 14:08:53 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_link_add_object_symbols): Don't warn about type
	or size changes because of a weak symbol.

	* cisco-core.c (SIGEMT): Define if not defined.

Wed Mar 12 21:36:05 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_link_add_object_symbols): Use extsymoff when
	setting ever.  Sanity check the version number.  Sort out copying
	flags and other information when adding an indirect symbol.
	(NAME(bfd_elf,size_dynamic_sections)): Preserve any dynamic
	symbols added by the backend.  Clear the entire contents of the
	versym section.
	(elf_export_symbol): Ignore indirect symbols.
	(elf_link_output_extsym): Accept a section without an owner in an
	assert.
	* elfcode.h (elf_slurp_symbol_table): Add a sanity check on the
	version count.  Correct the allocation of x_versymp.

	* elf32-mips.c (mips_elf_add_symbol_hook): Don't set the owner of
	the magic sections used for SHN_MIPS_TEXT and SHN_MIPS_DATA.
	Don't return bfd_und_section_ptr when info->shared.
	(mips_elf_final_link): Set the alignment of .rtproc to 4, not 12.
	(mips_elf_create_dynamic_sections): Correct type: ^= for &=.
	(mips_elf_check_relocs): Resolve an indirect symbol in
	sym_hashes.
	(mips_elf_finish_dynamic_symbol): Don't change SHN_ABS into
	SHN_MIPS_TEXT or SHN_MIPS_DATA.

	* elf.c (bfd_elf_print_symbol): Tweak version output slightly.

Tue Mar 11 01:38:36 1997  Ian Lance Taylor  <ian@cygnus.com>

	From Eric Youngdale <eric@andante.jic.com>:
	* elf-bfd.h (ELF_LINK_FORCED_LOCAL): Define.
	* elf.c (bfd_elf_print_symbol): Correct errors in last change.
	* elflink.h (elf_link_add_object_symbols): Handle cases in which a
	versioned symbol appears in both a regular and a shared object.
	(elf_link_assign_sym_version): Set ELF_LINK_FORCED_LOCAL when
	appropriate.  Improve error message.
	(struct elf_outext_info): Rename from elf_finfo_failed.  Change
	all uses.  Add localsyms field.
	(elf_bfd_final_link): When generating a shared library, call
	elf_link_output_extsym to output all local symbols.
	(elf_link_output_extsym): Handle symbols which were forced to
	become local.

Sun Mar  9 23:08:49 1997  Ian Lance Taylor  <ian@cygnus.com>

	From Eric Youngdale <eric@andante.jic.com>:
	* elf-bfd.h (elf_symbol_type): Add version field.
	* elfcode.h (elf_slurp_symbol_table): Set version field.
	* elflink.h (elf_link_add_object_symbols): When creating an
 	indirect symbol for a default version symbol, set DEF_DYNAMIC if
 	appropriate.  Set up an indirection from the nondefault version of
	the symbol as well.
	(NAME(bfd_elf,size_dynamic_sections)): Call
	elf_link_assign_sym_version before checking whether there are any
	versions.  Always record the version name as a dynamic symbol.
	Initialize counters.
	(elf_link_assign_sym_version): After finding a version, see if a
	symbol should be forced to local scope.  Create a new version
	definition if appropriate.
	(elf_link_output_extsym): Correct indirect symbol handling.
	* elf.c (bfd_elf_print_symbol): Print version information.
	(bfd_section_from_shdr): Turn version sections into BFD sections.
	(elf_fake_sections): Only copy cverdefs and cverrefs into sh_info
	if sh_info is not already set.
	(_bfd_elf_copy_private_section_data): Copy sh_info for version
	sections.
	* elflink.c (_bfd_elf_link_record_dynamic_symbol): Tell
	_bfd_stringtab_add to copy the name into permanent memory if
	appropriate.

Fri Mar  7 11:55:31 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* elf64-alpha.c (alpha_elf_dynamic_symbol_p): Fully parenthesize.

Fri Mar  7 10:37:30 1997  Ian Lance Taylor  <ian@cygnus.com>

	* coffcode.h (bfd_coff_backend_data): Change
	_bfd_coff_compute_section_file_positions to return a boolean
	value.  Change all callers.
	(coff_compute_section_file_positions): Change return type to
	boolean.  If the size of the last section changed, then output a
	zero byte at the end of the file.
	* libcoff.h: Rebuild.

	* xcofflink.c (_bfd_xcoff_bfd_final_link): Always allocate space
	for at least 6 output symbols.
	(xcoff_write_global_symbol): When emitting TOC entry relocs, also
	emit a TC csect to represent the space they take up.  For an XO
	symbol, just emit a reference, not a csect.

	* Makefile.in ($(SHLINK)): Just use ln -s, not ln -sf, since
	Solaris doesn't like the combined options, and the -f is
	unnecessary.
	(stamp-tshlink, install): Likewise.

	* elf32-mips.c (mips_elf_relocate_section): Correct R_MIPS16_26
	handling when little endian.

Thu Mar  6 13:51:51 1997  Jeffrey A Law  (law@cygnus.com)

	* elf32-mn10300.c (mn10300_elf_final_link_relocate): New function.
	(mn10300_elf_relocate_section): Likewise.
	(elf_backend_relocate_section): Define.

	* elf32-mn10300.c (reloc_type): Remove PCREL{8,16,32}_{1,2}BYTE
	relocs.  Replace them with generic PCREL_{8,16,32} relocs.
	(elf32_mn10300_howto_table): Likewise.
	(elf32_mn10300_reloc_map): Likewise.
	(bfd_elf32_mn10300_reloc): Delete unused function.

Thu Mar  6 12:19:59 1997  Fred Fish  <fnf@cygnus.com>

	* coff-tic80.c (rtype2howto): If passed a relocation type we don't
	understand, just set the howto field to NULL, and the caller will
	print an appropriate error message.
	* coffcode.h (coff_slurp_reloc_table): Pull duplicate declarations and
	code fragment out of both legs of #ifdef RELOC_PROCESSING ... #endif
	block.  Use NULL for initializations of "ptr" rather than bare 0.
	* coff-h8300.c: Fix typo in comment.
	* coff-h8500.c: Ditto.
	* coff-w65.c: Ditto
	* coff-z8k.c: Ditto.

Wed Mar  5 13:59:09 1997  Doug Evans  <dje@seba.cygnus.com>

	* elf32-m32r.c (m32r_elf_do_10_pcrel_reloc): Fix overflow calc.
	(m32r_elf_relax_section, m32r_elf_relax_delete_bytes,
	m32r_elf_get_relocated_section_contents): First pass at relax support.

Mon Mar  3 13:27:09 1997  Ulrich Drepper  <drepper@rtl.cygnus.com>

	* elflink.h (elf_link_add_object_symbols): Use correct sh_size
	entry for reading verdef records.
	Use correct braces for computing increments of extverdaux and
	exteverdef record pointers.

Sun Mar  2 22:47:54 1997  Fred Fish  <fnf@cygnus.com>

	* coff-tic80.c (COFF_DEFAULT_SECTION_ALIGNMENT_POWER): Set this to 2
	instead of 4.

Sun Mar  2 16:25:35 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_link_find_version_dependencies): Check that
	DEF_REGULAR is not set as well as checking that DEF_DYNAMIC is
	set.

Fri Feb 28 16:52:40 1997  Fred Fish  <fnf@cygnus.com>

	* coffcode.h (coff_set_flags): Add case for TIC80_ARCH_MAGIC.

Fri Feb 28 15:06:45 1997  Ian Lance Taylor  <ian@cygnus.com>

	* targets.c (bfd_default_vector): Make non-const.
	(find_target): New static function, broken out of
	bfd_find_target.
	(bfd_set_default_target): New function.
	(bfd_find_target): Call find_target.  When defaulting, use
	bfd_default_vector[0] if it is not NULL.
	* libbfd-in.h (bfd_default_vector): Adjust declaration.
	* bfd-in2.h, libbfd.h: Rebuild.

	* syms.c (bfd_is_local_label): Return false if the symbol has no
	name.
	* coff-i960.c (coff_i960_is_local_label_name): New function.
	(coff_bfd_is_local_label_name): Define.
	* coff-m68k.c (m68k_coff_is_local_label_name): New function.
	(coff_bfd_is_local_label_name): Define.
	* coff-rs6000.c (xcoff_is_local_label_name): New function.
	(coff_bfd_is_local_label_name): Define.
	* elf.c (_bfd_elf_is_local_label_name): Treat symbols beginning
	with .. or _.L_ as local.
	* elf32-i386.c (elf_i386_is_local_label_name): New function.
	(bfd_elf32_bfd_is_local_label_name): Define.
	* evax-alpha.c (evax_bfd_is_local_label_name): Treat symbols
	beginning with $ as local.

Thu Feb 27 18:36:23 1997  Ian Lance Taylor  <ian@cygnus.com>

	* aoutx.h (aout_link_write_symbols): Use bfd_is_local_label_name
	rather than comparing against info->lprefix.
	* cofflink.c (_bfd_coff_link_input_bfd): Likewise.
	* elflink.h (elf_link_input_bfd): Likewise.
	* linker.c (_bfd_generic_link_output_symbols): Likewise.
	* xcofflink.c (xcoff_link_input_bfd): Likewise.

	* elfxx-target.h (bfd_elfNN_bfd_is_local_label_name): Define as
	_bfd_elf_is_local_label_name if not already defined.
	* elf.c (_bfd_elf_is_local_label_name): New function.
	* elf-bfd.h (_bfd_elf_is_local_label_name): Declare.

	* coff-m88k.c (coff_bfd_is_local_label_name): Define.
	(m88k_is_local_label_name): New static function.

	* coffcode.h (coff_bfd_is_local_label_name): Define as
	_bfd_coff_is_local_label_name if not already defined.
	* coffgen.c (_bfd_coff_is_local_label_name): New function.
	* libcoff-in.h (_bfd_coff_is_local_label_name): Declare.
	* libcoff.h: Rebuild.

	* targets.c (BFD_JUMP_TABLE_SYMBOLS): Change _bfd_is_local_label
	to _bfd_is_local_label_name.
	(bfd_target): Likewise.
	* syms.c (bfd_is_local_label): Define as function, not macro.
	(bfd_is_local_name): Define.
	* libbfd.c (bfd_generic_is_local_label_name): Rename from
	bfd_generic_is_local_label, and take a string rather than a
	symbol.
	* libbfd-in.h (_bfd_nosymbols_bfd_is_local_label): Don't define.
	(_bfd_nosymbols_bfd_is_local_label_name): Define.
 	(bfd_generic_is_local_label): Don't declare.
	(bfd_generic_is_local_label_name): Declare.
	* bfd-in2.h, libbfd.h: Rebuild.
	* All backends: Change local_label to local_label_name.

	* elf32-mips.c (struct mips_got_info): Add assigned_gotno field.
	(mips_elf_relocate_got_local): Change return type to boolean.
	Don't assume that the first zero entry is unassigned; instead, use
	assigned_gotno.
	(mips_elf_relocate_section): Check return value of
	mips_elf_relocate_got_local.
	(mips_elf_create_got_section): Initialize assigned_gotno field.

Wed Feb 26 15:19:51 1997  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* elf32-d30v.c (bfd_elf_d30v_reloc): Add code to do 32-bit
	relocations.

Wed Feb 26 13:33:03 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_link_input_bfd): Don't skip symbols from sections
	that have no contents merely because linker_mark is not set.

Tue Feb 25 18:51:35 1997  Stan Shebs  <shebs@andros.cygnus.com>

	* config.bfd (mips*-*-lnews*): New target.
	* coff-mips.c (mips_relocate_section): Make assert compare
	content byteorder instead of header byteorder.
	(ecoff_biglittle_vec): New BFD, big-endian headers, little-endian
	data.
	* targets.c (bfd_target_vector): Add ecoff_biglittle_vec.
	* configure.in (ecoff_biglittle_vec): Add case.
	* configure: Update.

Tue Feb 25 00:32:49 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elf.c (elf_fake_sections): Use SHT_NOTE for any section whose
	name begins with ".note".
	(map_sections_to_segments): Add a PT_NOTE segment for any loadable
	section whose name begins with ".note".
	(get_program_header_size): Corresponding change.

	* elf32-mips.c (mips_elf_relocate_section): Check for misaligned
	jal and for jal overflow.

Mon Feb 24 17:53:14 1997  Ian Lance Taylor  <ian@cygnus.com>

	From Eric Youngdale <eric@andante.jic.com>:
	* elflink.h (elf_link_add_archive_symbols): If a default symbol is
	not found, try looking it up again without the version name.
	(elf_link_add_object_symbols): Always link against the dynamic
	symbol table of a dynamic object.  When linking against a dynamic
	object, include version strings in symbol names, and set up
	version information.  Add indirect symbols for default versions.
	(elf_link_create_dynamic_sections): Add special version sections.
	(struct elf_assign_sym_version_info): Define.
	(struct elf_find_verdep_info): Define.
	(NAME(bfd_elf,size_dynamic_sections)): Add verdefs parameter.  Set
	up version sections.
	(elf_adjust_dynamic_symbol): Ignore indirect symbols.
	(elf_link_find_version_dependencies): New static function.
	(elf_link_assign_sym_version): New static function.
	(elf_link_renumber_dynsyms): New static function.
	(struct elf_final_link_info): Add symver_sec field.
	(elf_bfd_final_link): Initialize finfo.symver_sec.  Don't count
	local symbols of a dynamic object.  Handle DT_VER* constants.
	(elf_link_output_extsym): Simplify BFD_ASSERT checking for a
	dynamic object.  Skip indirect symbols from ELF objects.  Remove
	the version name before choosing a hash bucket.  Write out the
	version information if appropriate.
	(elf_link_input_bfd): Check for DYNAMIC, not ET_DYN.
	* bfd-in.h (bfd_elf32_size_dynamic_sections): Update declaration.
	(bfd_elf64_size_dynamic_sections): Likewise.
	* bfd-in2.h: Rebuild.
	* elf-bfd.h (struct elf_link_hash_entry): Add verinfo field.
	Change elf_link_hash_flags to unsigned short.
	(ELF_LINK_HIDDEN): Define.
	(struct elf_obj_tdata): Add fields dynversym_hdr, dynverref_hdr,
	dynverdef_hdr, dynversym_section, dynverdef_section,
	dynverref_section, cverdefs, cverrefs, verdef, verref.
	(elf_dynversym, elf_dynverdef, elf_dynverref): Define.
	(_bfd_elf_swap_verdef_in, _bfd_elf_swap_verdef_out): Declare.
	(_bfd_elf_swap_verdaux_in, _bfd_elf_swap_verdaux_out): Declare.
	(_bfd_elf_swap_verneed_in, _bfd_elf_swap_verneed_out): Declare.
	(_bfd_elf_swap_vernaux_in, _bfd_elf_swap_vernaux_out): Declare.
	(_bfd_elf_swap_versym_in, _bfd_elf_swap_versym_out): Declare.
	(_bfd_elf_slurp_version_tables): Declare.
	* elf.c (_bfd_elf_swap_verdef_in): New function.
	(_bfd_elf_swap_verdef_out): Likewise.
	(_bfd_elf_swap_verdaux_in, _bfd_elf_swap_verdaux_out): Likewise.
	(_bfd_elf_swap_verneed_in, _bfd_elf_swap_verneed_out): Likewise.
	(_bfd_elf_swap_vernaux_in, _bfd_elf_swap_vernaux_out): Likewise.
	(_bfd_elf_swap_versym_in, _bfd_elf_swap_versym_out): Likewise.
	(_bfd_elf_print_private_bfd_data): Add DT_VER* constants.  Print
	version information if there is any.
	(_bfd_elf_link_hash_newfunc): Initialize verinfo field.
	(bfd_section_from_shdr): Handle SHT_GNU_ver* section types.
	(elf_fake_sections): Handle .gnu.version* section names.
	(assign_section_numbers): Handle SHT_GNU_ver* section types.
	(_bfd_elf_slurp_version_tables): New function.
	* elflink.c (_bfd_elf_link_record_dynamic_symbol): Don't include
	version name in string entered in dynamic hash table.
	* elfcode.h: Include fnmatch.h.
	* elf32-i386.c (elf_i386_relocate_section): Handle a dynamic
	symbol which was forced to become local.
	* elf32-m68k.c (elf_m68k_relocate_section): Likewise.
	* elf32-ppc.c (ppc_elf_relocate_section): Likewise.
	* elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
	* elf64-alpha.c (alpha_elf_dynamic_symbol_p): Likewise.

Fri Feb 21 16:15:18 1997  Jeffrey A Law  (law@cygnus.com)

	* elf32-mn10200.c (mn10200_elf_final_link_relocate): Simplify
	somewhat.
	(mn10200_elf_relax_section): Correctly compute a symbol's value
	when the symbol is local, but not in the same section as we are
	relaxing.  Implement abs24 -> abs16, imm24 -> imm16 and d24 -> d16
	relaxing.

Fri Feb 21 13:55:14 1997  Doug Evans  <dje@seba.cygnus.com>

	* elf32-m32r.c: Rewrite to use ELF backend linker.
	Store lower 16 bits of addend in R_M32R_HI16_[SU]LO insns.
	Add small data area support (R_M32R_SDA16).
	* reloc.c: Document BFD_RELOC_M32R_SDA16.
	* bfd-in2.h,libbfd.h: Regenerated.

Thu Feb 20 23:50:31 1997  Jeffrey A Law  (law@cygnus.com)

	* elf32-mn10200.c (mn10200_elf_relax_section): New function.
	(mn10200_elf_relax_delete_bytes): Likewise.
	(mn10200_elf_symbol_address_p): Likewise.
	(mn10200_elf_get_relocated_section_contents): Likewise.
	(bfd_elf32_bfd_relax_section): Define.
	(bfd_elf32_bfd_get_relocated_section_contents): Likewise.

	* elf32-mn10200.c (mn10200_elf_final_link_relocate): New function.
	(mn10200_elf_relocate_section): Likewise.
	(elf_backend_relocate_section): Define.

Tue Feb 18 17:22:59 1997  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* Makefile.in, archures.c, config.bfd, configure.in, elf.c,
	reloc.c, targets.c: New target, elf-*-D30V.

	* bfd-in2.h, configure, libbfd.h: Rebuilt.

	* cpu-d30v.c, elf32-d30v.c: New files.

Tue Feb 18 15:31:48 1997  Fred Fish  <fnf@cygnus.com>

	* reloc.c (struct reloc_howto_struct): Fix typo in comment.
	* bfd-in2.h: Regenerated.
	* coff-tic80.c (RTYPE2HOWTO): Replace abort with real function.
	(rtype2howto): Add function.
	(tic80_howto_table): Add.

Tue Feb 18 11:41:00 1997  Dawn Perchik  <dawn@cygnus.com>

	* sysdep.h: Don't define errno in MSVC if error.h is included.

Tue Feb 18 10:04:13 1997  Jeffrey A Law  (law@cygnus.com)

	* elf32-v850.c (v850_elf_relocate_section): Make sure r_symndx
	is initialized before it is used.

Mon Feb 17 11:28:40 1997  Ian Lance Taylor  <ian@cygnus.com>

	* hp300hpux.c (convert_sym_type): Don't convert a secondary common
	symbol into a weak undefined symbol; leave it as a common symbol.

Fri Feb 14 19:08:03 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_link_add_object_symbols): Don't issue a warning
	about a symbol defined in a dynamic object if it has already been
	defined in a regular object.

Thu Feb 13 20:53:22 1997  Klaus Kaempf  (kkaempf@progis.de)

	* makefile.vms: Add gcc flags to allow compiling with current gcc
	snapshot
	(targmatch.h): New dependency.

	* reloc.c (BFD_RELOC_ALPHA_CODEADDR): New relocation for
	openVMS/Alpha.
	* evax.h (ALPHA_R_CODEADDR): New relocation.
	* evax-alpha.c (ALPHA_R_CODEADDR): 64 bit procedure relocation for
	openVMS/Alpha.
	* evax-etir.c (ALPHA_R_CODEADDR): Output object code for this
	relocation.
	* bfd-in2.h, libbfd.h: Rebuild.

	Restrict symbol length to 64 bytes, case preserving:
	* evax-emh.c (_bfd_evax_write_emh): Remove case hacking.
	* evax-misc.c (_bfd_evax_case_hack_symbol): Remove.
	(_bfd_evax_length_hash_symbol): Added.
	* evax-etir.c (_bfd_evax_write_etir): Call
	_bfd_evax_length_hash_symbol before output of symbol.
	* evax-egsd.c (_bfd_evax_write_egsd): Likewise.
	* evax.h (flag_hash_long_names, flag_show_after_trunc): Remove.

	* evax-emh.c: Output filename to object file without path.

	* evax-egsd.c: New sections for local and global commons.

	* evax-alpha.c, evax-emh.c, evax-egsd.c, evax-etir.c,
	evax-misc.c, evax.h: Remove 8 bit characters from copyright
	notices.  Replace AXP with Alpha.

Wed Feb 12 18:10:30 1997  Ian Lance Taylor  <ian@cygnus.com>

	* sunos.c (sunos_create_dynamic_sections): We need the dynamic
	sections if we are creating a shared library.

Tue Feb 11 15:45:43 1997  Doug Evans  <dje@canuck.cygnus.com>

	* configure.host (i386-windows): Don't set host64=true.

Tue Feb 11 15:27:32 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-mips.c (reloc_type): Add R_MIPS16_GPREL.
	(elf_mips16_gprel_howto): New static variable.
	(mips16_gprel_reloc): New static function.
	(bfd_elf32_bfd_reloc_type_lookup): Handle BFD_RELOC_MIPS16_GPREL.
	(mips_info_to_howto_rel): Handle R_MIPS16_GPREL.
	(mips_elf_relocate_section): Handle R_MIPS16_GPREL.
	* reloc.c (BFD_RELOC_MIPS16_GPREL): Define.
	* bfd-in2.h, libbfd.h: Rebuild.

Mon Feb 10 23:25:00 1997  Doug Evans  <dje@seba.cygnus.com>

	* elf32-m32r.c (elf_m32r_howto_table): Change partial_inplace to true
	for R_M32R_{16,32,24,HI16_ULO,HI16_SLO,LO16}.

Fri Feb  7 12:39:11 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_link_input_bfd): If we've discarded a section,
	the output section will be the absolute section; don't print an
	assertion message for that case when doing a relocateable link.

Thu Feb  6 16:55:43 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-mips.c (FN_STUB, CALL_STUB, CALL_FP_STUB): Define.
	(struct mips_elf_link_hash_entry): Add new fields fn_stub,
	need_fn_sub, call_stub, and call_fp_stub.
	(struct mips_elf_link_hash_table): Add field mips16_stubs_seen.
	(mips_elf_link_hash_newfunc): Initialize new fields.
	(mips_elf_link_hash_table_create): Likewise.
	(mips_elf_relocate_section): Redirect relocations to use mips16
	stubs when appropriate.
	(mips_elf_check_relocs): Attach stub sections to the appropriate
	symbol.  Set need_fn_stub when appropriate.
	(mips_elf_always_size_sections): New static function.
	(mips_elf_check_mips16_stubs): New static function.
	(elf_backend_always_size_sections): Define.
	* elf-bfd.h (struct elf_obj_tdata): Add local_stubs field.

	* elflink.h (elf_link_input_bfd): Discard local symbols that are
	attached to sections which are not being included in the link.

Wed Feb  5 13:20:17 1997  Ian Lance Taylor  <ian@cygnus.com>

	* cofflink.c (_bfd_coff_generic_relocate_section): Ignore the
	symbol value when computing the addend for a pc_relative
	pcrel_offset reloc.

Mon Feb  3 11:54:06 1997  Ian Lance Taylor  <ian@cygnus.com>

	* cofflink.c (_bfd_coff_generic_relocate_section): If doing a
	relocateable link, just skip pc_relative pcrel_offset relocs.
	* coff-arm.c (coff_arm_rtype_to_howto): Return a different howto
	structure for an ARM26 reloc which can be resolved.
	(coff_arm_adjust_symndx): Only convert ARM26 to ARM26D if the
	reloc can be resolved.

	* coff-h8300.c (h8300_reloc16_extra_cases): Correct off by one
	error in overflow check for R_RELBYTE.

Fri Jan 31 14:07:27 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ieee.c (ieee_slurp_section_data): Pick up the start address.
	From Mark Rasin <mark.rasin@telrad.co.il>.

	* aoutx.h (aout_link_write_symbols): Don't apply discard_l to
	debugging symbols.

Wed Jan 29 00:00:49 1997  Jeffrey A Law  (law@cygnus.com)

	* elf32-mn10200.c (reloc_type): Add 16bit pc-relative reloc.
	(elf_mn10200_howto_table): Likewise.
	(mn10200_reloc_map): Likewise.

Mon Jan 27 12:07:35 1997  Doug Evans  <dje@seba.cygnus.com>

	* reloc.c: Add relocs BFD_RELOC_M32R_{HI16_[US]LO,LO16}.
	* bfd-in2.h, libbfd.h: Regenerated.
	* elf32-m32r.c: Add support for them.

Mon Jan 27 12:25:02 1997  Ian Lance Taylor  <ian@cygnus.com>

	* aout-arm.c (MY_swap_std_reloc_in): Remove unused r_length.
	* elf32-ppc.c (ppc_elf_check_relocs): Remove unused plt.
	* elf32-v850.c (v850_elf_final_link_relocate): Remove used
	r_format and r_pcrel.  Always return a value.
	* riscix.c (MY_final_link_callback): Define to dummy value.

	* elf32-i386.c (elf_i386_size_dynamic_sections): When checking for
	relocations against the text segment, look up the output name of
	the reloc section.
	* 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-alpha.c (elf64_alpha_size_dynamic_sections): Likewise.

Wed Jan 22 15:40:28 1997  Fred Fish  <fnf@cygnus.com>

	* coff-tic80.c (tic80coff_vec): Use correct data put/get
	routines for little endian data.
	* coffcode.h (coff_write_object_contents): Set magic to
 	TIC80_ARCH_MAGIC for TIc80.

Tue Jan 21 12:32:43 1997  Fred Fish  <fnf@cygnus.com>

	* coff-tic80.c (tic80coff_vec): Change to little endian data
	as the default.

Thu Jan 16 17:45:57 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (NAME(bfd_elf,size_dynamic_sections)): Change type of
	auxiliary_filters parameter to be const char * const *.  Accept a
	NULL terminated array.
	* bfd-in.h (bfd_elf32_size_dynamic_sections): Update declaration.
	(bfd_elf32_size_dynamic_sections): Update declaration.
	* bfd-in2.h: Rebuild.

Wed Jan 15 11:21:32 1997  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Treat a
	NOTYPE symbol in a text section as a FUNC symbol.

	* coffcode.h (coff_compute_section_file_positions): Force
	relocbase to be aligned to COFF_DEFAULT_SECTION_ALIGNMENT_POWER.

Tue Jan 14 08:46:33 1997  Doug Evans  <dje@canuck.cygnus.com>

	* libaout.h (machine_type): Reserve several values for sparclet.

Mon Jan 13 22:39:08 1997  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config.bfd (tic80-*-*): Don't require 'coff'.

Mon Jan 13 19:36:25 1997  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elf32-v850.c (v850_elf_howto_table): Set the special_function
	table to v850_elf_reloc for all non-standard relocations.
	(v850_elf_check_relocs): Add check for h being non-null.
	(v850_elf_reloc): Add  R_V850_ZDA_OFFSET support.  Use switch
	statement instead of multiple ifs.
	(v850_elf_relocate_section): Fix up error message, don't just call
	abort.

Mon Jan  6 13:28:35 1997  Jeffrey A Law  (law@cygnus.com)

	* elf32-mn10200.c (elf_mn10200_howto): Don't ever set partial-inplace.
	Use bfd_elf_generic_reloc as special function for all relocs.
	(bfd_elf32_mn10200_reloc): Remove unnecessary function.

	* elf32-mn10200.c (elf_mn10200_howto): Set pcrel_offset for
	24bit pc-relative reloc.

Fri Jan  3 16:33:00 1997  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (coff-tic80.o): Add coffcode.h to dependency list.
	* coff-tic80.c (tic80coff_vec): Data byte order is big endian and
	header byte order is little endian.  Use correct bfd_get and
	bfd_put routines for little endian headers.
	* coffcode.h (coff_set_arch_mach_hook): Set arch to
	bfd_arch_tic80 for TIC80_ARCH_MAGIC number.

Fri Jan  3 16:54:08 1997  Jeffrey A Law  (law@cygnus.com)

	* reloc.c: Add BFD_RELOC_24.
	* elf32-mn10200.c (enum reloc_type): Add 24bit and pcrel relocs.
	(elf_mn10200_howto, mn10200_reloc_map): Corresponding changes.
	* bfd-in2.h, libbfd.h: Rebuilt.

Fri Jan  3 16:58:31 1997  Richard Henderson  <rth@tamu.edu>

	elf64-alpha multiple .got rewrite:

	* elf-bfd.h (struct elf_backend_data): Add always_size_sections entry.
	(bfd_elf*_mkobject): Don't define here ...
	* elfxx-target.h: ... but rather here.  Default always_size_sections
	hook to NULL.
	* elf.c (elf_mkobject): Rename to bfd_elf_mkobject, since that was
	what the #defines in elf-bfd.h transmuted it to anyway.

	* section.c: Add SEC_LINKER_CREATED flag.
	* bfd-in2.h: Rebuild.
	* elf32-i386.c (elf_i386_check_relocs): Add SEC_LINKER_CREATED to
	relocation section flags.
	(elf_i386_size_dynamic_sections): Use SEC_LINKER_CREATED instead of
	SEC_IN_MEMORY to recognize generated bits.
	* elf32-m68k.c (elf_m68k_check_relocs, elf_m68k_size_dynamic_sections):
	Likewise.
	* elf32-mips.c (mips_elf_final_link, mips_elf_create_dynamic_sections,
	mips_elf_create_compact_rel_section, mips_elf_create_got_section,
	mips_elf_check_relocs, mips_elf_size_dynamic_sections): Likewise.
	* elf32-ppc.c (ppc_elf_create_linker_section,
	ppc_elf_size_dynamic_sections): Likewise.
	* elf32-sparc.c (elf32_sparc_check_relocs,
	elf32_sparc_size_dynamic_sections): Likewise.
	* elflink.c (_bfd_elf_create_got_section): Add SEC_LINKER_CREATED to
	section flags.
	(_bfd_elf_create_dynamic_sections): Likewise.
	(_bfd_elf_make_linker_section_rela): Likewise.
	* elflink.h (elf_link_create_dynamic_sections): Likewise.
	(bfd_elf,size_dynamic_sections): Call the always_size_sections hook.
	(elf_bfd_final_link): Use SEC_LINKER_CREATED instead of SEC_IN_MEMORY
	to identify generated bits.
	(elf_link_input_bfd): Likewise.

	* elf64-alpha.c: Rewrite everything touching relocations.

Fri Jan  3 11:42:53 1997  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elf32-v850.c (all functions and static variables): Go through
	and regularize names to be of the form v850_elf_<xxx>.
	(toplevel): Include <elf/v850.h>.
	(enum reloc_type): Move to include/elf/v850.h.
	(v850_elf_check_relocs): For common variables, if the variable is
	referenced by a R_V850_{SDA,ZDA,TDA} relocation, put the variable
	into the appropriate section.
	(elf_backend_check_relocs): Define.

Tue Dec 31 15:15:28 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elf32-v850.c (elf_v850_howto_table): Fix some spacing.

Tue Dec 31 14:44:50 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config.bfd (mips*el-*-linux*): New target.
	(mips*-*-linux*): New target.

	* elf32-mips.c (_bfd_mips_elf_merge_private_bfd_data): Clean up.
	Return a useful value.

	* Makefile.in (ALL_CFLAGS): Add -D_GNU_SOURCE.

	* configure.in: Check ac_cv_func_mmap_fixed_mapped, not
	ac_cv_func_mmap.
	* configure: Rebuild.
	* configure.host: Use ac_cv_func_mmap_fixed_mapped instead of
	ac_cv_func_mmap in bfd/configure.host.

	* elflink.h (NAME(bfd_elf,size_dynamic_sections)): Add
	filter_shlib and auxiliary_filter_shlib parameters.
	* elf.c (_bfd_elf_print_private_bfd_data): Handle DT_AUXILIARY and
	DT_FILTER.
	* bfd-in.h (bfd_elf32_size_dynamic_sections): Update declaration.
	(bfd_elf64_size_dynamic_sections): Likewise.
	* bfd-in2.h: Rebuild.

Mon Dec 30 18:48:52 1996  Ian Lance Taylor  <ian@cygnus.com>

	* xcofflink.c (xcoff_build_ldsyms): When exporting all defined
	symbols, don't export a symbol which is defined by an object in an
	archive which contains shared objects.

Mon Dec 30 16:12:58 1996  Fred Fish  <fnf@cygnus.com>

	* archures.c (enum bfd_architecture): Add bfd_arch_tic80
	for TI TMS320c80 (MVP).
	(bfd_archures_list): Add bfd_tic80_arch.
	* bfd-in2.h: Regenerate by running "make headers".

Sun Dec 29 16:18:52 1996  Fred Fish  <fnf@cygnus.com>

	* cpu-tic80.c (bfd_tic80_arch): Add struct.
	* configure.in (case $vec): Correct typo, "tb" not "tp".
	Also add cofflink.o for tic80coff_vec.
	* configure: Regenerate with autoconf.

Mon Dec 30 11:54:56 1996  Ian Lance Taylor  <ian@cygnus.com>

	* libbfd.c: Patch up the mmap code so that it is only built if BFD
	is configured with --with-mmap.

Sun Dec 29 10:48:57 1996  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (BFD32_BACKENDS): Add coff-tic80.o
	(ALL_MACHINES): Add cpu-tic80.o
	(cpu-tic80.o, coff-tic80.o): Add dependencies.
	* coff-tic80.c: Add skeleton, cloned from another coff config.
	* coffcode.h (coff_write_object_contents): Set magic to TIC80MAGIC
 	for TIc80.

Fri Dec 27 20:56:41 1996  Fred Fish  <fnf@cygnus.com>

	* TODO: Correct a misspelling.
	* coff-tic80.c: New file for TI TMS320C80 (MVP).
	* cpu-tic80.c: New file for TI TMS320C80 (MVP).
	* configure.in (case $vec): Add tic80coff_vec entry.
	* configure: Regenerate with autoconf.
	* archures.c (bfd_tic80_arch): Declare.
	* bfd-in2.h (enum bfd_architecture): Add bfd_arch_tic80.
	* config.bfd (case ${targ}): Add tic80*-*-coff* target.
	* targets.c (tic80coff_vec): Add decl as extern bfd_target.
	(bfd_target_vector): Add tic80coff_vec entry.

Fri Dec 27 11:48:12 1996  H.J. Lu  <hjl@lucon.org>

	* elflink.h (elf_buckets): Add some more values for larger
	binaries.

Thu Dec 26 18:36:54 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (install): Move subdir_do out of conditional. From
	Fred Fish <fnf@cygnus.com>.

Wed Dec 18 10:04:30 1996  Jeffrey A Law  (law@cygnus.com)

	* elf32-mn10200.c (enum reloc_type): Enable basic 8, 16, and
	32 bit relocs.
	(elf_mn10200_howto_table): Likewise.
	(mn10200_reloc_map): Likewise.

Tue Dec 17 11:09:36 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-mips.c (mips_elf_add_symbol_hook): Add 1 to the value of a
	mips16 symbol during the link.
	(mips_elf_finish_dynamic_symbol): Subtract 1 from the value of a
	mips16 symbol.
	(mips_elf_link_output_symbol_hook): New static function.
	(elf_backend_link_output_symbol_hook): Define.

	* elf.c (bfd_elf_print_symbol): Print the st_other field if it is
	not zero.

Mon Dec 16 14:38:39 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf.c (bfd_section_from_shdr): Don't check for reloc sections
	against SEC_DEBUGGING sections here (revert patch of December 5).
	* elfcode.h (elf_object_p): Check for them here, instead.

Sun Dec 15 14:46:06 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elfcode.h (elf_slurp_reloc_table): Add dynamic parameter.
	* elf.c (_bfd_elf_canonicalize_reloc): Pass new argument to
	slurp_reloc_table.
	(_bfd_elf_get_dynamic_reloc_upper_bound): New function.
	(_bfd_elf_canonicalize_dynamic_reloc): New function.
	* elf-bfd.h (struct elf_size_info): Update declaration of
	slurp_reloc_table.
	(_bfd_elf_get_dynamic_reloc_upper_bound): Declare.
	(_bfd_elf_canonicalize_dynamic_reloc): Declare.
	* elfxx-target.h: Use new dynamic reloc routines by default.
	* elf64-mips.c (mips_elf64_slurp_reloc_table): Add dynamic
	parameter.

Fri Dec 13 13:18:49 1996  Dan Wilder  <dan@gasboy.com>

	* coffcode.h (coff_set_flags): Use MC68KBCSMAGIC for bfd_arch_m68k
	if NAMES_HAVE_UNDERSCORE is defined.

Fri Dec 13 11:13:23 1996  Doug Evans  <dje@canuck.cygnus.com>

	* libaout.h (enum machine_type): Change M_SPARCLET from 142 to 131.

Thu Dec 12 15:07:20 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elf32-ppc.c (ppc_elf_check_relocs): Move R_PPC_PLTREL24 into the
	supported relocs.

Thu Dec 12 14:55:41 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_link_add_object_symbols): Only add a weak
	symbol if the real definition is in the dynamic symbol table.
	After finding the real definition, then, if it is dynamic, add the
	weak symbol to the dynamic symbol table.

	* coff-aux.c (coff_m68k_aux_link_add_one_symbol): Make static.

	* ppcboot.c (ppcboot_set_arch_mach): Don't define; it's a
	function.
	(ppcboot_bfd_print_private_bfd_data): Don't take the address of an
	array.

Tue Dec 10 23:23:52 1996  Jeffrey A Law  (law@cygnus.com)

	* elf32-mn10300.c (reloc_type): Remove big endian mn10300 reloc
	variants.
	(elf32_mn10300_howto_table, mn10300_reloc_map): Likewise.
	(bfd_elf32_mn10300_reloc): Write data in little endian format.
	* reloc.c: Remove mn10300 big endian relocs.
	* bfd-in2.h, libbfd.h: Rebuilt.

	* elf32-mn10200.c: Update from elf32-mn10300.c.

Fri Dec  6 15:18:05 1996  Jeffrey A Law  (law@cygnus.com)

	* elf32-mn10300.c (elf_symbol_leading_char): Define.

	* elf32-mn10300.c: Add some comments.

Fri Dec  6 17:16:43 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ihex.c (ihex_scan): Always initialize buf before jumping to
	error_return.
	(ihex_read_section): Likewise.

Thu Dec  5 22:29:18 1996  Jeffrey A Law  (law@cygnus.com)

	* elf32-mn10300.c (elf_mn10300_howto_table): Don't set partial-
	inplace for most relocs.

Thu Dec  5 13:24:46 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_link_add_object_symbols): Calling check_relocs
	even if SEC_ALLOC is not set.
	* elf32-i386.c (elf_i386_check_relocs): Don't check SEC_ALLOC
	when deciding whether to copy a reloc into a shared object.
	(elf_i386_relocate_section): Likewise.
	* elf32-sparc.c (elf32_sparc_check_relocs): Likewise.
	(elf32_sparc_relocate_section): Likewise.
	* elf32-i386.c (elf_i386_check_relocs): Don't set SEC_ALLOC in a
	reloc section if it is not set in the source section.
	* elf32-sparc.c (elf32_sparc_check_relocs): Likewise.
	* elf.c (bfd_section_from_shdr): Mark a reloc section associated
	with a SEC_DEBUGGING section as SEC_DEBUGGING.

Wed Dec  4 14:18:13 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): #if 0 code that
	expects a .got.plt until we actually create it.

Mon Dec  2 12:13:51 1996  Ian Lance Taylor  <ian@cygnus.com>

	* cofflink.c (_bfd_coff_generic_relocate_section): Print an error
	message for bfd_reloc_outofrange, rather than aborting.  From
	Philippe De Muyter <phdm@info.ucl.ac.be>.

	* cofflink.c (_bfd_coff_final_link): If there aren't any relocs in
	a relocateable link, don't try to process them.  From Heinz Wrobel
	<wrobel@lpr.e-technik.tu-muenchen.de>.

Mon Dec  2 00:39:24 1996  Jeffrey A Law  (law@cygnus.com)

	* elf32-mn10300.c (mn10300_info_howto): Renamed from
	mn10300_info_howto_rel.  Tweak reloc argument to be an
	Elf32_Internal_Rela.
	(USE_RELA): Define instead of USE_REL.
	(elf_info_to_howto, elf_info_howto_rel): Corresponding changes.

Sun Dec  1 00:18:59 1996  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* configure.in, configure:  Handle mips*-sgi-irix6*.
	* irix-core.c (irix_core_core_file_p):  Accept CORE_MAGICN32
	core files.

Wed Nov 27 12:10:25 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-i386.c (elf_i386_relocate_section): Warn about a
	relocation against a symbol defined in a section with no output
	section.

Tue Nov 26 11:07:31 1996  Ian Lance Taylor  <ian@cygnus.com>

	* aclocal.m4 (BFD_CC_FOR_BUILD): Don't require AC_C_CROSS.
	* configure, config.in: Rebuild with autoconf 2.12.

	* elf-bfd.h (struct elf_link_hash_entry): Add other field.
	* elf.c (_bfd_elf_link_hash_newfunc): Initialize other field.
	(swap_out_syms): Set st_other from existing st_other field.
	* elflink.h (elf_link_add_object_symbols): Store st_other in hash
	table other field.
	(elf_link_output_extsym): Set the other field from the global hash
	table entry.
	* elf32-mips.c (enum reloc_type): Add R_MIPS16_26.
	(elf_mips16_jump_howto): New static variable.
	(mips16_jump_reloc): New static function.
	(bfd_elf32_bfd_reloc_type_lookup): Handle BFD_RELOC_MIPS16_JMP.
	(mips_info_to_howto_rel): Handle R_MIPS16_26.
	(mips_elf_relocate_section): Handle R_MIPS16_26.  Handle R_MIPS_26
	to a mips16 symbol.
	* reloc.c (BFD_RELOC_MIPS16_JMP): Add to list of relocs.
	* bfd-in2.h, libbfd.h: Rebuild.
	* cpu-mips.c (arch_info_struct): Add mips:16 entry.

Mon Nov 25 11:23:32 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.host: Use long long for mips-sgi-irix6*.

	* coffswap.h (coff_swap_scnhdr_out): Make line number overflow
	only a warning.  From Philippe De Muyter <phdemuyt@ulb.ac.be>.

Mon Nov 25 08:52:29 1996  Jeffrey A Law  (law@cygnus.com)

	* elf32-mn10300.c (bfd_elf32_mn10300_reloc): New function.
	(enum reloc_type): Add more reloc types.
	(elf32_mn10300_howto_table): Update for new reloc types.
	(elf32_mn10300_reloc_map): Update for new reloc types.
	* reloc.c: Add some new relocs for the mn10300 series.
	* bfd-in2.h, libbfd.h: Rebuilt.

Sat Nov 23 13:26:18 1996  Jeffrey A Law  (law@cygnus.com)

	* som.c (setup_sections): Don't lose for a space which has
	no data, but some symbols.

Fri Nov 22 11:32:13 1996  Ian Lance Taylor  <ian@cygnus.com>

	* sunos.c (struct sunos_link_hash_table): Add got_needed field.
	(sunos_link_hash_table_create): Initialize got_needed.
	(sunos_create_dynamic_sections): Only set .got section size if it
	is not already set.  Set got_needed.
	(bfd_sunos_size_dynamic_sections): Check got_needed.  Only set
	sdynptr, and only handle dynamic sections, if dynamic sections are
	needed.
	(sunos_scan_std_relocs): Pass false to create_dynamic_sections.
	Initialize .got section.
	(sunos_scan_ext_relocs): Likewise.
	(sunos_write_dynamic_symbol): Set up PLT entry even if this is not
	a dynamic symbol.
	(sunos_finish_dynamic_link): Check got_needed.  Only set up
	dynamic linking information if needed.

Thu Nov 21 10:31:31 1996  Rob Savoye  (rob@cygnus.com)

	* config.bfd: Added VersaDOS format to the Ericsson configuration.

Wed Nov 20 16:31:31 1996  Jeffrey A Law  (law@cygnus.com)

	* elf32-mn10300.c: Rough cut at relocs for the mn10300.

Wed Nov 13 08:12:38 1996  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (elf32-d10v.o): Don't depend on elf/d10v.h
	anymore.

Tue Nov 12 13:30:00 1996  Dawn Perchik  <dawn@cygnus.com>

	* filemode.c: Include sysdep.h.
	* ihex.c: Add casts to eliminate compiler warnings.
	* sunos.c: Add casts to eliminate compiler warnings.

Mon Nov 11 10:37:02 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Create .got.plt
	section.
	(ppc_elf_check_relocs): Add support for R_PPC_LOCAL24PC.  Make
	appropriate relocations in the .so file if shared.
	(ppc_elf_relocate_section): Ditto.

Tue Oct 29 15:03:02 1996  Doug Evans  <dje@canuck.cygnus.com>

	* elf32-m32r.c (elf_m32r_howto_table, R_M32R_24): Use
	complain_overflow_unsigned.

Tue Oct 29 12:53:46 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* elf32-d10v.c (elf_d10v_howto_table): Don't complain on
	overflows for R_D10V_16 and R_D10V_18.

Tue Oct 29 13:23:53 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ieee.c (ieee_write_section_part): Use LMA rather than VMA.
	(do_with_relocs): Likewise.
	(do_as_repeat): Likewise.
	(copy_expression): Likewise.

Fri Oct 25 16:56:40 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ieee.c (ieee_write_external_part): Correctly record whether
	there is an external part.

Thu Oct 24 14:32:52 1996  Jeffrey A Law  (law@cygnus.com)

	* elf32-v850.c (elf32_v850_bfd_final_link_relocate): Correctly
	handle tda offsets for sld.w and sst.w instructions.
	Fix alignment check in sld.w and sst.w tda reloc handling.

Thu Oct 24 09:08:47 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* aclocal.m4, configure:  Set USE_BINARY_FOPEN for *-*-windows.

Wed Oct 23 00:53:16 1996  Jeffrey A Law  (law@cygnus.com)

	* elf32-v850.c: Add comments about assumptions about
	char, short & long sizes.
	(elf32_v850_bfd_final_link_relocate): Fix sign extension
	problems for several relocs.

	* elf32-v850.c (elf32_v850_howto_table): Fix typo in
	R_V850_SDA_OFFSET entry.

Wed Oct 23 00:20:34 1996  Ian Lance Taylor  <ian@cygnus.com>

	* xcofflink.c (bfd_xcoff_import_symbol): Don't allocate ldsym.
	Store import file index in ldindx.
	(xcoff_build_ldsyms): Assume that ldsym was not previously
	allocated.  For an imported symbol, copy ldindx into l_ifile.

Tue Oct 22 19:20:38 1996  Jeffrey A Law  (law@cygnus.com)

	* elf32-v850.c (elf_v850_howto_table): Fix ordering of
	R_V850_ZDA_OFFSET and R_V850_TDA_OFFSET.  Fix various
	fields in R_V850_TDA_OFFSET.
	(elf32_v850_bfd_final_link_relocate): Tweak pc-relative
	relocs to work more like other relocs.  Handle R_V850_TDA_OFFSET
	relocations.

	* elf32-v850.c: Include bfdlink.h.
	(bfd_elf32_v850_reloc): Return an error if we get a reloc
	we can't handle.
	(elf32_v850_bfd_final_link_relocate): New function.
	(v850_elf_relocation_section): Likewise.
	(elf_backend_relocate_section): Define.

Tue Oct 22 17:22:43 1996  Ian Lance Taylor  <ian@cygnus.com>

	* binary.c (binary_set_section_contents): Ignore sections which
	don't have SEC_LOAD and SEC_ALLOC set.

Mon Oct 21 12:13:05 1996  Jeffrey A Law  (law@cygnus.com)

	* linker.c (_bfd_generic_final_link): Avoid losing static
	symbols in the .bss section.

Mon Oct 21 10:54:58 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-mips.c (elf_mips_howto_table): Describe R_MIPS_64.
	(mips32_64bit_reloc): New static function.
	(mips_reloc_map): Add entry for BFD_RELOC_64.
	(mips_elf_relocate_section): Handle R_MIPS_64.

	* linker.c (default_indirect_link_order): Print an error message
	when attempting to do a relocateable link with different object
	file formats, rather than calling abort.

Thu Oct 17 10:43:29 1996  Doug Evans  <dje@canuck.cygnus.com>

	* reloc.c (m32r relocs): Rename them.
	* bfd-in2.h, libbfd.h: Regenerated.
	* elf32-m32r.c: Update.
	(m32r_elf_10_pcrel_reloc): New function.
	(elf_m32r_howto_table, R_M32R_10_PCREL entry): Use it.
	(elf_m32r_howto_table, R_M32R_24 entry): Fix {src,dst}_masks.

Wed Oct 16 11:24:35 1996  Jeffrey A Law  (law@cygnus.com)

	* linker.c (_bfd_generic_final_link): Set "linker_mark" for
	all sections that will be included in the output file.
	(_bfd_generic_link_output_symbols): Discard symbols in sections
	which are being discarded.
	* elf32-v850.c (enum reloc_type): Add R_V850_SDA_OFFSET,
	R_V850_TDA_OFFSET and R_V850_ZDA_OFFSET.
	(elf_v850_howto_table): Corresponding changes.
	(elf_v850_reloc_map): Corresponding changes.
	* reloc.c: Add additional V850 relocations.
	* bfd-in2.h, libbfd.h: Rebuilt.

	* elf32-v850.c (bfd_elf32_v850_reloc): Mask out bits we
	no longer want in pc-relative relocs.

Tue Oct 15 22:17:37 1996  Jeffrey A Law  (law@cygnus.com)

	* elf32-v850.c (bfd_elf32_v850_reloc): Don't silently
	accept a reloc against an undefined sybmol!

Tue Oct 15 16:17:28 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* elf32-v850.c:  Define elf_symbol_leading_char to be '_'.

Tue Oct 15 12:40:41 1996  Ian Lance Taylor  <ian@cygnus.com>

	* VERSION: Bump for new relocation.

	* hosts/i386bsd.h: If NBPG is not defined, define it as
	PAGE_SIZE, for recent versions of FreeBSD.

Mon Oct 14 12:37:26 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.host: Use `long long' as the 64 bit type on a Solaris
	host, since both gcc and the SunPRO compilers support it.

Mon Oct 14 11:17:24 1996  Richard Henderson  <rth@tamu.edu>

	* reloc.c: Create a new BFD_RELOC_ALPHA_ELF_LITERAL.  It was a
	mistake to have reused the ECOFF LITERAL for ELF since they have
	different semantics.
	* elf64-alpha.c (elf_reloc_map): Map from ELF_LITERAL.
	* bfd-in2.h, libbfd.h: Rebuild.

	* elf64-alpha.c (elf64_alpha_size_dynamic_sections): Trap .got
	section overflow.

	* elf64-alpha.c (elf64_alpha_relocate_section): Do not emit a
	dynamic relocation for an undefweak symbol when we are building
	a static executable.

Thu Oct 10 11:15:06 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-make.sed (config.bfd, targmatch.sed): Edit references to
	point explicitly to srcdir.
	(targmatch.h): Edit references to point explicitly to objdir.

Thu Oct 10 14:14:23 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config.bfd: When setting targ_cpu, don't get confused by
	linux-gnu.

Tue Oct  8 08:51:19 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* configure.host:  Add support for windows host (a build done
	under the Microsoft build environment).

Tue Oct  8 11:40:16 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_link_add_object_symbols): If a symbol is a weak
	definition in a dynamic object, add it to the dynamic symbol table
	if any dynamic object mentions it.  Reverts part of last patch.

	* sunos.c (struct sunos_link_hash_table): Add got_base field.
	(sunos_link_hash_table_create): Initialize got_base.
	(bfd_sunos_size_dynamic_sections): If the .got section is more
	than 0x1000 bytes, set __GLOBAL_OFFSET_TABLE_ and got_base to
	0x1000.
	(sunos_check_dynamic_reloc): Subtract got_base from a base
	relative relocation.

	* elf32-mips.c (elf_mips_isa): New static function.
	(_bfd_mips_elf_merge_private_bfd_data): Don't warn about linking
	-mips1 and -mips2 code together, or -mips3 and -mips4 code.

Mon Oct  7 11:44:17 1996  Ian Lance Taylor  <ian@cygnus.com>

	* archive.c (do_slurp_coff_armap): Only treat archive as little
	endian for i960 COFF.

Fri Oct  4 13:49:01 1996  Ian Lance Taylor  <ian@cygnus.com>

	* coffcode.h (coff_compute_section_file_positions): Adjust sofar
 	by the change in size of the section when EXEC_P is not set.

	* coff-m68k.c (coff_rtype_to_howto): Define if not defined.
	(m68kcoff_rtype_to_howto): New static function.
	* cf-m68klynx.c (coff_m68k_lynx_rtype_to_howto): Add the section
	VMA to the addend for a PC relative reloc.

	* dep-in.sed: Rework backslash loop a bit to avoid bug in sed on
	HP/UX 10.20.
	* Makefile.in: Rebuild dependencies.

	* dep-in.sed: Remove ../bfd/sysdep.h, since it will appear when
	som.h is included.

Fri Oct  4 11:41:39 1996  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in: Remove explicit dependencies for mn10200 and
	mn10300 files.
	(ALL_MACHINE_CFILES): Add cpu-mn10200.c and cpu-mn10300.c.
	(BFD32_BACKENDS_CFILES): Add elf32-mn10200.c and elf32-mn10300.c
	(dependencies): Rebuilt.

Thu Oct  3 16:57:51 1996  Ian Lance Taylor  <ian@cygnus.com>

	* cofflink.c (coff_link_add_symbols): Set obj_coff_keep_syms
	during this function.

	* elflink.c (_bfd_elf_create_linker_section): Only use an existing
	section if the flags are compatible.

	* configure.in: Add havevecs, and put it in tdefaults.
	* mpw-config.in: Likewise.
	* configure: Rebuild.
	* targmatch.sed: New file; a sed script to build targmatch.h from
	config.bfd.
	* config.bfd: Add #if, #endif, and comments for targmatch.h.
	* targets.c: Include "fnmatch.h".
	(struct targmatch): Define.
	(bfd_target_match): Define by including targmatch.h.
	(bfd_find_target): If the target is not found by name, search for
	it as a configuration triplet.
	* Makefile.in: Rebuild dependencies.
 	(BFD32_BACKENDS): Add aout-arm.o, aout-sparcle.o, hp300bsd.o,
	i386dynix.o, m68k4knetbsd.o, and riscix.o.
	(BFD32_BACKENDS_CFILES): Add aout-arm.c, aout-sparcle.c,
	hp300bsd.c, i386dynix.c, m68k4knetbsd.c, and riscix.c.
	(HFILES): Add targmatch.h.  Also, alphabetize and reindent.
	(CFILES): Remove i386dynix.c and hp300bsd.c.
	(targmatch.h): New target.
	(do_clean): Remove targmatch.h.

	* configure.in: Add BFD_NEED_DECLARATION(getenv).
	* acconfig.h: Add NEED_DECLARATION_GETENV.
	* configure, config.in: Rebuild.
	* sysdep.h: If NEED_DECLARATION_GETENV, declare getenv.
	* aout-adobe.c (aout_adobe_object_p): Don't declare getenv.

Thu Oct  3 09:29:09 1996  Jeffrey A Law  (law@cygnus.com)

	* cpu-mn10x00.c, elf32-mn10x00: Removed.
	* cpu-mn10200.c, cpu-mn10300.c: New files.
	* elf32-mn10200.c, elf32-mn10300.c: New files.
	* Makefile.in: Break mn10x00 support into two separate
	configurations, mn10200 and mn10300.
	* archures.c, config.bfd, configure.in, elf.c, targets.c: Likewise.
	* bfd-in2.h, configure: Rebuilt.

Thu Oct  3 15:38:19 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (do_clean): Move config.log to do_distclean.

Wed Oct  2 21:40:55 1996  Jeffrey A Law  (law@cygnus.com)

	* cpu-mn10x00.c, elf32-mn10x00.c: New files.
	* Makefile.in (ALL_MACHINES): Add cpu-mn10x00.o.
	(BFD32_BACKENDS): Similarly for elf32-mn10x00.o.
	(elf32-mn10x00.o): Add dependencies.
	* archures.c (enum bfd_architecture): Add bfd_arch_mn10x00.
	(bfd_mn10x00_arch): Declare.
	(bfd_archures_list): Add bfd_mn10x00_arch.
	* config.bfd: Add mn10x00-*-*.
	* configure.in: Add bfd_elf32_mn10x00_vec.
	* elf.c (prep_headers): Handle bfd_arch_mn10x00.
	* targets.c (bfd_elf32_mn10x00_vec): Declare.
	(bfd_target_vector): Add bfd_elf32_mn10x00_vec.
	* bfd-in2.h, configure: Rebuilt.

Wed Oct  2 15:46:45 1996  Klaus Kaempf  <kkaempf@progis.de>

	openVMS/Alpha: Provide filename and case_hack flags via
	symbol table from gas.
	Add case_hack code for symbol output from vax/vms.
	* evax-alpha.c (evax_initialize): Remove filename handling,
	filename is provided via symbol table.
	(evax_get_symtab): Use local symbol count when setting up table.
	* evax-egsd.c (_bfd_evax_slurp_egsd): Print correct name when
	debugging.
	(_bfd_evax_write_egsd): Skip file name symbol.
	* evax-emh.c (get_vms_time_string): Local function now.
	(_bfd_evax_write_emh): Extract source filename and case_hack flags
	from symbol table.
	* evax_write_etir (_bfd_evax_write_etir): Pass all symbol names
	through _bfd_evax_case_hack_symbol.
	* evax-misc.c (hash_string, _bfd_evax_case_hack_symbol): New
	functions.
	(_bfd_evax_basename): Removed.
	(_bfd_get_vms_time_string): Moved to evax-emh.c.
	* evax.h (evax_private_data_struct): Remove filename.
	(flag_hash_long_names, flag_show_after_trunc,
	flag_no_hash_mixed_case, vms_name_mapping): New flags for
	vms_case_hack.

Wed Oct  2 12:02:02 1996  Ian Lance Taylor  <ian@cygnus.com>

	* freebsd.h (N_GET_MAGIC_NET): Don't use ntohl.
	(N_GETMID_NET, N_GETFLAG_NET): Likewise.
	(NO_SWAP_MAGIC): Don't define.
	(SWAP_MAGIC): Define.

	* cofflink.c (_bfd_coff_link_input_bfd): Don't crash if there is
	no hash table entry for a global symbol.

Tue Oct  1 16:14:22 1996  Joel Sherrill  <joel@oarcorp.com>

	* config.bfd (mips*-*-rtems*): New target, like mips*-*-elf*.

Tue Oct  1 12:31:39 1996  Ian Lance Taylor  <ian@cygnus.com>

	* cofflink.c (coff_link_add_symbols): Don't override a meaningful
	symbol type with T_NULL.  Warn if symbol type changes.  Based on
	patch from Philippe De Muyter <phdm@info.ucl.ac.be>.

	* elflink.h (elf_link_add_object_symbols): Only put a symbol from
	a dynamic object in the dynamic symbol table if it is referenced
	or defined by a regular object.

Fri Sep 27 18:41:07 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* elf32-v850.c (bfd_elf32_v850_is_local_label):  New function to
	remove dwarf local labels.  Shrinks binaries by a factor of 3!

Mon Sep 23 13:33:00 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-ppc.c (ppc_elf_add_symbol_hook): Create the .sbss section
	by hand, rather than by calling bfd_make_section.

Mon Sep 23 09:23:41 1996  Doug Evans  <dje@seba.cygnus.com>

	* reloc.c: Rename m32r relocs.
	* bfd-in2.h, libbfd.h: Rebuilt.
	* elf32-m32r.c: Update.

Fri Sep 20 11:43:43 1996  Ian Lance Taylor  <ian@cygnus.com>

	* aoutx.h (aout_link_input_section_ext): When doing a relocateable
	link, adjust the symbol index of a base relative reloc.  Don't
	change the addend of a PC relative reloc if pcrel_offset is set.
	* sunos.c (bfd_sunos_size_dynamic_sections): Don't do anything for
	a relocateable link.

	* reloc.c (bfd_perform_relocation): Apply the relocation even if
	it is zero, in case src_mask matters.
	(bfd_install_relocation): Likewise.

Thu Sep 19 11:03:06 1996  Ian Lance Taylor  <ian@cygnus.com>

	* xcofflink.c (xcoff_link_add_symbols): Always initialize
	keep_syms.
 	(_bfd_xcoff_bfd_final_link): Don't set target_index
	to an uninitialized value.

Tue Sep 17 14:18:31 1996  Ian Lance Taylor  <ian@cygnus.com>

	* coffcode.h (coff_slurp_line_table): Warn about illegal symbol
	indices, rather than crashing.
	(coff_slurp_reloc_table): Likewise.  Check whether the howto field
	is NULL.
	* coff-sh.c (sh_relocate_section): Check for an illegal symbol
	index.

Mon Sep 16 12:39:36 1996  Ian Lance Taylor  <ian@cygnus.com>

	* coff-arm.c (aoutarm_std_reloc_howto): Change dst_mask for ARM26D
 	reloc to 0.
	(coff_arm_adjust_symndx): New static function.
	(coff_adjust_symndx): Define.

	* srec.c (srec_scan): Accept multiple symbols on a single line.
	From Pascal Martin <pmartin@alsys.com>.

	* README: New file.

Fri Sep 13 14:32:42 1996  Doug Evans  <dje@canuck.cygnus.com>

	* aoutf1.h (MY_bfd_merge_private_bfd_data): Define.
	(sunos_merge_private_bfd_data): New function.

Fri Sep 13 15:50:57 1996  Ian Lance Taylor  <ian@cygnus.com>

	* bfd.c (bfd_copy_private_bfd_data): Switch on output BFD rather
	than input BFD.
	(bfd_merge_private_bfd_data): Likewise.
	* section.c (bfd_copy_private_section_data): Likewise.
	* syms.c (bfd_copy_private_symbol_data): Likewise.
	* bfd-in2.h: Rebuild.
	* aout-target.h (MY_bfd_copy_private_section_data): Check that
	both BFD's are the right flavour.
	* ecoff.c (_bfd_ecoff_bfd_copy_private_bfd_data): Likewise.
	* elf.c (_bfd_elf_copy_private_symbol_data): Likewise.
	* elf32-mips.c (_bfd_mips_elf_copy_private_bfd_data): Likewise.
	(_bfd_mips_elf_merge_private_bfd_data): Likewise.
	* elf32-ppc.c (ppc_elf_copy_private_bfd_data): Likewise.
	(ppc_elf_merge_private_bfd_data): Likewise.
	* elf32-sparc.c (elf32_sparc_merge_private_bfd_data): Likewise.
	* peicode.h (pe_bfd_copy_private_section_data): Likewise.

	* elf32-hppa.c (elf_hppa_howto_table): Fill in some fields for
	R_PARISC_DIR32, so that _bfd_stab_section_find_nearest_line passes
	its sanity check.

Thu Sep 12 11:45:57 1996  Doug Evans  <dje@seba.cygnus.com>

	* reloc.c: Add m32r relocs.
	* bfd-in2.h, libbfd.h: Rebuilt.
	* cpu-m32r.c,elf32-m32r.c: New files.

Thu Sep 12 11:10:05 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ieee.c (ieee_vec): Set symbol_leading_char field to '_'.

Wed Sep 11 11:57:56 1996  Ian Lance Taylor  <ian@cygnus.com>

	* tekhex.c (first_phase): Change type parameter from char to int.
	(out): Likewise.
	(pass_over): Change func to expect int, not char.

	* elf.c (assign_file_positions_for_segments): Test SEC_ALLOC
	rather than SEC_LOAD when aligning the file offset for the first
	section in a segment.

Tue Sep 10 16:18:30 1996  Fred Fish  <fnf@cygnus.com>

	* syms.c (coff_section_type): Make arg const.
	* irix-core.c (irix_core_core_file_p): Remove extraneous extra arg
	to make_bfd_asection().
	* elf-bfd.h (bfd_section_from_phdr): Add prototype.
	* elfcode.h (bfd_section_from_phdr): Remove prototype.
	(_bfd_elf_stringtab_init): Remove prototype.

	* netbsd-core.c (swap_abort): Add prototype.
	* aix386-core.c (swap_abort): Ditto & make static
	* hpux-core.c (swap_abort): Ditto & make static.
	* irix-core.c (swap_abort): Ditto & make static.
	* ptrace-core.c (swap_abort): Ditto & make static.
	* trad-core.c (swap_abort): Ditto & make static.
	* coffswap.h (coff_swap_reloc_in): Ditto.
	(coff_swap_reloc_out): Ditto.
	(coff_swap_filehdr_in): Ditto.
	(coff_swap_filehdr_out): Ditto.
	(coff_swap_sym_in): Ditto.
	(coff_swap_sym_out): Ditto.
	(coff_swap_aux_in): Ditto.
	(coff_swap_aux_out): Ditto.
	(coff_swap_lineno_in): Ditto.
	(coff_swap_lineno_out): Ditto.
	(coff_swap_aouthdr_in): Ditto.
	(coff_swap_aouthdr_out): Ditto.
	(coff_swap_scnhdr_in): Ditto.
	(coff_swap_scnhdr_out): Ditto.
	* ihex.c (ihex_sizeof_headers): Ditto.
	* tekhex.c (getsym): Ditto.
	(find_chunk): Ditto & make static.
	(insert_byte): Ditto.
	(first_phase): Ditto.
	(pass_over): Ditto.
	(tekhex_get_symtab): Ditto & make static.
	(tekhex_get_symtab_upper_bound): Ditto & make static.
	(tekhex_mkobject): Ditto.
	(tekhex_object_p): Ditto.
	(move_section_contents): Ditto.
	(tekhex_get_section_contents): Ditto.
	(tekhex_set_arch_mach): Ditto & make static.
	(tekhex_set_section_contents): Ditto.
	(writevalue): Ditto.
	(writesym): Ditto.
	(out): Ditto.
	(tekhex_write_object_contents): Ditto.
	(tekhex_sizeof_headers): Ditto.
	(tekhex_make_empty_symbol): Ditto.
	(tekhex_get_symbol_info): Ditto.
	(tekhex_print_symbol): Ditto.
	* irix-core.c (make_bfd_asection): Ditto.
	(irix_core_core_file_p): Ditto.
	(irix_core_core_file_failing_command): Ditto.
	(irix_core_core_file_failing_signal): Ditto.
	(irix_core_core_file_matches_executable_p): Ditto.
	(irix_core_make_empty_symbol): Ditto.
	* coff-mips.c (mips_bfd_reloc_type_lookup): Ditto.
	* srec.c (srec_new_symbol): Ditto.
	(srec_get_section_contents): Ditto.
	(srec_set_arch_mach): Ditto.
	(srec_set_section_contents): Ditto.
	(internal_srec_write_object_contents): Ditto.
	(srec_write_object_contents): Ditto.
	(symbolsrec_write_object_contents): Ditto.
	(srec_sizeof_headers): Ditto.
	(srec_make_empty_symbol): Ditto.
	(srec_get_symtab_upper_bound): Ditto.
	(srec_get_symtab): Ditto.
	(srec_print_symbol): Ditto and make static.
	* elf.c (elf_read): Ditto
	(assign_section_numbers): Ditto.
	(elf_fake_sections): Ditto.
	(sym_is_global): Ditto.
	(elf_map_symbols): Ditto.
	(get_program_header_size): Ditto.
	* coffgen.c (make_a_section_from_file): Ditto.
	(coff_real_object_p): Ditto.
	(fixup_symbol_value): Ditto.
	(build_debug_section): Ditto.
	(copy_name): Ditto.
	* syms.c (coff_section_type): Ditto.

Mon Sep  9 22:36:01 1996  Jeffrey A Law  (law@cygnus.com)

	* bfd-in2.h: Rebuilt after m32r changes.

Mon Sep  9 12:31:22 1996  Doug Evans  <dje@canuck.cygnus.com>

	* config.bfd,configure.in,configure: Add m32r support.
	* Makefile.in,archures.c,elf.c,targets.c: Likewise.
	* config.bfd: Keep target list alphabetically sorted.

Mon Sep  9 11:48:41 1996  Jeffrey A Law  (law@cygnus.com)

	* elf32-v850.c (bfd_elf32_v850_reloc, case R_V850_HI16): Don't forget
	to add in the constant part found in the instruction itself.
	(case R_V850_HI16_S): Likewise.

Fri Sep  6 17:04:39 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* elf32-d10v.c (elf_d10v_howto_table): Modify the size of R_D10V_16
	and R_D10V_18 to be 1 (word).

Thu Sep  5 15:23:08 1996  Ian Lance Taylor  <ian@cygnus.com>

	* stabs.c (_bfd_link_section_stabs): If the output_section field
	of either section is bfd_abs_section, then the linker is
	discarding the section and we should not optimize it.

Tue Sep  3 12:16:20 1996  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (aout-sparcle.o): New target.
	* aoutf1.h (TARGET_IS_BIG_ENDIAN_P): Don't define if little endian.
	* config.bfd (sparclet-*-aout*): Add case.
	* configure.in (sparcle_aout_vec): Add case.
	* configure: Regenerated.
	* targets.c (sparcle_aout_vec): Declare.
	(bfd_target_vector): Add sparcle_aout_vec.
	* aout-sparcle.c: New file.

Tue Sep  3 00:57:02 1996  Jeffrey A Law  (law@cygnus.com)

	* elf32-v850.c (bfd_elf32_v850_reloc): Fix handling of
	low order sign bit propogation for R_V850_HI16_S.

	* elf32-v850.c (bfd_elf32_v850_reloc): New function for
	handling V850 specific relocs.
	(elf_v850_howto_table): Use the new function for some
	relocations.  Twiddle masks & shifts for some relocs.
	Set partial_inplace where needed.

Mon Sep  2 12:12:34 1996  Ian Lance Taylor  <ian@cygnus.com>

	* cpu-mips.c: Add an explicit mips:3000 entry, and change the
	default architecture to a machine number of 0.
	* elf32-mips.c (_bfd_mips_elf_object_p): Set the machine number
	for E_MIPS_ARCH_1.
	(_bfd_mips_elf_merge_private_bfd_data): If the machine number of
	the output BFD is the default, set it from the first input BFD.

Sun Sep  1 18:38:01 1996  Jeffrey A Law  (law@cygnus.com)

	* elf32-v850.c (elf_v850_howto_table): All the 16bit relocs
	insert at bitpos zero.  The HI16 relocs are shifted right
	by 16 bits.  Fix src_mask for all relocs.
	(TARGET_LITTLE_SYM, TARGET_LITTLE_NAME): Define.  The V850 is
	little endian!
	(TARGET_BIG_SYM, TARGET_BIG_NAME): Remove.  The V850 is little
	endian!

Sun Sep  1 15:41:08 1996  Ian Lance Taylor  <ian@cygnus.com>

	* rs6000-core.c (rs6000coff_core_file_matches_executable_p):
	Rewrite to use BFD file read routines and to avoid using a fixed
	length for the file name.

Sat Aug 31 10:22:25 1996  Jeffrey A Law  (law@cygnus.com)

	* elf32-v850.c (enum reloc_type): Add R_V850_{32,16,8}.
	(elf_v850_howto_table): Add support for R_V850_{32,16,8}.
	(v850_reloc_map): Add translation from BFD_RELOC_{32,16,8}
	to R_V850_{32,16,8}.

Fri Aug 30 18:06:04 1996  J.T. Conklin  <jtc@hippo.cygnus.com>

	* elf32-v850.c (reloc_type): Add R_V850_HI16_S.
	(elf_v850_howto_table): Add info for HI16_S reloc.
	(v850_reloc_map): Add HI_16_S reloc.
	* reloc.c: Define BFD_RELOC_V850_* relocs.

Fri Aug 30 11:49:19 1996  Ian Lance Taylor  <ian@cygnus.com>

	Add SH ELF support.
	* elf32-sh.c: New file.
	* elf.c (prep_headers): Handle bfd_arch_sh.
	* elfcode.h (write_relocs): Handle absolute symbol.
	* elf-bfd.h (_bfd_elf32_link_read_relocs): Declare.
	(_bfd_elf64_link_read_relocs): Declare.
	* elflink.h (NAME(_bfd_elf,link_read_relocs)): Rename from
	elf_link_read_relocs.  Make globally visible.  Change all
	callers.
	(elf_link_input_bfd): Get external symbols from cache in
	symtab_hdr->contents.  Get contents from cache in
	elf_section_data.
	* elfxx-target.h (bfD_elfNN_bfd_relax_section): Only define if not
	already defined.
	* reloc.c: Define BFD_RELOC_SH_* relocs.
	* libbfd-in.h (_bfd_sh_align_load_span): Declare.
	* coff-sh.c (sh_insns_conflict): Fix a return value.
	(_bfd_sh_align_load_span): New globally visible function, broken
	out of sh_align_load.
	(sh_align_load): Call _bfd_sh_align_load_span.
	(sh_swap_insns): Change relocs parameter to PTR.
	* bfd-in2.h, libbfd.h: Rebuild.
	* targets.c (bfd_elf32_sh_vec): Declare.
	(bfd_elf32_shl_vec): Declare.
	* config.bfd (sh-*-elf*): New target.
	* configure.in (bfd_elf32_sh_vec): New target vector.
	(bfd_elf32_shl_vec): New target vector.
	* configure: Rebuild.
	* Makefile.in: Rebuild dependencies.
 	(BFD32_BACKENDS): Add elf32-sh.o.
	(BFD32_BACKENDS_CFILES): Add elf32-sh.c.

	* elf.c (map_sections_to_segments): Check that LMA does not skip a
	page before checking D_PAGED.

	* ihex.c (ihex_scan): Removed unnecessary extbase variable.
	(ihex_write_object_contents): Remove extbase; always use segbase
	instead.

Thu Aug 29 16:52:17 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (i[345]86-*-*): Recognize i686 for pentium pro.
	* configure.host (i[345]86-*-*): Ditto.
	* config.bfd (i[345]86-*-*): Ditto.
	* configure: Regenerate.

	* config.bfd (i[3456]86-*-dgux*): Recognize as a synonym for x86
	elf.

Tue Aug 27 09:18:18 1996  Jeffrey A Law  (law@cygnus.com)

	* elf32-hppa.c (hppa_elf_gen_reloc_type): Add new argument.
	* elf32-hppa.h (hppa_elf_gen_reloc_type): Update prototype.
	* som.c (hppa_som_gen_reloc_type): Add new argument.  If
	we encounter an R_DATA_ONE_SYMBOL reloc against a symbol that
	will have an ST_CODE type, change the symbol's type to ST_DATA.
	* som.c (hppa_som_gen_reloc_type): Update prototype.

Tue Aug 27 00:12:22 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-mips.c (mips_elf_check_relocs): Set dynobj if needed for
	R_MIPS_32 and R_MIPS_REL32.  Set sgot and g as soon as possible.
	(mips_elf_size_dynamic_sections): Don't require .got to exist.
	(mips_elf_finish_dynamic_sections): Likewise.

Thu Aug 22 10:54:38 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.host (HLDENV): New variable to set.  Set it for
	*-*-sysv4*, since those linkers may not support -R but they always
	support LD_RUN_PATH.

	* libieee.h (NSECTIONS): Don't define.
	(ieee_data_struct): Change section_table to asection **.  Add
	section_table_size.
	* ieee.c (get_section_entry): If the table isn't big enough, make
	it bigger.
	(ieee_slurp_sections): Remove assertion about number of sections.
	(ieee_object_p): Adjust initialization of ieee to match changes to
	the structure.

	* xcofflink.c (xcoff_mark): Don't copy relocs for undefined
	symbols merely because we are generating a shared library.
	(xcoff_build_ldsyms): Don't set up global linkage code for an
	undefined symbol merely because we are generating a shared
	library.

Tue Aug 20 15:06:05 1996  J.T. Conklin  <jtc@hippo.cygnus.com>

	* Makefile.in (ALL_MACHINES): Add cpu-v850.o.
	(BFD32_BACKENDS) Add elf32-v850.o.
	* archures.c: Add bfd_v850_arch.
	* bfd-in2.h: Add bfd_v850_arch.
	* config.bfd (v850-*-*): New target.
	* configure: (bfd_elf32_v850_vec) New vector.
	* configure.in: (bfd_elf32_v850_vec) New vector.
	* cpu-v850.c: New file.
	* elf.c (prep_headers): Added case bfd_arch_v850.
	* elf32-v850.c: New file.
	* targets.c (bfd_elf32_v850_vec): New vector.

Fri Aug 16 16:25:35 1996  Ian Lance Taylor  <ian@cygnus.com>

	* xcofflink.c (xcoff_link_add_dynamic_symbols): Create and define
 	a function code symbol for an XMC_XO symbol.

Thu Aug 15 12:33:29 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-config.in: Update editing of autoconf vars to reflect
	Jul 18 configure.in change.
	* mpw-make.sed: Update editing of include pathnames to be
	more general, add @DASH_C_FLAG@ to explicit compile rule edit.

Thu Aug 15 10:35:13 1996  Richard Henderson  <rth@tamu.edu>

	* elf64-alpha.c (elf64_alpha_output_extsym): The section from
	which to offset to get the .plt entry address is ".plt".

Thu Aug 15 16:40:30 1996  James G. Smith  <jsmith@cygnus.co.uk>

	* reloc.c: (BFD_RELOC_ARM_THUMB_ADD, BFD_RELOC_ARM_THUMB_IMM,
	BFD_RELOC_ARM_THUMB_SHIFT, BFD_RELOC_ARM_THUMB_OFFSET):
 	Added, for internal use by the ARM gas.
	* libbfd.h: Rebuilt
	* bfd-in2.h: Rebuilt

Wed Aug 14 17:02:09 1996  Richard Henderson  <rth@tamu.edu>

	* elf64-alpha.c (elf64_alpha_size_dynamic_sections): Correct typo
	in section dynidx start.

Tue Aug 13 14:35:38 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf.c (_bfd_elf_make_section_from_shdr): Treat sections whose
	name begins with .gnu.linkonce as SEC_LINK_ONCE.  This is an
	optimization for g++.

Tue Aug 13 17:04:40 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elf32-ppc.c (ppc_elf_merge_private_bfd_data): If one module has
	the -mrelocatable-lib bit set and the other doesn't, clear the
	-mrelocatable-lib bit in the header.

Sat Aug 10 22:59:17 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_link_add_object_symbols): Do not resolve a common
	symbol against a STT_FUNC symbol in a shared library.

Fri Aug  9 12:44:57 1996  Ian Lance Taylor  <ian@cygnus.com>

	* xcofflink.c (xcoff_link_add_dynamic_symbols): If a descriptor
 	symbol is found, automatically define the corresponding function
 	code.

	* cofflink.c (coff_link_add_symbols): Only set (*sym_hash)->numaux
	if sym.n_numaux is not zero.
	(_bfd_coff_link_input_bfd): Permit the symbol and the hash table
	entry to disagree about the number of aux entries if the symbol
	has zero.

	* elf32-mips.c (mips_elf_check_relocs): Create the .rel.dyn
	section if it might be needed, not just if info->shared.
	(mips_elf_adjust_dynamic_symbol): Make room for a null element at
	the start of .rel.dyn if we are going to use it.
	(mips_elf_finish_dynamic_sections): Only clear the first element
	of .rel.dyn if the size is greater than zero.

Thu Aug  8 16:24:55 1996  Ian Lance Taylor  <ian@cygnus.com>

	* xcofflink.c (xcoff_link_input_bfd): If we already called the
	undefined_symbol callback for a symbol, then don't issue any more
	warnings about loader relocs.
	(_bfd_ppc_xcoff_relocate_section): Don't do any further processing
	after calling the undefined_symbol callback.

	* xcofflink.c (XCOFF_MULTIPLY_DEFINED): Define.
	(xcoff_link_add_symbols): Permit multiple definitions of a symbol
	as the AIX linker seems to do.

Thu Aug  8 12:21:56 1996  Klaus Kaempf  <kkaempf@progis.de>

	* evax-alpha.c (evax_alpha_vec): Corrected flags, cleanup.
	(evax_initialize): Remove evax_reloc_table.
	(evax_close_and_cleanup): Ditto.
	(reloc_nil): Ditto.
	(alpha_howto_table): Remove ALPHA_R_SWREL32 and ALPHA_R_SWREL64
	entries.
	(evax_bfd_reloc_type_lookup): Ditto.
	* evax-egsd.c (_bfd_evax_slurp_egsd): Add a few casts; set
	cooked_size == raw_size.
	* evax-emh.c (_bfd_evax_register_filename): Remove.
	* evax-etir.c (etir_stc): Allow ETIR_S_C_STC_xx commands.
	* evax-misc.c (add_new_contents): Malloc section at full size.
	(_bfd_save_evax_section): Memcpy section contents directly.
	* evax.h (ALPHA_R_SWREL32, ALPHA_R_SWREL64): Remove.
	(evax_reloc_table): Remove.

	* hosts/alphavms.h (O_ACCMODE): Define if needed.

	* makefile.vms: Add better support for DEC C compilation
	Add evax.h dependencies

	* reloc.c (bfd_get_reloc_size): Add case for 16 byte reloc.
	(BFD_RELOC_SWREL32,BFD_RELOC_SWREL64): Remove.
	(BFD_RELOC_ALPHA_BASEREG): Remove.
	* bfd-in2.h, libbfd.h: Rebuild.

Thu Aug  8 08:17:32 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* archive.c (bsd_write_armap):  Ifdef around calls to getuid and
	getgid if _WIN32 is defined.
	* opncls.c (bfd_fdopenr):  Remove unnecessary WINGDB ifdef.

Wed Aug  7 23:19:00 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* aoutx.h bfd-in.h bfd-in2.h opncls.c riscix.c som.c targets.c:
	Change NO_FLAGS to BFD_NO_FLAGS to avoid conflict with an HPUX
	include file.
	* libbfd.c:  Create dummy getpagesize() macro if HAVE_GETPAGESIZE
	isn't defined.

Wed Aug  7 14:11:44 1996  Philippe De Muyter  <phdm@info.ucl.ac.be>

	* configure.in: Call BFD_NEEDED_DECLARATION on strstr and
	realloc.
	* acconfig.h (NEED_DECLARATION_STRSTR): New macro.
	(NEED_DECLARATION_REALLOC): New macro.
	* configure, config.in: Rebuild.
	* sysdep.h (strstr): Declare if NEED_DECLARATION_STRSTR.
	(realloc): Declare if NEED_DECLARATION_REALLOC.

	* aclocal.m4 (BFD_NEED_DECLARATION): Include <string.h> or
	<strings.h> if they exist.

	* ieee.c (ieee_set_section_contents): Cast bfd_alloc return.

Wed Aug  7 12:12:03 1996  Ian Lance Taylor  <ian@cygnus.com>

	* cpu-i386.c (i8086_arch): Architecture info for the i8086.

	Based on patches from Eric Valette <valette@crf.canon.fr>:
	* elf32-i386.c (enum reloc_type): Add FIRST_INVALID_RELOC,
	LAST_INVALID_RELOC, R_386_16, R_386_PC16, R_386_8, R_386_PC8.
	(elf_howto_table): Add entries for new relocs.
	(elf_i386_reloc_type_lookup): Handle new relocs.
	(elf_i386_info_to_howto): Just call abort.
	(elf_i386_info_to_howto_rel): Check that the reloc type is valid.
	(elf_i386_relocate_section): Likewise.

Tue Aug  6 12:54:56 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* elf32-d10v.c (elf_d10v_howto_table): Added R_D10V_32.

Mon Aug  5 13:42:41 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf.c (_bfd_elf_make_section_from_shdr): For a loadable section,
	only get the LMA from the phdr if they are in the same part of the
	file.

	* elf.c (map_sections_to_segments): Rewrite tests for starting a
	new segment to make them more comprehensible.  If the relationship
	between the LMA and the VMA changed, start a new segment.  Don't
	check dynsec when deciding whether to start a new segment for a
	writeable section; -N will now handle this.

Thu Aug  1 22:43:08 1996  Jeffrey A Law  (law@cygnus.com)

	* libhppa.h: Remove "esel" changes.  Not the right approach.
	* som.c: Corresponding changes.
	(som_bfd_derive_misc_symbol_info): Use ST_DATA for symbols
	which don't have a SOM symbol type associated with them.
	Reverses a 1994 change.

Wed Jul 31 15:50:55 1996  Ian Lance Taylor  <ian@cygnus.com>

	Make ld -N more reasonable for ELF:
	* elf.c (map_sections_to_segments): If D_PAGED is not set, set
	phdr_in_section to false, and always use a single load segment.
	(elf_sort_sections): Sort sections by LMA after VMA.
	(assign_file_positions_for_segments): If D_PAGED is not set, don't
	align to maxpagesize.
	(assign_file_positions_except_relocs): Likewise.
	* elfcode.h (elf_object_p): If a section is loaded but not page
	aligned, clear D_PAGED.

Wed Jul 31 15:00:12 1996  James G. Smith  <jsmith@cygnus.co.uk>

	* reloc.c: (BFD_RELOC_ARM_OFFSETIMM8, BFD_RELOC_ARM_HWLITERAL):
 	Added, for internal use by the ARM gas.
	* libbfd.h: Rebuilt
	* bfd-in2.h: Rebuilt

Tue Jul 30 14:14:57 1996  Jeffrey A Law  (law@cygnus.com)

	* libhppa.h (R_HPPA_ESEL): New field selector.
	(e_esel): Similarly.
	* som.c (hppa_som_gen_reloc_type): If we encounter an e_esel,
	then generate R_COMP2 (PUSH_SYM), R_DATA_EXPR fixup stream.
	(som_write_fixups): Handle R_DATA_EXPR just like R_CODE_EXPR.

Tue Jul 30 13:31:27 1996  Ian Lance Taylor  <ian@cygnus.com>

	* xcofflink.c (_bfd_xcoff_bfd_link_add_symbols): Do the regular
	archive search before looking for stripped dynamic objects.

Fri Jul 26 17:51:39 1996  Ian Lance Taylor  <ian@cygnus.com>

	* xcofflink.c (xcoff_build_ldsyms): Make exporting an undefined
	symbol a warning rather than an error.

Wed Jul 24 12:02:53 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf.c (assign_file_positions_for_segments): Track the virtual
	memory position separately from the file position, and use it to
	compute the alignment adjustment.

Tue Jul 23 10:43:31 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* elf32-d10v.c (elf_d10v_howto_table): Changed all relocs to "long"
 	and fixed mask on R_D10V_10_PCREL_L.

Mon Jul 22 15:30:30 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf64-mips.c: Include "aout/ar.h".
	(mips_elf64_slurp_armap): New static function.
	(mips_elf64_write_armap): New static function.
	(bfd_elf64_archive_*): Define.
	* elfxx-target.h (bfd_elfNN_archive_p): Define if not defined.
	Use instead of bfd_generic_archive_p.
	(bfd_elfNN_write_archive_contents): Define if not defined.  Use
	instead of _bfd_write_archive_contents.
	(bfd_elfNN_mkdarchive): Define if not defined.  Use instead of
	_bfd_generic_mkarchive.
	(TARGET_BIG_SYM): If bfd_elfNN_archive_functions is defined, use
	bfd_elfNN_archive in BFD_JUMP_TABLE_ARCHIVE rather than
	_bfd_archive_coff.
	(TARGET_LITTLE_SYM): Likewise.
	* archive.c (bfd_slurp_armap): Check for and reject an archive map
	name of /SYM64/.
	* Makefile.in: Rebuild dependencies.

	* elf32-mips.c (_bfd_mips_elf_final_write_processing): Handle
	SHT_MIPS_LIBLIST, SHT_MIPS_CONTENT, SHT_MIPS_SYMBOL_LIB, and
	SHT_MIPS_EVENTS sections.
	(_bfd_mips_elf_section_from_shdr): Handle SHT_MIPS_IFACE,
	SHT_MIPS_CONTENT, SHT_MIPS_SYMBOL_LIB, and SHT_MIPS_EVENTS
	sections.
	(_bfd_mips_elf_fake_sections): Likewise.

	* libecoff.h (ecoff_data_type): Add rdata_in_text field.
	* ecoff.c (ecoff_compute_section_file_positions): Copy
	rdata_in_text from backend info to tdata.  Clear it if any data
	section comes before .rdata.
	(_bfd_ecoff_write_object_contents): Use rdata_in_text field in
	tdata rather than backend info.

Fri Jul 19 18:15:51 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Fix test for whether a compiler has a 64 bit
	type.  From Jim Wilson <wilson@cygnus.com>.

Thu Jul 18 15:39:10 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.host (mips-sgi-irix6*): New host.

	* configure.in: Set and substitute VERSION, BFD_HOST_64BIT_LONG
	(replacing HOST_64BITLONG), BFD_HOST_64_BIT_DEFINED,
	BFD_HOST_64_BIT, and BFD_HOST_U_64_BIT.  Add bfd-in2.h:bfd-in2.h
	to AC_OUTPUT call.
	* configure: Rebuild.
	* bfd-in.h (BFD_ARCH_SIZE): Define as @wordsize@, not @WORDSIZE@.
	(BFD_HOST_64_BIT): Define conditionally.
	(BFD_HOST_U_64_BIT): Define when BFD_HOST_64_BIT is defined.
	(bfd_vma): Typedef as BFD_HOST_U_64_BIT.
	(symvalue, bfd_size_type): Likewise.
	* bfd-in2.h: Rebuild.
	* Makefile.in (do_clean): Remove bfd-tmp.h.
	(do_distclean): Remove bfd-in3.h.
	(stmp-bfd.h): Just do copy-if-change bfd-in3.h bfd.h.
	(bfd-in3.h): New target.

	* config.bfd (sparc-*-sysv4*): Don't build sunos_big_vec.  From
	Andrew Gierth <ANDREWG@microlise.co.uk>.

	* configure.host: Set INSTALL_SHLIB.
	* configure.in: Call AC_SUBST (INSTALL_SHLIB).
	* configure: Rebuild.
	* Makefile.in (install): Use @INSTALL_SHLIB@.

	* config.bfd (mips*-*-irix6*): New target.
	* configure.host: Handle Irix 6 shared library like Irix 5.

	* xcofflink.c (xcoff_link_add_symbols): Don't check an XMC_TD
	symbol for a magic name.
	(xcoff_link_input_bfd): Don't change the reloc symbol for an
	XMC_TD symbol.
	(_bfd_ppc_xcoff_relocate_section): Don't get the TOC offset for an
	XMC_TD symbol.

Thu Jul 18 11:36:31 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-config.in: Add ELF support to mips config, create the
	elf32-target.h file in the object dir.
	* mpw-make.sed: Edit elfXX-target.h refs at beginnings of lines.

Wed Jul 17 18:02:32 1996  Kim Knuttila  <krk@cygnus.com>

	* coff-ppc.c: Redid debug scheme - numerous fprintf's gone.
	Also removed most abort calls, in favor of using bfd reporting.

Wed Jul 17 14:51:52 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* Makefile.in (ALL_MACHINES): Add cpu-d10v.o.
	(BFD32_BACKENDS) Add elf32-d10v.o.
	* archures.c: Add bfd_d10v_arch.
	* bfd-in2.h: Add bfd_d10v_arch.
	* config.bfd (d10v-*-*): New target.
	* configure: (bfd_elf32_d10v_vec) New vector.
	* configure.in: (bfd_elf32_d10v_vec) New vector.
	* cpu-d10v.c: New file.
	* elf.c (prep_headers): Added case bfd_arch_d10v.
	* elf32-d10v.c: New file.
	* libbfd.h: Rebuild.
	* reloc.c (BFD_RELOC_D10V_10_PCREL_R, BFD_RELOC_D10V_10_PCREL_L,
 	BFD_RELOC_D10V_18, BFD_RELOC_D10V_18_PCREL): Define.
	* targets.c (bfd_elf32_d10v_vec): New vector.

Wed Jul 17 10:58:55 1996  Kim Knuttila  <krk@cygnus.com>

	* coff-ppc.c (coff_ppc_relocate_section): Removed bogus fprintf

Tue Jul 16 23:49:02 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* archures.c bfd-in2.h:  Add bfd_mach_i386_i386 and
	bfd_mach_i386_i8086 machine types.

Wed Jul 10 12:42:56 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ecoff.c (_bfd_ecoff_new_section_hook): Set SEC_CODE for _INIT
	and _FINI sections.

Wed Jul 10 11:18:21 1996  Richard Henderson  <rth@tamu.edu>

	* coffcode.h (coff_set_section_contents): A/UX does not require
	special handling of the _LIB section.

Tue Jul  9 15:52:20 1996  Jeffrey A Law  (law@cygnus.com)

	* coff-h8300.c (h8300_reloc16_extra_cases): Use the correct
	value for R_RELBYTE.

	* reloc16.c (bfd_coff_reloc16_relax_section): Only "shrinks"
	array if one was allocated.

Tue Jul  9 12:21:54 1996  Ian Lance Taylor  <ian@cygnus.com>

	From Kazumoto Kojima <kkojima@kk.info.kanagawa-u.ac.jp>:
	* elf32-mips.c (struct mips_elf_link_hash_table): Add new fields
	use_rld_obj_head and rld_value.
	(mips_elf_link_hash_table_create): Initialize new fields.
	(mips_elf_add_symbol_hook): Mark __rld_obj_head symbol as
	dynamic.
	(mips_elf_create_dynamic_sections): Create .rld_map section.  If
	__rld_obj_head symbol not seen, create an __rld_map symbol.
	(mips_elf_size_dynamic_sections): Make space in .rld_map section.
	Create a DT_MIPS_RLD_MAP entry rather than a DT_DEBUG entry.
	(mips_elf_finish_dynamic_symbol): Save value of __rld_map or
	__rld_obj_head symbol.
	(mips_elf_finish_dynamic_sections): Handle DT_MIPS_RLD_MAP.

Mon Jul  8 16:18:03 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-mips.c (mips_reloc_map): Remove BFD_RELOC_32_PCREL entry.

	* elf32-ppc.c (ppc_elf_howto_raw): For R_PPC_ADDR16_HA, use
	ppc_elf_addr16_ha_reloc.
	(ppc_elf_addr16_ha_reloc): New static function.

	* coff-mips.c (struct mips_hi): Define.
	(mips_refhi_list): New static variable.
 	(mips_refhi_addr, mips_refhi_addend): Remove.
	(mips_refhi_reloc): Maintain a list of unmatched REFHI relocs.
	(mips_reflo_reloc): Process mips_refhi_list.
	(mips_relhi_list): New static variable.
	(mips_relhi_addr, mips_relhi_addend): Remove.
	(mips_relhi_reloc): Maintain a list of unmatched RELHI relocs.
	(mips_rello_reloc): Process mips_relhi_list.
	(mips_relocate_section): Permit an arbitrary number of REFHI or
	RELHI relocs before the associated REFLO or RELLO reloc.

Fri Jul  5 19:27:49 1996  Ian Lance Taylor  <ian@cygnus.com>

	* aout-target.h (MY(callback)): Set reloc_count fields.

Thu Jul  4 12:00:37 1996  Ian Lance Taylor  <ian@cygnus.com>

	* sunos.c (sunos_add_dynamic_symbols): Don't create dynamic
	sections unless this is a SunOS link.

	* VERSION: Set to 2.7.1.

	* Released binutils 2.7.

Wed Jul  3 14:59:47 1996  Ian Lance Taylor  <ian@cygnus.com>

	* i386aout.c: Include "aout/aout64.h".
 	(i386aout_write_object_contents): New static function.
	(MY_write_object_contents): Define.

	* netbsd.h (MY(write_object_contents)): Make sure that
	adjust_sizes_and_vmas is called before fiddling with the magic
	number.

Tue Jul  2 23:30:39 1996  Ian Lance Taylor  <ian@cygnus.com>

	* stabs.c (_bfd_link_section_stabs): Fix casts of psinfo.

Sun Jun 30 13:34:33 1996  Ian Lance Taylor  <ian@cygnus.com>

	* libbfd-in.h (itos, stoi): Don't define.
	* libbfd.h: Rebuild.
	* i386lynx.c (KEEPIT): Define as udata.i.
	(NAME(lynx,swap_std_reloc_out)): Don't use stoi.
	(NAME(lynx,swap_ext_reloc_out)): Likewise.
	* riscix.c (riscix_swap_std_reloc_out): Use udata.i rather than
	flags.  Don't use stoi.

	* elf32-mips.c (ELF_MAGPAGESIZE): Change definition to 0x1000.

	* elf.c (map_sections_to_segments): Don't start a new segment for
 	a writable section if it's on the same page as the previous
 	segment.  Reset the writable variable for a readonly section.

Sat Jun 29 16:18:51 1996  Kim Knuttila  <krk@cygnus.com>

	* peicode.h (coff_swap_aouthdr_in): Missing initializations of
	first_thunk_address, thunk_size, and import_table_size.
	* peicode.h: Improved some diagnostics regarding edata sections.

	* coff-ppc.c (coff_ppc_relocate_section): Earlier error check
	on IMGLUE relocs.
	(coff_ppc_relocate_section): Improved diagnostic for large TOCDEFN's.
	(TARGET_LITTLE_SYM): Added missing D_PAGED.

Fri Jun 28 13:48:45 1996  Ian Lance Taylor  <ian@cygnus.com>

	* xcofflink.c (xcoff_link_check_ar_symbols): An undefined symbol
	with XCOFF_DEF_DYNAMIC set is really defined.
	(xcoff_link_check_dynamic_ar_symbols): Likewise.
	(xcoff_link_add_symbols): Only create special sections if using an
	XCOFF hash table.

	* reloc.c (bfd_perform_relocation): Handle xcoff-powermac like
	aixcoff-rs6000.
	(bfd_install_relocation): Likewise.

Fri Jun 28 11:17:00 1996  Richard Henderson  <rth@tamu.edu>

	* elf64-alpha.c (struct alpha_elf_link_hash_entry): Add flags
	field.
	(ALPHA_ELF_LINK_HASH_LU_ADDR): Define.
	(ALPHA_ELF_LINK_HASH_LU_MEM): Define.
	(ALPHA_ELF_LINK_HASH_LU_FUNC): Define.
	(elf64_alpha_link_hash_newfunc): Initialize flags field.
	(elf64_alpha_check_relocs): Record types of LITUSE entries that
	are found for LITERAL relocs.
	(elf64_alpha_adjust_dynamic_symbol): If a symbol has its address
	taken, we cannot generate a .plt entry for the symbol.

Thu Jun 27 11:24:29 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Add AC_ISC_POSIX, and check for setitimer and
	sysconf functions (for gprof).
	* configure, config.in: Rebuild.

Wed Jun 26 16:29:02 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ecoff.c (_bfd_ecoff_archive_p): Check the first object file in
	an archive if it has a map.  If the object file has the wrong
	xvec, reject it.

	* coff-alpha.c (alpha_adjust_reloc_in): Set the addend for a
	BRADDR, SREL16, SREL32, or SREL64 reloc against an external
	symbol.
	(alpha_relocate_section): Likewise.

	* coffswap.h (coff_swap_reloc_out): Use RELSZ, not sizeof.
	(coff_swap_filehdr_out): Use FILHSZ, not sizeof.
	(coff_swap_sym_out): Use SYMESZ, not sizeof.
	(coff_swap_aux_out): Use AUXESZ, not sizeof.
	(coff_swap_lineno_out): Use LINESZ, not sizeof.
	(coff_swap_aouthdr_out): Use AOUTSZ, not sizeof.
	(coff_swap_scnhdr_out): Use SCNHSZ, not sizeof.
	* peicode.h: Corresponding changes.

Tue Jun 25 15:28:34 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elflink.h (elf_create_pointer_linker_section): Comment out code
	dealing with making GOT pointers negative of the GOT symbol for
	now.

Tue Jun 25 11:41:24 1996  Richard Henderson  <rth@tamu.edu>

	* elf64-alpha.c (elf64_alpha_adjust_dynamic_symbol): Don't
	increment the .rela.plt size until after we're done creating the
	.plt entry.
	(elf64_alpha_finish_dynamic_symbol): Change .plt entry to load the
	.rela.plt offset directly rather than calculating it.

Mon Jun 24 17:15:10 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

        * Makefile.in, (bindir, libdir, datadir, mandir, infodir, includedir):
	Use autoconf-set values.
        * doc/Makefile.in (bindir, libdir, datadir, mandir, infodir,
	includedir, INSTALL, INSTALL_PROGRAM, INSTALL_DATA): Use autoconf-set
	values.
        (docdir): Deleted.
        * configure.in (AC_PREREQ): autoconf v2.5 or higher.
        * configure: Rebuilt.

Mon Jun 24 22:50:35 1996  Jeffrey A Law  (law@cygnus.com)

	* som.c (som_write_fixups): Fix typo in R_END_TRY for exception
	handling code > 1k away.

Mon Jun 24 18:41:06 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elflink.h (elf_create_pointer_linker_section): If DEBUG is
	defined, output whenever the symbol is updated.

Mon Jun 24 17:58:12 1996  Jouke Numan  <jnuman@bazis.nl>

	* elf.c (elf_fake_sections): Don't set sh_addr of a non SEC_ALLOC
	section to 0 if user_set_vma is set.
	* elflink.h (elf_bfd_final_link): Likewise.

Sun Jun 23 20:42:51 1996  Doug Evans  <dje@canuck.cygnus.com>

	Partially undo patch of Jun 20.
	* coffcode.h (coff_set_alignment_hook): Use COFF_IMAGE_WITH_PE.
	(coff_compute_section_file_positions): Likewise.
	(coff_write_object_contents): Likewise.  Re-add deleted code, but
	use #ifdef COFF_WITH_PE, not COFF_OBJ_WITH_PE.
	* peicode.h (pe_bfd_copy_private_bfd_data): Re-add #ifdef.

Fri Jun 21 17:38:15 1996  Joel Sherrill  <joel@merlin.gcs.redstone.army.mil>

	* config.bfd: Add support for *-*-rtems* configurations.

Fri Jun 21 15:19:59 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf.c (prep_headers): Add bfd_arch_alpha case.

Fri Jun 21 12:35:27 1996  Richard Henderson  <rth@tamu.edu>

	* elf64-alpha.c: New file.
	* config.bfd (alpha-*-linuxecoff*): New target.
	(alpha-*-linux*, alpha-*-elf*): New targets.
	* configure.in (bfd_elf64_alpha_vec): New vector.
	* configure: Rebuild.
	* targets.c (bfd_elf64_alpha_vec): Declare.
	(bfd_target_vector): Add bfd_elf64_alpha_vec if BFD64.
	* reloc.c (BFD_RELOC_ALPHA_GPDISP): Define.
	* bfd-in2.h, libbfd.h: Rebuild.
	* Makefile.in: Rebuild dependencies.
 	(BFD64_BACKENDS): Add elf64-alpha.o.
	(BFD64_BACKENDS_CFILES): Add elf64-alpha.c.

Thu Jun 20 18:14:25 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ecoff.c (ecoff_armap_hash): If hlog is 0, just return 0, rather
	than relying on a right shift of 32.

Thu Jun 20 11:00:57 1996  Doug Evans  <dje@canuck.cygnus.com>

	* coffcode.h (coff_set_alignment_hook): Change COFF_IMAGE_WITH_PE
	ifdef to COFF_WITH_PE.
	(coff_compute_section_file_positions): Likewise.
	(coff_write_object_contents): Likewise.  Delete COFF_OBJ_WITH_PE.
	* pe-{arm,i386,ppc}.c (COFF_OBJ_WITH_PE): Delete.
	* peicode.h (pe_bfd_copy_private_bfd_data): Delete ifdef
	COFF_IMAGE_WITH_PE, always include.

	* peicode.h (coff_swap_scnhdr_out): ".drectve" doesn't have trailing 0.

Wed Jun 19 11:37:52 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf.c (map_sections_to_segments): Fix up the test for -Ttext to
	approximate the correct answer if SIZEOF_HEADERS was not used.

	* binary.c (binary_set_section_contents): Set section file
	position based on LMA rather than VMA.

Wed Jun 19 11:19:25 1996  Manfred Hollstein KS/EIC5 60/3/142 #40283  <manfred@lts.sel.alcatel.de>

	* linker.c (_bfd_generic_link_output_symbols): Don't output any
	symbols if info->strip == strip_all.

Tue Jun 18 15:17:36 1996  Jeffrey A. Law  <law@rtl.cygnus.com>

	* coff-h8300.c: Remove #if 0 code.
	(compatable): Don't allow mixing/matching of different architectures.

	* archures.c (bfd_mach_h8300s): Add.
	* bfd-in2.h: Rebuilt.
	* coff-h8300.c (funcvec_hash_newfunc): Handle H8/S too.
	(BADMAG): Likewise.
	(h8300_reloc16_estimate): Likewise.
	(h8300_reloc16_extra_cases): Likewise.
	(h8300_bfd_link_add_symbols): Likewise.
	* coffcode.h (coff_set_arch_mach_hook): Likewise.
	(coff_set_flags): Likewise.
	* cpu-h8300.c (h8300_scan): Likewise.
	Add H8/S to bfd_h8300_arch list.

Tue Jun 18 14:42:58 1996  Klaus Kaempf  <kkaempf@progis.de>

	Added support for Alpha OpenVMS:
	* evax.h, evax-alpha.c, evax-egsd.c, evax-emh.c: New files.
	* evax-etir.c, evax-misc.c, hosts/alphavms.h: New files.
	* config.h-vms, makefile.vms: New files.
	* config.bfd (alpha-*-*vms*): New target.
	* configure.in (evax_alpha_vec): New target vector.
	* configure: Rebuild.
	* reloc.c (BFD_RELOC_SWREL32, BFD_RELOC_SWREL64): Define.
	(BFD_RELOC_ALPHA_LINKAGE, BFD_RELOC_ALPHA_BASEREG): Define.
	* targets.c (bfd_target_evax_flavour): Define.
	(evax_alpha_vec): Declare.
	(bfd_target_vector): Add ecoffalpha_little_vec and evax_alpha_vec
	if BFD64 is defined.
	* bfd-in2.h, libbfd.h: Rebuild.
	* Makefile.in: Rebuild dependencies.
	(BFD64_BACKENDS): Add evax-alpha.o, evax-egsd.o, evax-etir.o,
	evax-emh.o, and evax-misc.o.
	(BFD64_BACKENDS_CFILES): Add evax-alpha.c, evax-egsd.c,
	evax-etir.c, evax-emh.c, and evax-misc.c.
	(HFILES): Add evax.h.

Tue Jun 18 13:54:18 1996  Ian Lance Taylor  <ian@cygnus.com>

	* coff-h8300.c (h8300_reloc16_extra_cases): Make name a const
	pointer.
	(h8300_bfd_link_add_symbols): Likewise.

Mon Jun 17 10:06:50 1996  Jeffrey A. Law  <law@rtl.cygnus.com>

	* som.h (R_HPPA_BEGIN_TRY, R_HPPA_END_TRY): Define.
	* som.c (som_write_fixups): Handle R_BEGIN_TRY and R_END_TRY.

Mon Jun 17 12:49:11 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-mips.c (mips_elf_relocate_section): Don't create a reloc
	for R_MIPS_REL32 and R_MIPS_32 relocs if no dynamic sections were
	created.
	(mips_elf_check_relocs): Only create .rel.dyn for R_MIPS_REL32 and
	R_MIPS_32 relocs if creating a shared library.

Thu Jun 13 20:14:51 1996  Doug Evans  <dje@canuck.cygnus.com>

	* peicode.h (add_data_entry): Use pei_section_data rather than
	_cooked_size.  Corresponds to May 13 change in coffcode.h.

Thu Jun 13 10:23:40 1996  Ian Lance Taylor  <ian@cygnus.com>

	* cofflink.c (_bfd_coff_final_link): Handle long section names.
	* coffcode.h (coff_write_object_contents): If there are long
	section names, always set the f_symptr field, even if there are no
	symbols.
	* peicode.h (coff_swap_filehdr_in): Don't clear the f_symptr field
	if there are no symbols.

	* coffgen.c (make_a_section_from_file): Check return value of
	_bfd_coff_read_string_table.
	(coff_real_object_p): Check return value of
	make_a_section_from_file.
	(_bfd_coff_read_string_table): Check that there are some symbols
	before trying to read the string table size.

Wed Jun 12 11:16:37 1996  Ian Lance Taylor  <ian@cygnus.com>

	* xcofflink.c (xcoff_link_add_symbols): When considering whether
	to replace a symbol in a dynamic object with a symbol from another
	dynamic object, do the replacement if the existing symbol is
	global linkage code.

	* xcofflink.c (_bfd_ppc_xcoff_relocate_section): Check explicitly
	for _ptrgl, and treat it as global linkage code.

	* aoutx.h (NAME(aout,find_nearest_line)): Notice if we find a
	filename or N_SO symbol past the offset, and use it to indicate
	that there is no line number or function when appropriate.

Tue Jun 11 15:24:48 1996  Ian Lance Taylor  <ian@cygnus.com>

	* xcofflink.c (xcoff_build_ldsyms): Set XCOFF_DEF_REGULAR for a
	common symbol defined by the linker.  Don't export function code
	even if export_defineds is set.

Mon Jun 10 11:57:27 1996  Jeffrey A Law  (law@cygnus.com)

	* coff-h8300.c (howto_table): Add new entries for R_BCC_INV
	and R_JMP_DEL.
	(rtype2howto): Handle R_BCC_INV and R_JMP_DEL.
	(h8300_symbol_address_p): New function.
	(h8300_reloc16_estimate): Eliminate jumps made unnecessary by
	relaxing.

Sun Jun  9 16:30:20 1996  Jeffrey A Law  (law@cygnus.com)

	* coff-h8300.c (h8300_reloc16_estimate): Fix many minor spacing
	problems.
	(h8300_reloc16_estimate, cases R_JMP1, R_JMP2): Adjust "dot"
	correctly for the two variants.  Allow relaxing if the target
	is 128 bytes away since after relaxation it'll be 126 bytes away.
	(h8300_reloc16_estimate, case R_PCRWORD): Correctly adjust
	"dot" and "value".  Allow relaxing if the target is 128 bytes
	away since after relaxation it'll be 126 bytes away.
	* reloc16.c (bfd_coff_reloc16_relax_section): Keep relaxing
	the given section until nothing changes.

Thu Jun  6 15:24:45 1996  Richard Henderson  <rth@tamu.edu>

	* ecoff.c (_bfd_ecoff_new_section_hook): Remove the _PDATA
 	alignment hack--we can get the lnnoptr info another way without
 	suddenly increasing the alignment requirements.  Set the flags for
	the _PDATA section.
	(ecoff_compute_section_file_positions): Do so.

Thu Jun  6 11:24:37 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ieee.c (ieee_write_object_contents): Put a timestamp in the file
	to keep the HP emulator database happy.

	* config.bfd: Recognize powerpc-*-linux* and powerpcle-*-linux*.
	From Kevin Buettner <kev@primenet.com>.

Wed Jun  5 15:16:04 1996  Ian Lance Taylor  <ian@cygnus.com>

	* aoutx.h (translate_to_native_sym_flags): Don't try to print the
	name of a NULL section.

Tue Jun  4 18:53:58 1996  Ian Lance Taylor  <ian@cygnus.com>

	* linker.c (_bfd_generic_link_add_one_symbol): If notice_all is
	set, always call the notice callback.

	* VERSION: Increment for bfdlink.h change.

Mon Jun  3 11:01:53 1996  Ian Lance Taylor  <ian@cygnus.com>

	* coff-sh.c (COFF_DEFAULT_SECTION_ALIGNMENT_POWER): Set to 4.
	(sh_relax_delete_bytes): Correct handling of differently sized
	trailing alignment reloc.

	* bfd-in.h: Use #error if BFD_HOST_64_BIT can not be defined.
	* bfd-in2.h: Rebuild.
	* configure.in: Warn if there is no known 64 bit type.
	* configure: Rebuild.

	* Makefile.in: Rebuild dependencies.
 	(BFD32_BACKENDS): Add ppcboot.o.
	(BFD32_BACKENDS_CFILES): Add ppcboot.c.

	* elf32-mips.c (mips_elf_size_dynamic_sections): Initialize c.
	From Per Fogelstrom <per.fogelstrom@mailbox200.swipnet.se>.

Sat Jun  1 21:49:58 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf64-mips.c (bfd_mips_elf64_swap_reginfo_in)
	(bfd_mips_elf64_swap_reginfo_out): Move from here...
	* elf32-mips.c (bfd_mips_elf64_swap_reginfo_in)
	(bfd_mips_elf64_swap_reginfo_out): ...to here.

Fri May 31 13:51:28 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf64-mips.c: Improve reloc special_functions and handling of
	SHT_MIPS_OPTIONS section.
	* elf32-mips.c (_bfd_mips_elf_hi16_reloc): Rename from
	mips_elf_hi16_reloc and make globally visible.
	(_bfd_mips_elf_lo16_reloc): Rename from mips_elf_lo16_reloc and
	make globally visible.
	(_bfd_mips_elf_got16_reloc): Rename from mips_elf_got16_reloc and
	make globally visible.
	(_bfd_mips_elf_gprel16_reloc): Rename from mips_elf_gprel16_reloc
	and make globally visible.
	(gprel16_with_gp): Check howto->src_mask before using value in
	insn.
	(_bfd_mips_elf_gprel32_reloc): Rename from mips_elf_gprel32_reloc
	and make globally visible.
	(gprel32_with_gp): Check howto->src_mask before fetching value.
	(bfd_mips_elf_swap_options_in): New function.
	(bfd_mips_elf_swap_options_out): New function.
	(_bfd_mips_elf_set_private_flags): Rename from
	mips_elf_set_private_flags and make globally visible.
	(_bfd_mips_elf_copy_private_bfd_data): Rename from
	mips_elf_copy_private_bfd_data and make globally visible.
	(_bfd_mips_elf_merge_private_bfd_data): Rename from
	mips_elf_merge_private_bfd_data and make globally visible.
	(_bfd_mips_elf_section_from_shdr): Accept .MIPS.options as a name
	for a SHT_MIPS_OPTIONS section.
	(mips_elf32_section_from_shdr): Handle SHT_MIPS_OPTIONS section.
	(_bfd_mips_elf_fake_sections): Consider .MIPS.options to be the
	name of a SHT_MIPS_OPTIONS section.
	(_bfd_mips_elf_set_section_contents): New function.
	(mips_elf32_section_processing): Set the GP value in a
	SHT_MIPS_OPTIONS section.
	(_bfd_mips_elf_find_nearest_line): Rename from
	mips_elf_find_nearest_line and make globally visible.
	(bfd_elf32_set_section_contents): Define.
	* elf-bfd.h (_bfd_mips_elf_hi16_reloc): Declare.
	(_bfd_mips_elf_lo16_reloc): Declare.
	(_bfd_mips_elf_gprel16_reloc): Declare.
	(_bfd_mips_elf_got16_reloc): Declare.
	(_bfd_mips_elf_gprel32_reloc): Declare.
	(_bfd_mips_elf_set_private_flags): Declare.
	(_bfd_mips_elf_copy_private_bfd_data): Declare.
	(_bfd_mips_elf_merge_private_bfd_data): Declare.
	(_bfd_mips_elf_find_nearest_line): Declare.
	(_bfd_mips_elf_set_section_contents): Declare.

	* elf32-hppa.c (elf32_hppa_info_to_howto): Rename from
	elf_info_to_howto.
	(elf_info_to_howto): Define.
	* elf32-sparc.c (elf32_sparc_info_to_howto): Rename from
	elf_info_to_howto.
	(elf_info_to_howto): Define.
	* elf64-sparc.c (sparc64_elf_info_to_howto): Rename from
	elf_info_to_howto.
	(elf_info_to_howto): Define.

	* coff-w65.c (h8300_reloc16_estimate): Rename R_MOVB[12] to
	R_MOV16B[12], to match change in coff/internal.h.

Thu May 30 12:38:49 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf64-mips.c: Extensive additions to provide better support for
	writing files and for gas.
	* elf32-mips.c (_bfd_mips_elf_object_p): New function, broken out
	of mips_elf_object_p.
	(mips_elf32_object_p): Rename from mips_elf_object_p; call
	_bfd_mips_elf_object_p.
	(_bfd_mips_elf_final_write_processing): Rename from
	mips_elf_final_write_processing and make globally visible.
	(_bfd_mips_elf_fake_sections): Rename from
	mips_elf_fake_sections and make globally visible.
	(_bfd_mips_elf_section_from_bfd_section): Rename from
	mips_elf_section_from_bfd_section and make globally visible.
	(_bfd_mips_elf_section_processing): New function, broken out of
	mips_elf_section_processing.
	(mips_elf32_section_processing): Rename from
	mips_elf_section_processing; call
	_bfd_mips_elf_section_processing.
	(_bfd_mips_elf_symbol_processing): Rename from
	mips_elf_symbol_processing and make globally visible.
	(_bfd_mips_elf_read_ecoff_info): Rename from
	mips_elf_read_ecoff_info and make globally visible.
	(mips_elf32_ecoff_debug_swap): Rename from
	mips_elf_ecoff_debug_swap.
	* elf.c (_bfd_elf_symbol_from_bfd_symbol): Use asymbol rather than
	struct symbol_cache_entry.
	(_bfd_elf_validate_reloc): New function, moved in from
	elfcode.h:validate_reloc.
	* elfcode.h (validate_reloc): Remove; moved into elf.c and renamed
	to _bfd_elf_validate_reloc.  Change all callers.
	* elf-bfd.h (bfd_section_from_shdr): Declare.
	(_bfd_elf_symbol_from_bfd_symbol): Declare.
	(_bfd_elf_validate_reloc): Declare.
	(_bfd_mips_elf_object_p): Declare.
	(_bfd_mips_elf_fake_sections): Declare.
	(_bfd_mips_elf_section_from_bfd_section): Declare.
	(_bfd_mips_elf_section_processing): Declare.
	(_bfd_mips_elf_symbol_processing): Declare.
	(_bfd_mips_elf_read_ecoff_info): Declare.
	(_bfd_mips_elf_final_write_processing): Declare.
	* elfxx-target.h (bfd_elfNN_get_reloc_upper_bound): Don't define
	if already defined.

	* elf32-mips.c (mips_elf_object_p): Handle E_MIPS_ARCH_4.
	(mips_elf_final_write_processing): Likewise.

Wed May 29 16:15:29 1996  Ian Lance Taylor  <ian@cygnus.com>

	64-bit MIPS ELF ABI objdump support:
	* elf64-mips.c: New file.
	* Makefile.in: Rebuild dependencies.
 	(BFD64_BACKENDS): Add elf64-mips.o.
	(BFD64_BACKENDS_CFILES): Add elf64-mips.c.
	* config.bfd (mips*el-*-elf*) Add bfd_elf64_bigmips_vec and
	bfd_elf64_littlemips_vec to targ_selvecs.
	(mips*-*-elf*): Likewise.
	* confingure.in: Add bfd_elf64_bigmips_vec and
	bfd_elf64_littlemips_vec to vector switch.
	* configure: Rebuild.
	* elf32-mips.c (_bfd_mips_elf_section_from_shdr): New function,
	broken out of mips_elf_section_from_shdr.
	(mips_elf32_section_from_shdr): Rename from
	mips_elf_section_from_shdr.  Call new function.
	(elf_backend_section_from_shdr): Update name of renamed function.
	* elf-bfd.h (struct elf_size_info): Change second parameter of
	write_out_phdrs to be const.  Likewise for second parameter of
	swap_symbol_out.
	(struct bfd_elf_section_data): Add rel_hdr2 field.
	(bfd_elf32_swap_symbol_in): Change second parameter to be const.
	(bfd_elf32_swap_symbol_out): Likewise.
	(bfd_elf32_swap_reloc_in): Likewise.
	(bfd_elf32_swap_reloc_out): Likewise.
	(bfd_elf32_swap_reloca_in): Likewise.
	(bfd_elf32_swap_reloca_out): Likewise.
	(bfd_elf32_swap_phdr_in): Likewise.
	(bfd_elf32_swap_phdr_out): Likewise.
	(bfd_elf32_swap_dyn_in): Likewise.
	(bfd_elf32_swap_dyn_out): Likewise.
	(bfd_elf32_slurp_symbol_table): Declare.
	(bfd_elf32_write_shdrs_and_ehdr): Declare.
	(bfd_elf32_write_out_phdrs): Declare.
	(bfd_elf64_swap_symbol_in): Change second parameter to be const.
	(bfd_elf64_swap_symbol_out): Likewise.
	(bfd_elf64_swap_reloc_in): Likewise.
	(bfd_elf64_swap_reloc_out): Likewise.
	(bfd_elf64_swap_reloca_in): Likewise.
	(bfd_elf64_swap_reloca_out): Likewise.
	(bfd_elf64_swap_phdr_in): Likewise.
	(bfd_elf64_swap_phdr_out): Likewise.
	(bfd_elf64_swap_dyn_in): Likewise.
	(bfd_elf64_swap_dyn_out): Likewise.
	(bfd_elf64_slurp_symbol_table): Declare.
	(bfd_elf64_write_shdrs_and_ehdr): Declare.
	(bfd_elf64_write_out_phdrs): Declare.
	(_bfd_mips_elf_section_from_shdr): Declare.
	* elf.c (bfd_section_from_shdr): Remove assertion requiring
	SHT_REL/SHT_RELA to match use_rela_p.  If there is already a reloc
	section for the section, add the new one to rel_hdr2.  Increment
	reloc_count rather than setting it.
	* elfcode.h (elf_slurp_symbol_table): Define name as macro.
	Remove static declaration.
	(elf_write_shdrs_and_ehdr): Define name as macro.
	(elf_write_out_phdrs): Likewise.
	(elf_swap_ehdr_in, elf_swap_ehdr_out): Declare.
	(elf_swap_shdr_in, elf_swap_shdr_out): Declare.
	(elf_swap_symbol_in): Change second parameter to be const.
	(elf_swap_symbol_out): Likewise.
	(elf_swap_ehdr_in, elf_swap_ehdr_out): Likewise.
	(elf_swap_shdr_in, elf_swap_shdr_out): Likewise.
	(elf_swap_phdr_in, elf_swap_phdr_out): Likewise.
	(elf_swap_reloc_in, elf_swap_reloc_out): Likewise.
	(elf_swap_reloca_in, elf_swap_reloca_out): Likewise.
	(elf_write_out_phdrs): Rename from write_out_phdrs.  Change second
	parameter to be const.  Make non-static.
	(elf_write_shdrs_and_ehdr): Rename from write_shdrs_and_ehdr.
	Make non-static.
	(elf_slurp_symbol_table): Make non-static.
	(NAME(_bfd_elf,size_info)): Update names of renamed functions.
	* elfxx-target.h (elf_info_to_howto): Define if not defined.
	(elf_backend_size_info): Likewise.
	(elfNN_bed): Use elf_backend_size_info.
	* targets.c (bfd_elf64_bigmips_vec): Declare.
	(bfd_elf64_littlemips_vec): Declare.
	(bfd_target_vector): Add bfd_elf64_bigmips_vec and
	bfd_elf64_littlemips_vec if BFD64 is defined.

	* libbfd.c (bfd_get_file_window): Add cast to fprintf argument.

Tue May 28 11:42:08 1996  Ian Lance Taylor  <ian@cygnus.com>

	* coff-sh.c (sh_relax_delete_bytes): Insert nop instructions, not
	zeroes, in alignment holes.

	* configure: Rebuild with autoconf 2.10.

	* aoutx.h (NAME(aout,find_nearest_line)): Make room for the
	potential leading underscore in the allocated buffer.

Fri May 24 14:28:38 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elf32-ppc.c (ppc_elf_add_symbol_hook): Do not put small common
	symbols into .sbss if this is a relocatable link.

Thu May 23 12:26:24 1996  Ian Lance Taylor  <ian@cygnus.com>

	* xcofflink.c (_bfd_ppc_xcoff_relocate_section): Warn about
	undefined symbols when creating a shared library.

Fri May 17 13:54:15 1996  Ian Lance Taylor  <ian@cygnus.com>

	* coff-sh.c: Add a bunch of new code and static const arrays to
	support aligning loads and stores on four byte memory boundaries.
	Also:
	(sh_coff_howtos): Add entries for R_SH_CODE, R_SH_DATA and
	R_SH_LABEL.
	(sh_relax_section): Look for R_SH_CODE relocs.  If we find one,
	call sh_align_loads.
	(sh_relax_delete_bytes): Don't mark R_SH_CODE or R_SH_DATA relocs
	as unused.

Thu May 16 16:34:13 1996  Ian Lance Taylor  <ian@cygnus.com>

	* cache.c (bfd_open_file): Unlink the file before opening it for
	write.  From Marty Leisner <leisner@sdsp.mc.xerox.com>.

	* opncls.c (bfd_fdopenr): Set opened_once.

Tue May 14 12:35:32 1996  Ian Lance Taylor  <ian@cygnus.com>

	* som.c (som_slurp_reloc_table): Clear external_relocs cache after
	freeing it.

	* libbfd.c: Remove #ifdef FILE_OFFSET_IS_CHAR_INDEX, and compile
	the code unconditionally.

Mon May 13 19:51:37 1996  Ian Lance Taylor  <ian@cygnus.com>

	* libcoff-in.h (struct pei_section_tdata): Define structure.
	(pei_section_data): Define macro.
	* libcoff.h: Rebuild.
	* coffcode.h (coff_set_alignment_hook): If COFF_IMAGE_WITH_PE,
	store s_paddr field in pei_section_data.
	(coff_compute_section_file_positions): Use pei_section_data rather
	than _cooked_size, and don't overwrite an existing value.
	(coff_write_object_contents): If COFF_OBJ_WITH_PE, set s_paddr to
	0.  If COFF_IMAGE_WITH_PE, set s_paddr to pei_section_data.
	* peicode.h (coff_bfd_copy_private_section_data): Define if
	COFF_IMAGE_WITH_PE.
 	(pe_bfd_copy_private_section_data): New static function if
	COFF_IMAGE_WITH_PE.

Wed May  8 16:10:38 1996  Ian Lance Taylor  <ian@cygnus.com>

	* srec.c (srec_set_arch_mach): Write as a function rather than a
	macro definition.

	* xcofflink.c (_bfd_xcoff_bfd_link_add_symbols): If an archive has
	no map, just check each member in turn to see whether it is
	required.

Wed May  8 09:17:34 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* ppcboot.c (ppcboot_object_p): Check for type 0x41 in partition
	table.  Call BFD_ASSERT to validate header size, instead of
	calling fatal.
	(ppcboot_bfd_print_private_bfd_data): Put quotes around partition
	name.

Tue May  7 16:10:19 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* ppcboot.c: New target for looking at PPCbug boot records.

	* config{ure.in,.bfd}: Add support for ppcboot target.
	* targets.c: Ditto.
	* configure: Regenerate.

Tue May  7 11:15:19 1996  Jeffrey A Law  (law@cygnus.com)

	* coff-h8300.c (howto_table): Update names to match recent
	changes to include/coff/internal.h.  Fix minor errors in the
	existing relocs.  Add R_MOVL1 and R_MOVL2.
	(rtype2howto): Similarly.
	(h8300_reloc16_estimate): Rewrite to simplify, fix bugs in the
	existing relaxing code  and peform more relaxing.
	(h8300_reloc16_extra_cases): Likewise.

Mon May  6 18:24:09 1996  Jeffrey A Law  (law@cygnus.com)

	* reloc16.c (bfd_coff_reloc16_get_value): Handle common
	symbols correctly.

Sat May  4 05:08:45 1996  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* elfcode.h (elf_object_p):  Reject generic ELF target if
	e_machine matches an alternate machine code in a specific backend.

	* netbsd-core.c (netbsd_core_vec):  Remove initializer for
	obsolete align_power_min field.

Fri May  3 13:07:35 1996  Jeffrey A Law  (law@cygnus.com)

	* coff-h8300.c (reloc_howto_type): Add howto entry for
	R_PCRWORD_B.
	(rtype2howto): Handle R_PCRWORD_B.
	(h8300_reloc16_extra_cases): Handle R_PCRWORD_B.
	(h8300_reloc_16_estimate): Likewise.  Try to turn a 16bit
	pc-relative branch (R_PCRWORD) into an 8bit pc-relative
	branch (R_PCWORD_B).

Fri May  3 10:47:41 1996  Ian Lance Taylor  <ian@cygnus.com>

	* aoutx.h (translate_from_native_sym_flags): Set the section for
	BSF_CONSTRUCTOR symbols.

	* cofflink.c (_bfd_coff_link_input_bfd): Correct setting of
	last_bf_index.

Wed May  1 18:39:32 1996  Doug Evans  <dje@canuck.cygnus.com>

	* coffcode.h (coff_write_object_contents): In comdat section lookup,
	stop looking when section is found.

Wed May  1 14:17:57 1996  Ian Lance Taylor  <ian@cygnus.com>

	* coffcode.h (STRING_SIZE_SIZE): Define.
	(styp_to_sec_flags): Handle long symbol names when looking for the
	section symbol.
	(bfd_coff_backend_data): Add _bfd_coff_long_section_names field.
	(bfd_coff_long_section_names): Define.
	(coff_write_object_contents): Handle long section names.
	(bfd_coff_std_swap_table): Initialize new field.
	* libcoff.h: Rebuild.
	* coffgen.c (make_a_section_from_file): Handle long section
	names.
	(coff_write_symbols): Handle long section names.
	* coff-alpha.c (alpha_ecoff_backend_data): Initialize new field.
	* coff-mips.c (mips_ecoff_backend_data): Likewise.
	* pe-arm.c (COFF_LONG_SECTION_NAMES): Define.
	* pei-arm.c (COFF_LONG_SECTION_NAMES): Define.
	* pe-i386.c (COFF_LONG_SECTION_NAMES): Define.
	* pei-i386.c (COFF_LONG_SECTION_NAMES): Define.
	* pe-ppc.c (COFF_LONG_SECTION_NAMES): Define.
	* pei-ppc.c (COFF_LONG_SECTION_NAMES): Define.

	* bout.c (b_out_callback): Set lma of sections.
	(b_out_bfd_get_relocated_section_contents): Rename in_abfd
	parameter to output_bfd.  Used input_bfd instead of output_bfd in
	several places.

Tue Apr 30 17:56:39 1996  Ian Lance Taylor  <ian@cygnus.com>

	* aoutx.h (translate_from_native_sym_flags): Don't create
	SEC_CONSTRUCTOR sections.
	* ecoff.c (ecoff_set_symbol_info): Likewise.

	* elf32-mips.c (mips_elf_copy_private_bfd_data): Copy elf_gp.
	From Don Bowman <bowman@waterloo.hp.com>.

Tue Apr 30 17:06:32 1996  Doug Evans  <dje@canuck.cygnus.com>

	* coff-arm.c (armcoff_little_vec): If COFF_WITH_PE is defined, add
	SEC_LINK_ONCE and SEC_LINK_DUPLICATES to section_flags.

Mon Apr 29 13:15:17 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-mips.c (struct mips_elf_link_hash_entry): Add
	mips_32_relocs field.
	(mips_elf_link_hash_newfunc): Initialize mips_32_relocs field.
	(mips_elf_relocate_section): Copy R_MIPS_REL32 and R_MIPS_32
	relocs against a global symbol which is not defined in a regular
	file.
	(mips_elf_check_relocs): For a R_MIPS_REL32 or R_MIPS_32 reloc
	against a global symbol, increment mips_32_relocs.
	(mips_elf_adjust_dynamic_symbol): If mips_32_relocs is set, and
	the symbol is not defined in a regular file, make room in the
	.rel.dyn section.

Fri Apr 26 18:00:37 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ecoff.c (ecoff_compute_section_file_positions): Track the real
	file position and the virtual file position separately.  Set
	filepos information bsaed on the real file position.
	(_bfd_ecoff_set_section_contents): Handle .lib sections like the
	Jan 23 change to coffcode.h.

	* som.c (som_slurp_symbol_table): Set the symbol count to the
	number of BFD symbols created.

Fri Apr 26 12:34:29 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elf32-ppc.c (ppc_elf_check_relocs): Forward relocations to the
	output file if linking shared objects.  Loop to check all relocs,
	rather than returning false on first error.

Thu Apr 25 13:25:12 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elf32-ppc.c (ppc_elf_create_linker_section): Add PLT case.
	(ppc_elf_additional_program_headers): If .interp section, bump #
	of program headers by 1.
	(ppc_elf_adjust_dynamic_symbol): Flesh out support.
	(ppc_elf_size_dynamic_sections): Add support for .plt section.
	(ppc_elf_check_relocs): Print out filename in debug code.  Enable
	PLT support.
	(ppc_elf_finish_dynamic_symbol): Add support for PLT's, beef up
	debug output.
	(ppc_elf_relocate_section): If the output section isn't defined,
	don't abort, just give an error message.

	* elflink.c (_bfd_elf_create_dynamic_sections): If the section
	being created is .sdata or .sdata2, don't make the symbol dynamic.

Wed Apr 24 14:04:07 1996  Ian Lance Taylor  <ian@cygnus.com>

	* xcofflink.c (_bfd_xcoff_bfd_link_add_symbols): Look through the
	members of an archive for dynamic objects with no symbols, and
	pass them directly to check_archive_element.
	(xcoff_link_check_ar_symbols): Pass dynamic objects to
	xcoff_link_check_dynamic_ar_symbols.
	(xcoff_link_check_dynamic_ar_symbols): New static function.

	* coff-rs6000.c (rs6000coff_vec): Change BFD_JUMP_TABLE_DYNAMIC
	from _bfd_nodynamic to _bfd_xcoff.
	* libcoff-in.h (_bfd_xcoff_get_dynamic_symtab_upper_bound):
	Declare.
	(_bfd_xcoff_canonicalize_dynamic_symtab): Declare.
	(_bfd_xcoff_get_dynamic_reloc_upper_bound): Declare.
	(_bfd_xcoff_canonicalize_dynamic_reloc): Declare.
	* libcoff.h: Rebuild.
	* xcofflink.c (xcoff_swap_ldrel_in): New static function.
	(xcoff_get_section_contents): New static function.
	(_bfd_xcoff_get_dynamic_symtab_upper_bound): New function.
	(_bfd_xcoff_canonicalize_dynamic_symtab): New function.
	(_bfd_xcoff_get_dynamic_reloc_upper_bound): New function.
	(xcoff_dynamic_reloc): New static variable.
	(_bfd_xcoff_canonicalize_dynamic_reloc): New function.
	(xcoff_link_add_dynamic_symbols): Use xcoff_get_section_contents.

Tue Apr 23 12:48:42 1996  Ian Lance Taylor  <ian@cygnus.com>

	* coff-sparc.c (bfd_coff_generic_reloc): Return bfd_reloc_ok even
	if reloc_entry->addend is not 0.
	(CALC_ADDEND): Just set the addend to reloc.r_offset.

Mon Apr 22 18:29:01 1996  Doug Evans  <dje@canuck.cygnus.com>

	* elf32-sparc.c (_bfd_sparc_elf_howto_table): Fix spelling of
	R_SPARC_GLOB_JMP.
	* elf64-sparc.c (sparc64_elf_howto_table): Likewise.
	Add entries for R_SPARC_[56].
	(sparc_reloc_map): Add entries for R_SPARC_[56].

Mon Apr 22 15:07:24 1996  Ian Lance Taylor  <ian@cygnus.com>

	Optimize linking of stabs in sections as used in ELF and COFF.
	* stabs.c: New file.
	* libbfd-in.h (_bfd_link_section_stabs): Declare.
	(_bfd_write_section_stabs): Declare.
	(_bfd_write_stab_strings): Declare.
	* libbfd.h: Rebuild.
	* libcoff-in.h (struct coff_section_tdata): Add stab_info field.
	(struct coff_link_hash_table): Add stab_info field.
	* libcoff.h: Rebuild.
	* cofflink.c (_bfd_coff_link_hash_table_init): Initialize
	stab_info field.
	(coff_link_add_symbols): Call _bfd_link_section_stabs if
	appropriate.
	(_bfd_coff_final_link): Write out stab strings hash table.
	(_bfd_coff_link_input_bfd): Handle optimized stabs sections.
	* coff-ppc.c (ppc_bfd_coff_final_link): Write out stab strings
	hash table.
	* elf-bfd.h (struct elf_link_hash_table): Add stab_info field.
	(struct bfd_elf_section_data): Add stab_info field.
	* elf.c (_bfd_elf_link_hash_table_init): Initialize stab_info
	field.
	* elflink.h (elf_link_add_object_symbols): If appropriate, call
	_bfd_link_section_stabs.
	(elf_bfd_final_link): Write out stab strings hash table.
	(elf_link_input_bfd): Handle optimized stabs sections.
	* reloc.c (_bfd_final_link_relocate): Check address against
	_raw_size rather than _cooked_size.
	* Makefile.in: Rebuild dependencies.
	(BFD_LIBS): Add stabs.o
	(BFD_LIBS_CFILES): Add stabs.c.

	* VERSION: Increment for bfdlink.h change.

	* coffgen.c (coff_renumber_symbols): Correct handling of
	BSF_NOT_AT_END common symbols.

Fri Apr 19 19:21:56 1996  Ian Lance Taylor  <ian@cygnus.com>

	* coff-ppc.c (record_toc): Add cast to avoid warning.
	(ppc_allocate_toc_section): Likewise.
	(coff_ppc_relocate_section): Remove ANSI C string concatenation.
	(ppc_coff_reloc_type_lookup): Remove unreached code.
	* coffcode.h (coff_write_object_contents): Don't take the address
	of an array.
	* peicode.h (pe_print_idata): Add casts to avoid warning.
	(pe_print_edata): Likewise.
	(pe_print_reloc): Remove ANSI C string concatenation.

Thu Apr 18 18:51:18 1996  Ian Lance Taylor  <ian@cygnus.com>

	* libcoff-in.h (struct coff_final_link_info): Add last_bf_index
	and last_bf fields.
	* libcoff.h: Rebuild.
	* coffswap.h (coff_swap_aux_in): Swap endndx field for C_FCN
	symbols.
	(coff_swap_aux_out): Likewise.
	* peicode.h (coff_swap_aux_in): Likewise.
	(coff_swap_aux_out): Likewise.
	* coffgen.c (coff_pointerize_aux): Check endndx field for C_FCN
	symbols.
	* cofflink.c (_bfd_coff_final_link): Initialize last_bf_index
	field.
	(_bfd_coff_link_input_bfd): Check endndx field for C_FCN symbols.
	Fix up .bf endndx link fields.
	* coff-ppc.c (ppc_bfd_coff_final_link): Initialize last_bf_index
	field.
	* xcofflink.c (xcoff_link_input_bfd): Check endndx field for C_FCN
	symbols.

Wed Apr 17 12:08:24 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* pe{,i}-ppc.c (PPC_PE): Define instead of PPC, so that compiling
	on Solaris PowerPC systems doesn't get confused.

	* ccffcode.h (coff_write_object_contents): Use #ifdef PPC_PE, not
	#ifdef PPC.

	* elfcore.h (bfd_prstatus, bfd_fpregset): Add thread argument.
	(elf_corefile_note): If HAVE_SYS_PROCFS_H is not defined, don't
	update did_reg and did_reg2.

Wed Apr 17 13:07:37 1996  Ian Lance Taylor  <ian@cygnus.com>

	* xcofflink.c (xcoff_link_input_bfd): Check for TOC overflow.

	* linker.c (_bfd_generic_link_add_one_symbol): When calling the
	callback routines, pass h->root.string rather than name, in case
	copy is true and name is transient.

Tue Apr 16 16:36:38 1996  Stu Grossman  (grossman@lisa.cygnus.com)

	* elfcore.h:  Add support for core files with multiple threads.
	(Primarily for Solaris.)

Tue Apr 16 13:44:08 1996  Ian Lance Taylor  <ian@cygnus.com>

	* aoutx.h (NAME(aout,squirt_out_relocs)): Don't do anything if
	section->orelocation is NULL.

	* coffgen.c (bfd_coff_get_syment): New function.
	(bfd_coff_get_auxent): New function.
	* bfd-in.h (bfd_coff_get_syment): Declare.
	(bfd_coff_get_auxent): Declare.
	* bfd-in2.h: Rebuild.

Mon Apr 15 19:06:59 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-mips.c (struct mips_hi16): Define.
	(mips_hi16_addr, mips_hi16_addend): Remove.
	(mips_hi16_list): New static variable.
	(mips_elf_hi16_reloc): Maintain a list of unmatched HI16 relocs.
	(mips_elf_lo16_reloc): Process mips_hi16_list.
	(mips_elf_relocate_section): Permit an arbitrary number of HI16
	relocs before the associated LO16 reloc.

Wed Apr 10 00:23:53 1996  Ian Lance Taylor  <ian@cygnus.com>

	* versados.c (versados_scan): Check bfd_alloc return value.
	(versados_object_p): Check all bfd_read return values.  Require
	that lang field be less than 10, to avoid confusion with Intel Hex
	files.

	* libaout.h (WRITE_HEADERS): Write out the relocs even if there
	aren't any symbols.
	* aoutx.h (NAME(aout,swap_std_reloc_out)): Set r_index to N_ABS,
	not 0, for an absolute symbol.
	(NAME(aout,swap_ext_reloc_out)): Likewise.

	* ihex.c (ihex_scan): Accept a length of 4 for record type 5.
	(ihex_write_object_contents): For a large start address, output
	the full 32 bit address in record type 5.

	* ieee.c (ieee_write_byte): Change second parameter from bfd_byte
	to int to avoid promotion problems in prototype.

Tue Apr  9 11:44:21 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.host: Use ${srcdir} when looking for picfrag.

	* configure.host: Switch on ${libdir}, not $(libdir).  From
	alan@spri.levels.unisa.edu.au (Alan Modra).

	* aoutx.h (aout_link_add_symbols): Always call add_dynamic_symbols
	entry point, not just for DYNAMIC objects.
	* sunos.c (sunos_add_dynamic_symbols): Always call
	sunos_create_dynamic_sections.  If called with a non DYNAMIC
	object, don't do anything else.
	(sunos_add_one_symbol): Don't call sunos_create_dynamic_sections.

Mon Apr  8 12:09:36 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Permit --enable-shared to specify a list of
	directories.
	* configure: Rebuild.

	* configure.host: Set HLDFLAGS and SHLIB_CFLAGS for *-dec-osf*
	host when configuring with --enable-shard.

Fri Apr  5 12:24:13 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config.bfd: Add i[345]86-*-freebsdelf* target; from John Polstra
	<jdp@polstra.com>.

	* linker.c (link_action): For WARN_ROW/warn, use MWARN, not CYCLE,
	to avoid crashing in bfd_hash_replace.

	* sysdep.h: Use #ifdef, not #if.

Thu Apr  4 23:32:23 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config.in: Rebuild.

Thu Apr  4 18:49:09 1996  Fred Fish  <fnf@cygnus.com>

	* configure.in (mips-sony-bsd*): Fix typo in AC_DEFINE.
	(AC_CHECK_HEADERS): Check for sys/time.h
	(AC_HEADER_TIME): Add macro.
	* configure: Rebuild.
	* sysdep.h: Use TIME_WITH_SYS_TIME and HAVE_SYS_TIME_H
	to control what combination of <time> and <sys/time.h>
	get included.

Tue Apr  2 13:11:53 1996  Doug Evans  <dje@canuck.cygnus.com>

	* aoutf1.h (sunos_32_set_arch_mach): Handle M_SPARCLET.
	(aout_32_sunos4_write_object_contents): Likewise.
	* aoutx.h (NAME(aout,machine_type)): Handle
	bfd_mach_sparc_{sparclet,sparclite}.
	* archures.c (bfd_mach_sparc_{sparclet,sparclite}): Define.
	(bfd_mach_sparc_v9_p): Update.
	* cpu-sparc.c (arch_info_struct): Add entries for sparclet,sparclite.
	* libaout.h (enum machine_type): Add M_SPARCLET.
	* sunos.c (MACHTYPE_OK): Define.
	* bfd-in2.h: Regenerated.

Tue Apr  2 00:33:18 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf-bfd.h (struct elf_link_hash_table): Add hgot field.
	* elf.c (_bfd_elf_link_hash_table_init): Initialize hgot field.
	* elflink.c (_bfd_elf_create_got_section): Store the
	_GLOBAL_OFFSET_TABLE_ hash table entry in the hgot field.
	* elf32-sparc.c (elf32_sparc_check_relocs): If the size of the
	global offset table goes over 0x1000, set the value of
	_GLOBAL_OFFSET_TABLE_ to 0x1000 into the section.
	(elf32_sparc_relocate_section): Subtract the offset of
	_GLOBAL_OFFSET_TABLE_ when handling GOT relocations.

	* elfcode.h: Don't include <string.h>.

Mon Apr  1 10:39:24 1996  Jeffrey A Law  (law@cygnus.com)

	* linker.c (_bfd_generic_link_hash_newfunc): Renamed from
	generic_link_hash_newfunc.  All references changed.
	* genlink.h (_bfd_generic_link_hash_newfunc): Declaration
	moved here from libbfd-in.h.
	* libbfd-in.h: Corresponding changes.
	* libbfd.h: Regenerated.

Mon Apr  1 12:35:36 1996  Ian Lance Taylor  <ian@cygnus.com>

	* aoutx.h (aout_link_input_section_std): When reporting an
	overflow error, use the name of the symbol in the hash table if
	available.
	(aout_link_input_section_ext): Likewise.

	* elflink.h (elf_adjust_dynamic_symbol): If a common symbol got
	defined in a regular file, set ELF_LINK_HASH_DEF_REGULAR.

Sun Mar 31 01:58:41 1996  steve chamberlain  <sac@slash.cygnus.com>

	* peicode.h (coff_swap_aouthdr_out): Delete test for .junk.
	* coffcode.h (coff_compute_section_file_positions): Likewise.
	(coff_write_object_contents): Likewise.

Fri Mar 29 12:44:36 1996  Ian Lance Taylor  <ian@cygnus.com>

	* section.c (SEC_LINK_ONCE): Define.
	(SEC_LINK_DUPLICATES): Define.
	(SEC_LINK_DUPLICATES_DISCARD): Define.
	(SEC_LINK_DUPLICATES_ONE_ONLY): Define.
	(SEC_LINK_DUPLICATES_SAME_SIZE): Define.
	(SEC_LINK_DUPLICATES_SAME_CONTENTS): Define.
	* bfd-in2.h: Rebuild.
	* coffcode.h (sec_to_styp_flags): If COFF_WITH_PE, turn
	SEC_LINK_ONCE into IMAGE_SCN_LNK_COMDAT.
	(styp_to_sec_flags): If COFF_WITH_PE, turn IMAGE_SCN_LNK_REMOVE
	into SEC_EXCLUDE.  If IMAGE_SCN_LNK_COMDAT is set, set
	SEC_LINK_ONCE, and look through the symbol table for the setting
	for SEC_LINK_DUPLICATES.
	(coff_write_object_contents): If COFF_WITH_PE, if SEC_LINK_ONCE is
	set for a section, find the section symbol in the symbol table,
	and set the aux entry based on SEC_LINK_DUPLICATES.
	* coffgen.c (coff_print_symbol): Add a space before "checksum".
	* coff-arm.c (armcoff_big_vec): If COFF_WITH_PE is defined, add
	SEC_LINK_ONCE and SEC_LINK_DUPLICATES to section_flags.
	* coff-i386.c (i386coff_vec): Likewise.
	* coff-ppc.c (TARGET_LITTLE_SYM, TARGET_BIG_SYM): Likewise.

	* VERSION: Bump to 2.6.1.
	* Makefile.in (stamp-h): Depend upon VERSION.

Thu Mar 28 23:48:49 1996  Jeffrey A Law  (law@cygnus.com)

	* libbfd-in.h (generic_link_hash_newfunc): Add declaration.
	* libbfd.h: Rebuilt.
	* linker.c (generic_link_hash_newfunc): No longer static.
	* coffcode.h (coff_bfd_link_hash_create): Allow specific targets
	to override.
	* coff-h8300.c: Add two derived hash tables and their associated
	funtions and #defines for use by the h8300 linker.
	(h8300_reloc16_extra_cases, case R_MEM_INDIRECT): Create entries in
	the function vector as needed.  Place the address of the function
	vector entry in the location specified by the R_MEM_INDIRECT reloc.
	Rewrite the vectors section contents as necessary.
	(h8300_bfd_link_add_symbols): New function for the h8300 linker.
	(coff_bfd_link_add_symbols): Define to use h8300 specific version.
	(coff_bfd_link_hash_table_create): Likewise.

Thu Mar 28 17:44:08 1996  Ian Lance Taylor  <ian@cygnus.com>

	* libhppa.h: If gcc 2.7 or higher, declare all the functions with
	__attribute__ ((__unused__)) so that -Wall doesn't warn about
	them.
	(hppa_rebuild_insn): Pass pointer to correct type to
	low_sign_unext and dis_assemble_21.

Thu Mar 28 11:00:36 1996  Doug Evans  <dje@canuck.cygnus.com>

	* config.bfd (sparc64-{sysv4*,solaris2*}): Delete.
	Stick with sparc-*-{sysv4*,solaris2*}.

Wed Mar 27 10:43:34 1996  Ian Lance Taylor  <ian@cygnus.com>

	* peicode.h (coff_swap_aux_in): Swap in extra PE x_scn fields.
	(coff_swap_aux_out): Swap out extra PE x_scn fields.
	* coffswap.h (coff_swap_aux_in): Zero out extra PE x_scn fields.
	* coffgen.c (coff_print_symbol): If any of the extra PE x_scn
	fields is non-zero, print them.

	* coff-ppc.c (ppc_record_toc_entry): Put inside COFF_IMAGE_WITH_PE
	ifdef.  Remove unused variables.
	(ppc_record_data_in_toc_entry): Ifdef out.  Removed unused
	variables.
	(ppc_mark_symbol_as_glue): Put inside COFF_IMAGE_WITH_PE ifdef.
	(get_symbol_value): Ifdef out.
	(pe_ppc_reloc): Ifdef out.  Remove unused variables.
	(coff_ppc_relocate_section): Remove unused variables.  Make
	fprintf strings and argument types correspond.  Put before_addr in
	DEBUG_RELOC ifdef.
	(dump_toc): Make fprintf strings and argument types correspond.
	(ppc_process_before_allocation): Remove unused variables.  Always
	return a value.
	(ppc_reflo_reloc): Ifdef out.
	(ppc_addr32nb_reloc): Ifdef out.
	(ppc_coff_rtype2howto): Make fprintf strings and argument types
	correspond.
	(coff_ppc_rtype_to_howto): Likewise.
	(ppc_coff_swap_sym_in_hook): Remove unused variables.

	* peicode.h (pe_print_idata): Move otherwise unused variables into
	the #ifdef where they are used.  Always return a value.
	(pe_print_edata): Make fprintf strings and argument types
	correspond.  Always return a value.
	(pe_print_pdata): Removed unused variable addr_value.  Always
	return a value.
	(pe_print_reloc): Remove unused variable onaline.  Make fprintf
	strings and argument types correspond.  Always return a value.

	* elf32-ppc.c (ppc_elf_fake_sections): Return true.
	(ppc_elf_finish_dynamic_symbol): Move definition of unused
	variable rela inside #if 0 section where it is used.

	* ns32k.h: New file.
	* cpu-ns32k.h: Include ns32k.h.  Rename externally visible
	functions to start with _bfd_.
	* aout-ns32k.c: Include ns32k.h.  Change references to renamed
	functions in cpu-ns32k.h.
	* Makefile.in: Rebuild dependencies.
	(HFILES): Add ns32k.h.

	* section.c (struct sec): Add linker_mark field.  Change
	user_set_vma and reloc_done to be single bit fields.
	(STD_SECTION): Update accordingly.
	* bfd-in2.h: Rebuild.
	* aoutx.h (NAME(aout,final_link)): Mark sections included in the
	link.
	(aout_link_input_bfd): Don't link unmarked sections.
	* cofflink.c (_bfd_coff_final_link): Mark sections included in the
	link.
	(_bfd_coff_link_input_bfd): Don't link unmarked sections.
	* coff-ppc.c (ppc_bfd_coff_final_link): Mark sections included in
	the link.
	* elflink.h (elf_bfd_final_link): Mark sections included in the
	link.
	(elf_link_input_bfd): Don't link unmarked sections.
	* xcofflink.c (_bfd_xcoff_bfd_final_link): Mark sections included
	in the link.
	(xcoff_link_input_bfd): Don't link unmarked sections.

	* coffswap.h (coff_swap_scnhdr_out): Include section name in
	overflow error messages.

Tue Mar 26 15:46:18 1996  Ian Lance Taylor  <ian@cygnus.com>

	* bfd.c (_bfd_default_error_handler): If _bfd_error_program_name
	is not set, print "BFD: " before the error message.

	* configure.in: Use AC_CHECK_TOOL to find ar and ranlib.  From
	Miles Bader <miles@gnu.ai.mit.edu>.
	* configure: Rebuild.

Fri Mar 22 12:17:00 1996  Ian Lance Taylor  <ian@cygnus.com>

	* xcofflink.c (xcoff_link_input_bfd): Fix scan for C_BINCL/C_EINCL
	symbols.

	* config.bfd: Add ieee_vec to targ_selvecs for i960 targets and
	m68k-aout, m68k-coff, and m68k-elf targets.

Fri Mar 22 11:33:44 1996  Martin Anantharaman  <martin@goofy.imech.uni-duisburg.de>

	* ieee.c: Changed #ifdef KEEPMINUSPCININST to #if KEEPMINUSPCININST.
	(ieee_generic_stat_arch_elt): Restructured to prevent
	ieee_object_p from being called repeatedly.

Thu Mar 21 11:00:47 1996  steve chamberlain  <sac@slash.cygnus.com>

	* coffcode.h (coff_write_object_contents):  Allocate
	buffers large enough for any FILEHDR or AOUTHDR.

Thu Mar 21 16:28:17 1996  David Mosberger-Tang  <davidm@azstarnet.com>

	* ecofflink.c (lookup_line): New static function, renamed and
	slighly changed from old _bfd_ecoff_locate_line.
	(_bfd_ecoff_locate_line): Cache line number information.  Use
	lookup_line for actual lookup.

Thu Mar 21 14:59:11 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* peicode.h (pe_print_pdata): Warn if the .pdata section is not a
	multiple of 20 bytes.

Thu Mar 21 13:54:40 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ecoff.c (_bfd_ecoff_find_nearest_line): Use bfd_zalloc to
	allocate ecoff_find_line, and don't initialize by hand.
	* elf32-mips.c (mips_elf_find_nearest_line): Use bfd_zalloc for
	mips_elf_find_line, and don't call memset.

	* coffcode.h (coff_compute_section_file_positions): If not
	producing a final executable, don't consider sofar when aligning
	the section to the correct size.

Wed Mar 20 16:53:12 1996  Ian Lance Taylor  <ian@cygnus.com>

	* coffcode.h (coff_add_missing_symbols): Ifdef out.
	(coff_write_object_contents): Don't call coff_add_missing_symbols.
	* coffgen.c (coff_section_symbol): Ifdef out.

Mon Mar 18 12:54:41 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf32-mips.c (mips_elf_gprel32_reloc): Initialize gp if
	output_bfd is not NULL.

Thu Mar 14 17:12:06 1996  Doug Evans  <dje@charmed.cygnus.com>

	* coffgen.c (coff_get_normalized_symtab): Call bfd_zalloc instead
	of bfd_alloc (fixes fix_line not being initialized).
	Delete zeroing of fix_{value,tag,end,scnlen} fields.

Thu Mar 14 16:06:06 1996  Jeffrey A Law  (law@cygnus.com)

	* coffcode.h: Allow specific backends to override the
	bfd_link_add_symbols routine.

	* coff-h8300.c: Include genlink.h.
	(howto_table): Add R_MEM_INDIRECT.
	(rtype2howto): Support R_MEM_INDIRECT.
	(h8300_reloc16_extra_cases): Handle R_MEM_INDIRECT like R_RELBYTE
	for now.

Tue Mar 12 12:41:17 1996  David Mosberger-Tang  <davidm@koala.azstarnet.com>

	* coff-alpha.c (alpha_relocate_section): Use
	info->callbacks_warning, rather than _bfd_error_handler, for
	"multiple gp" warning.

Tue Mar 12 12:10:55 1996  Ian Lance Taylor  <ian@cygnus.com>

	* linker.c (bfd_wrapped_link_hash_lookup): New function.
	(_bfd_generic_link_add_one_symbol): Remove BFD_ASSERT on hash
	table string.  Use bfd_wrapped_link_hash_lookup.
	(_bfd_generic_link_write_global_symbol): Remove BFD_ASSERT on hash
	table string.
	* aoutx.h (aout_link_write_symbols): Use the name from the hash
	table, if any, when writing out symbols.
	(aout_link_input_section_std): Use the name from the hash table,
	if any, when reporting undefined symbols.
	(aout_link_input_section_ext): Likewise.
	(aout_link_reloc_link_order): Use bfd_wrapped_link_hash_lookup.
	* bout.c (get_value): Likewise.
	* cofflink.c (_bfd_coff_reloc_link_order): Likewise.
	* ecoff.c (ecoff_reloc_link_order): Likewise.
	* elflink.h (elf_link_add_object_symbols): Likewise.
	(elf_reloc_link_order): Likewise.
	* linker.c (_bfd_generic_link_output_symbols): Likewise.
	(_bfd_generic_reloc_link_order): Likewise.
	(default_indirect_link_order): Likewise.
	* reloc16.c (bfd_coff_reloc16_get_value): Likewise.
	* sunos.c (sunos_add_one_symbol): Likewise.
	* xcofflink.c (xcoff_link_add_symbols): Likewise.
	(bfd_xcoff_link_count_reloc): Likewise.
	(xcoff_reloc_link_order): Likewise.

	* ecoffswap.h (ecoff_swap_fdr_in): If ECOFF_64, turn 0xffffffff
	into -1 for intern->rss.

	* configure: Rebuild with autoconf 2.8.

Mon Mar 11 12:28:31 1996  Ian Lance Taylor  <ian@cygnus.com>

	* stab-syms.c (__define_stab_duplicate): Define.
	(bfd_get_stab_name): Rename from aout_stab_name.  Rewrite to use a
	switch.
	* bfd-in.h (bfd_get_stab_name): Declare.
	* bfd-in2.h: Rebuild.
	* Makefile.in: Rebuild dependencies.
	(BFD_LIBS): Add stab-syms.o.
	(BFD_LIBS_CFILES): Add stab-syms.c.
	(BFD32_BACKENDS): Remove stab-syms.o.
	(BFD32_BACKENDS_CFILES): Remove stab-syms.c.
	* configure.in: Don't list stab-syms.o in bfd_backends.
	* configure: Rebuild.
	* libaout.h (aout_stab_name): Don't declare.
	* aoutx.h (NAME(aout,get_symbol_info)): Call bfd_get_stab_name,
	not aout_stab_name.

Fri Mar  8 11:26:20 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf.c (assign_file_positions_for_segments): Adjust file offset
	for section alignment even if SEC_LOAD is not set.

Tue Mar  5 12:02:23 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Don't set SHLIB or SHLINK to an empty string,
	since they appear as targets in Makefile.in.
	* configure: Rebuild.

	* sunos.c (sunos_scan_ext_relocs): If not making a shared library,
	don't fiddle with a symbol which is not defined anywhere.

Mon Mar  4 12:49:16 1996  Ian Lance Taylor  <ian@cygnus.com>

	* xcofflink.c (xcoff_mark): Treat undefined imported symbols as
	though they are defined in a shared library.
	(xcoff_build_ldsyms): Likewise.

	* coffgen.c (coff_find_nearest_line): Don't look at the line
	numbers for the section if section->lineno is NULL.

	* elf.c (_bfd_elf_symbol_from_bfd_symbol): Print a useful error
	message rather than calling BFD_ASSERT.
	* elfcode.h (write_relocs): Check return value of
	_bfd_elf_symbol_from_bfd_symbol.

Fri Mar  1 09:42:59 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elf32-ppc.c (ppc_elf_add_symbol_hook): Don't set SEC_LOAD flag
	for .sbss section.

Wed Feb 28 11:25:47 1996  Jeffrey A Law  (law@cygnus.com)

	* libhppa.h (hppa_reloc_field_selector_type): Add R_HPPA_NLSEL
	and R_HPPA_NLRSEL.
	(e_nsel, e_nlsel, e_nlrsel): Undefine.  Add to
	hppa_reloc_field_selector_type_alt.
	(hppa_field_adjust): Handle e_nlsel, e_nlrsel.  Fix e_nsel handling.
	* som.c (hppa_som_gen_reloc_type): Handle N', NL' NLR' field
	selectors.
	(som_write_fixups): Finish handling of R_N0SEL and R_N1SEL.

Wed Feb 28 11:00:24 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf.c (assign_file_positions_for_segments): Adjust the segment
	memory size for the alignment of a SEC_ALLOC section, not just a
	SEC_LOAD section.

Tue Feb 27 14:17:31 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* m68klinux.c: New file.
	* hosts/m68klinux.h: New file.
	* config.bfd (m68*-*-linuxaout*, m68*-*-linux*): New targets.
	* configure.in (m68*-*-linux*): New native host.
	(m68klinux_vec): New vector.
	* configure: Rebuild.
	* targets.c (m68klinux_vec): Declare.
	* i386linux.c (bfd_i386linux_size_dynamic_sections): Renamed from
	bfd_linux_size_dynmic_sections to avoid clash with m68klinux.c.
	* bfd-in.h (bfd_i386linux_size_dynamic_sections): Rename
	declaration from bfd_linux_size_dynamic_sections.
	(bfd_m68klinux_size_dynamic_sections): Declare.
	* bfd-in2.h: Rebuild.
	* Makefile.in: Rebuild dependencies.
	(BFD32_BACKENDS): Add m68klinux.o.
	(BFD32_BACKENDS_CFILES): Add m68klinux.c.

Tue Feb 27 11:31:34 1996  Jeffrey A Law  (law@cygnus.com)

	* libhppa.h (pa_arch): Add pa20.
	(hppa_reloc_field_selector_type): Add R_HPPA_NSEL.
	(e_nsel): Undefine.  Add to hppa_reloc_field_selector_type_alt.
	(hppa_field_adjust): Handle e_nsel.
	* som.c: Provide default definitions for many new relocs found only
	in hpux10 include files.
	(som_fixup_formats): Add several new relocs from hpux10.
	(som_hppa_howto_table): Add hpux10 relocs.
	(som_write_fixups): Handle R_N0SEL and R_N1SEL hpux10 relocs.

Mon Feb 26 12:52:48 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-make.sed: Edit out recent shared library support, and
	rules to rebuild .h files using doc/chew.

Mon Feb 26 14:48:39 1996  David Mosberger-Tang  <davidm@AZStarNet.com>

	* ecoff.c (ecoff_compute_section_file_positions): Adjust the file
	size even of sections with no contents.

Mon Feb 26 14:01:13 1996  Ian Lance Taylor  <ian@cygnus.com>

	* cofflink.c (_bfd_coff_link_input_bfd): When merging, skip names
	starting with '$' the way we skip names starting with '.'.  When
	updating x_endndx, don't be fooled by an index which has been
	merged.

	* cofflink.c (_bfd_coff_link_input_bfd): Don't try to optimize a
	struct/union/enum type with no elements.

Sat Feb 24 11:38:58 1996  Ian Lance Taylor  <ian@cygnus.com>

	* bfd.c (bfd_errmsg): Handle a NULL return from strerror.

	* archive.c (bfd_generic_archive_p): If the first file in the
	archive can not be recognized as an object, don't assume that this
	is the wrong format.

	* elf.c (bfd_elf_set_dt_needed_name): Don't do anything if the
	format is not bfd_object.
	(bfd_elf_get_dt_soname): Likewise.

Wed Feb 21 13:58:04 1996  Ian Lance Taylor  <ian@cygnus.com>

	* coff-sh.c (sh_relax_delete_bytes): Correct range of R_SH_USES
	reloc.

Tue Feb 20 16:22:44 1996  J.T. Conklin  <jtc@rtl.cygnus.com>

	* bfd.c (tdata): Add netbsd_core_data.
	* bfd-in2.h: Regenerated.

Tue Feb 20 16:50:02 1996  Ian Lance Taylor  <ian@cygnus.com>

	* sunos.c (SUNOS_CONSTRUCTOR): Define.
	(sunos_add_one_symbol): Don't let a symbol from a dynamic object
	override a constructor symbol.  Set SUNOS_CONSTRUCTOR when
	appropriate.

	* bout.c (b_out_squirt_out_relocs): Use udata.i rather than flags
	to get the symbol index, matching 14 Jul 95 change.

Tue Feb 20 08:26:27 1996  Fred Fish  <fnf@phydeaux.cygnus.com>

	* coff-alpha.c (alpha_ecoff_get_relocated_section_contents):
	Remove duplicate definition of gp.

Mon Feb 19 12:37:41 1996  Ian Lance Taylor  <ian@cygnus.com>

	* coff-alpha.c (alpha_ecoff_get_relocated_section_contents): Don't
	assume that we can set the GP value and then get the same value,
	since it won't be true if the output file is neither ELF nor
	ECOFF.
	* coff-mips.c (mips_adjust_reloc_in): Don't bother to use
	_bfd_get_gp_value here.
	(mips_gprel_reloc): Don't assume we can set and get the GP value.
	* elf32-mips.c (mips_elf_hi16_reloc): Get gp value from
	mips_elf_final_gp.
	(mips_elf_lo16_reloc): Likewise.
	(mips_elf_final_gp): Add pgp parameter.  Set it to the GP value.
	Don't require that the BFD be ELF.
	(mips_elf_gprel16_reloc): Get gp value from mips_elf_final_gp.
	(mips_elf_gprel32_reloc): Likewise.
	(mips_elf_relocate_section): Don't assume we can set and get the
	GP value.
	(mips_elf_finish_dynamic_symbol): Don't bother to use
	_bfd_get_gp_value here.

	* elf32-mips.c (mips_elf_create_procedure_table): Initialize sv.
	Don't change epdr between malloc and free.  Be careful not to free
	NULL pointers.  Zero out the first RPDR.

	* configure.host: On Linux, only pass -rpath option if $(libdir)
	is neither /lib nor /usr/lib.  From Alan Modra
	<alan@mullet.Levels.UniSA.Edu.Au>.

	* elf-bfd.h (struct elf_obj_tdata): Rename dt_needed_name to
	dt_name.
	(elf_dt_name): Rename from elf_dt_needed_name.
	* elf.c (bfd_elf_set_dt_needed_name): Use elf_dt_name, not
	elf_dt_needed_name.
	(bfd_elf_get_dt_soname): New function.
	* elflink.h (elf_link_add_object_symbols): Use elf_dt_name, not
	elf_dt_needed_name.  Save the SONAME back in elf_dt_name.
	* bfd-in.h (bfd_elf_get_dt_soname): Declare.
	* bfd-in2.h: Rebuild.

Mon Feb 19 02:50:23 1996  Doug Evans  <dje@charmed.cygnus.com>

	* elf32-sparc.c (elf32_sparc_reloc_type_lookup): Renamed from
	_bfd_sparc_elf_reloc_type_lookup.
	(bfd_elf32_bfd_reloc_type_lookup): Update.
	* elf64-sparc.c (SPARC64_OLD_RELOCS): Define.
	(sparc64_elf_howto_table): Define.
	(sparc_reloc_map): Define.
	(sparc64_elf_reloc_type_lookup): New function.
	(sparc_elf_wdisp16_reloc): New function.
	(elf_info_to_howto): Use sparc64_elf_howto_table.
	(sparc64_elf_relocate_section): Likewise.
	(bfd_elf64_bfd_reloc_type_lookup): Update.

Sun Feb 18 15:02:25 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.host: Check for 'do not mix' from native linker before
	trying to use -rpath.

Fri Feb 16 12:46:18 1996  Ian Lance Taylor  <ian@cygnus.com>

	* bfd.c (_bfd_get_gp_value): New function.
	(_bfd_set_gp_value): New function.
	* libbfd-in.h (_bfd_get_gp_value): Declare.
	(_bfd_set_gp_value): Declare.
	* libbfd.h: Rebuild.
	* coff-alpha.c (alpha_ecoff_get_relocated_section_contents): Use
	_bfd_get_gp_value and _bfd_set_gp_value rather than referring
	directly to the fields in the tdata information.
	(alpha_relocate_section): Likewise.
	* coff-mips.c (mips_adjust_reloc_in): Likewise.
	(mips_gprel_reloc): Likewise.
	(mips_relocate_section): Likewise.
	* elf32-mips.c (mips_elf_hi16_reloc): Likewise.
	(mips_elf_lo16_reloc): Likewise.
	(mips_elf_final_gp): Likewise.
	(mips_elf_gprel16_reloc): Likewise.
	(mips_elf_gprel32_reloc): Likewise.
	(mips_elf_relocate_section): Likewise.
	(mips_elf_finish_dynamic_symbol): Likewise.

	* bout.c (b_out_set_arch_mach): Recognize bfd_mach_i960_jx.

Thu Feb 15 11:29:13 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Call AC_PROG_CC before configure.host.
	* configure: Rebuild.
	* configure.host: Don't set information which autoconf should
	figure out, namely CC, CFLAGS, LDFLAGS, AR, and RANLIB.

	* configure.host: Remove go32 and win32 host information, since it
	should no longer be needed.

	* elf.c (map_sections_to_segments): If we have a .dynamic section,
	then start a new segment rather than put a writable section in a
	readonly segment.

	* configure.host: Set RPATH_ENVVAR.

	* Makefile.in: Rebuild dependencies.

	* elflink.c (_bfd_elf_create_linker_section): Remove unused
	zero_section variable.

Thu Feb 15 10:39:17 1996  H.J. Lu  <hjl@zoom.com>

	* Makefile.in ($(srcdir)/bfd-in2.h): Rename target from bfd-in2.h.
	($(srcdir)/libbfd.h): Rename from libbfd.h.
	($(srcdir)/libcoff.h): Rename from libcoff.h.

Wed Feb 14 16:29:07 1996  Martin Anantharaman  <martin@mail.imech.uni-duisburg.de>

	* ieee.c (ieee_write_expression): Only use an R variable for a
	local symbol.  Don't output a zero offset.  Handle a zero address.
	(SRC_MASK, PCREL_OFFSET): Define based on KEEPMINUSPCININST.
	(rel32_howto, rel16_howto, rel8_howto): Use SRC_MASK and
	PCREL_OFFSET.
	(parse_expression): Don't try to handle multiple occurrences of a
	P variable.  Handle I variables differently from X variables.  Fix
	the order of minus expressions.
	(ieee_slurp_external_symbols): Generate an I variable for an NN
	record.  Fix handling of ATI and ATX records.
	(ieee_slurp_sections): Only set minimal section attributes.
	Adjust them later, based on the section contents.
	(ieee_object_p): Read in the file until just after the ME record.
	Call ieee_slurp_section_data to set the section flags.
	(do_one): Add iterations parameter.  Only repeat the first load
	item.  Set the section and file reloc flags.
	(ieee_slurp_section_data): Set section flags.  Pass iterations to
	do_one.
	(ieee_canonicalize_reloc): Handle I variables.
	(do_with_relocs): Only emit relocation size when necessary.
	Increase MAXRUN to 127.  Change ov to be assigned, and take
	src_mask and pcrel_offset into account.
	(ieee_write_data_part): Skip sections that are not loaded.
	(ieee_write_external_part): Don't output optional last entry of WX
	records.
	(ieee_write_me_part): Make setting of me_record neater.
	(ieee_generic_stat_arch_elt): Get the size of an archive element.

	* syms.c (stt): Add entries for zerovars, vars, and code.

	* elfcode.h (validate_reloc): New static function.
	(write_relocs): Call validate_reloc for non ELF relocs.

	* elfxx-target.h (elf_symbol_leading_char): Define if not defined.
	(TARGET_BIG_SYM): Use elf_symbol_leading_char.
	(TARGET_LITTLE_SYM): Likewise.

	* config.bfd (m68*-*-psos*): New target.

Tue Feb 13 15:56:22 1996  Bryan Ford  <baford@snake.cs.utah.edu>

	* i386msdos.c: Remove some #if 0 code.
	(msdos_write_object_contents): Don't include empty sections in the
	size computation, regardless of their address.

Tue Feb 13 15:36:37 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elf32-ppc.c (ppc_elf_relocate_section): Don't segfault if dynboj
	is NULL, ie, the -r switch is used.

Tue Feb 13 14:35:15 1996  Ian Lance Taylor  <ian@cygnus.com>

	* reloc.c (BFD_RELOC_MIPS_GOT_HI16): Define.
	(BFD_RELOC_MIPS_GOT_LO16): Define.
	(BFD_RELOC_MIPS_CALL_HI16, BFD_RELOC_MIPS_CALL_LO16): Define.
	* bfd-in2.h, libbfd.h: Rebuild.
	* elf32-mips.c (mips_reloc_map): Map new relocs.

	* configure.host: Set HDLFLAGS for *-*-hpux with --enable-shared.

	* Makefile.in ($(SHLINK)): Check ts against $(SHLIB), not
	$(SHLINK).

	* ieee.c (get_symbol): Set the section to bfd_abs_section.
	(do_with_relocs): If EXEC_P is set and there are no relocs, use a
	simple number for the section address, rather than an expression.
	Limit the number of bytes between relocs to MAXRUN.
	(ieee_write_me_part): Set me_record to the file offset after the
	start address.
	(ieee_write_processor): New static function.
	(ieee_write_object_contents): Use ieee_write_processor.

Fri Feb  9 10:53:00 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.host: Use ${CC-gcc} when testing for -rpath on SunOS.

	* coff-aux.c: Change include of aux.h to aux-coff.h.

Thu Feb  8 14:01:03 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf32-m68k.c (elf_m68k_relocate_section): For a R_68K_RELATIVE
	relocation put the addend both in the reloc entry and the data.
	(elf_m68k_finish_dynamic_symbol): Likewise.  Mask out marker in
	GOT offset value.

	* elf32-m68k.c (elf_m68k_relocate_section): If -Bsymbolic, resolve
	a R_68K_PCxx reloc against a defined global symbol directly.
	(elf_m68k_check_relocs): Don't count such a reloc.

	* elf32-m68k.c (elf_m68k_check_relocs): Don't record a symbol with
	a PLTxx reloc as dynamic.  Disallow PLTxxO reloc against a local
	symbol for now, otherwise always record the symbol as dynamic.
	(elf_m68k_adjust_dynamic_symbol): If a symbol with a PLTxx reloc
	is not referenced by a dynamic object, and we are not making a
	shared object, then don't make a PLT entry.  If we do make a PLT
	entry, make sure the symbol has been recorded as dynamic.

Wed Feb  7 13:56:06 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.host: When making a shared library, set HLDFLAGS to
	pass an appropriate -rpath option.  Use the make variable SONAME
	as the shared library soname, rather than computing it here.  On
	SunOS, build stamp-tshlink in place of $(SHLINK).
	* Makefile.in (SONAME): New variable.
	($(SHLINK)): Make a link to the transformed name, as well.
	(stamp-tshlink): New target.
	(install): Skip stamp-tshlink during install.

Wed Feb  7 13:37:39 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elf32-ppc.c (ppc_elf_add_symbol_hook): Do not assume that the
	linker sections have been set up yet.

	* elf.c (make_mapping): Add an additional argument to suppress
	making the first section include the program headers.
	(map_sections_to_segments): If the user used -Ttext such that the
	program headers are on a different page, do not set the flags
	saying that this section includes the program headers.

Tue Feb  6 14:04:49 1996  J.T. Conklin  <jtc@rtl.cygnus.com>

	* configure.in (*-*-netbsd*): Set COREFILE to netbsd-core.c.
	don't define TRAD_HEADER.
	* configure: Rebuild.

	* netbsd-core.c: New file, support for NetBSD core files.
	* hosts/*nbsd.h: Removed.

Tue Feb  6 11:47:49 1996  Doug Evans  <dje@charmed.cygnus.com>

	* reloc.c (BFD_RELOC_SPARC_[567]): New reloc types.
	(BFD_RELOC_SPARC_LO7 reloc type): Deleted.
	* libbfd.h, bfd-in2.h: Regenerated.
	* elf32-sparc.c (_bfd_sparc_elf_reloc_type_lookup): Renamed from
	bfd_elf32_bfd_reloc_type_lookup.
	(reloc_type{,_names}): Deleted.
	(_bfd_sparc_elf_howto_table): Renamed from elf_sparc_howto_table.
	Add sparc64 relocs.
	(sparc_reloc_map): Add sparc64 relocs.
	(sparc_elf_notsupported_reloc): New static function.
	(sparc_elf_wdisp16_reloc): New static function.
	(elf32_sparc_check_relocs): Handle R_SPARC_WDISP{16,19}.
	(elf32_sparc_relocate_section): Likewise.
	(bfd_elf32_bfd_reloc_type_lookup): Define.
	* elf64-sparc.c (sparc64_elf_wdisp16_reloc): Deleted.
	(reloc_type{,_names}): Deleted.
	(elf_sparc_howto_table): Deleted.
	(sparc_reloc_map): Deleted.
	(_bfd_sparc_elf_howto_table): Renamed from elf_sparc_howto_table.
	(bfd_elf64_bfd_reloc_type_lookup): Change from function to #define.

Tue Feb  6 12:12:22 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.host: Make SHLIB_CFLAGS include $(PICFLAG) on a
	*-*-hpux* host.

	* Makefile.in (program_transform_name): New variable.
	(install): Transform library name before installing it.

Mon Feb  5 10:38:27 1996  Ian Lance Taylor  <ian@cygnus.com>

	* archures.c (bfd_mach_i960_hx): Define.
	* bfd-in2.h: Rebuild.
	* cpu-i960.c (scan_960_mach): Accept machine "hx".
	(MATRIX): Expand entries for HX.
	(arch_info_struct): Add i960:hx entry.
	* bout.c (b_out_set_arch_mach): Handle bfd_mach_i960_hx.
	* coffcode.h (coff_set_arch_mach_hook): Handle F_I960HX.
	(coff_set_flags): Handle bfd_mach_i960_hx.

	Support for building as a shared library, based on patches from
	Alan Modra <alan@spri.levels.unisa.edu.au>:
	* configure.in: Add AC_ARG_ENABLE for shared and commonbfdlib.
	New substitutions: ALLLIBS, PICFLAG, SHLIB, SHLIB_CC,
	SHLIB_CFLAGS, COMMON_SHLIB, PICLIST, SHLINK.
	* configure: Rebuild.
	* configure.host: If --enable-shared, adjust shared library stuff
	based on the host.  If the host is SunOS, and the linker supports
	-rpath, set HLDFLAGS to use it.
	* Makefile.in (ALLLIBS): New variable.
	(PICFLAG, SHLIB, SHLIB_CC, SHLIB_CFLAGS): New variables.
	(COMMON_SHLIB, SHLINK): New variables.
	(.c.o): If PICFLAG is set, compile twice, once PIC, once normal.
	(STAGESTUFF): Remove variable.
	(all): Depend upon $(ALLLIBS) and @PICLIST@ rather than
	$(TARGETLIB).
	(stamp-ofiles): New target, like old ofiles target, but build
	using a temporary file and move-if-change, and touch stamp-ofiles
	when done.
	(ofiles): Just depend upon stamp-ofiles.
	(stamp-piclist, piclist): New targets.
	($(SHLIB), $(SHLINK)): New targets.
	(targets.o, archures.o): Build twice if PICFLAG is set.
	(do_mostlyclean): Remove pic/*.o.
	(do_clean): Remove stamp-ofiles, $(SHLIB), $(SHLINK), piclist, and
	stamp-piclist.
	(do_distclean): Remove pic and stamp-picdir.
	(install): Install shared libraries.
	($(OFILES)): Depend upon stamp-picdir.
	(stamp-picdir): New target.

	* libcoff-in.h: Add comment reminding people that libcoff.h is a
	generated file.
	* libcoff.h: Rebuild.

	* elflink.h (elf_adjust_dynamic_symbol): Don't try to get the
	flavour of a section with no owner.

	* elf32-mips.c (mips_elf_create_dynamic_sections): Clear
	ELF_LINK_NON_ELF flag.
	(mips_elf_create_got_section): Likewise.

	* elf.c: Revert last change, since it breaks dynamic linking.
	* elf-bfd.h (struct elf_backend_data): Remove want_hdr_in_seg
	field.
	* elf32-mips.c (elf_backend_want_hdr_in_seg): Don't define.
	* elfxx-target.h (elf_backend_want_hdr_in_seg): Don't define.
	(elfNN_bed): Don't initialize want_hdr_in_seg field.

Sun Feb  4 20:45:13 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elf.c (assign_file_positions_for_segments): If the backend does
	not want the elf header or the program headers in the address
	space, do not include them in the calculations.

	* elf32-ppc.c (ppc_elf_additional_program_headers): New hook
	function to determine if we need additional program headers.
	(ppc_elf_modify_segment_map): Define as a NOP function for now.
	(ppc_elf_create_linker_section): .sdata2 is a read-only section.

Sat Feb  3 23:00:03 1996  Ian Lance Taylor  <ian@cygnus.com>

	* coffcode.h: Move today's libcoff.h change into coffcode.h.

Sat Feb  3 15:43:44 1996  Fred Fish  <fnf@cygnus.com>

	* libcoff.h (bfd_coff_link_add_one_symbol): Combine macro args
	back into one line.  Some compilers (sunos 4.1.3 for example)
	won't accept args split across more than one line.

Fri Feb  2 11:42:15 1996  Steve Chamberlain  <sac@slash.cygnus.com>

	* aclocal.m4 (BFD_BINARY_FOPEN): Understand cygwin32.
	* configure: Regenerate.

Fri Feb  2 12:12:16 1996  Jeffrey A Law  (law@cygnus.com)

	* elf32-hppa.c (elf32_hppa_backend_symbol_table_processing): Don't
	try to do arithmetic on a void *, cast it to a unsigned char * first.

Thu Feb  1 16:04:06 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf-bfd.h (ELF_LINK_NON_ELF): Define.
	* elf.c (_bfd_elf_link_hash_newfunc): Set elf_link_hash_flags to
	ELF_LINK_NON_ELF.
	* elflink.h (elf_link_add_object_symbols): Reset ELF_LINK_NON_ELF
	flag for a newly defined symbol.
	(NAME(bfd_elf,record_link_assignment)): Likewise.
	(elf_adjust_dynamic_symbol): If ELF_LINK_NON_ELF is set, try to
	set the DEF or REF_REGULAR flags correctly.

	* Makefile.in (bfd-in2.h): Make bfd.h, not protos, in docdir.
	(libbfd.h, libcoff.h): Corresponding change.

	* elf32-i386.c (elf_i386_check_relocs): Don't record a symbol with
	a PLT32 reloc as dynamic.
	(elf_i386_adjust_dynamic_symbol): If a symbol with a PLT32 reloc
	is not referenced by a dynamic object, and we are not making a
	shared object, then don't make a PLT entry.  If we do make a PLT
	entry, make sure the symbol has been recorded as dynamic.

Wed Jan 31 17:23:32 1996  Steve Chamberlain  <sac@slash.cygnus.com>

	* coff-i386.c (coff_i386_reloc_type_lookup): Add BFD_RELOC_32_PCREL.
	* config.bfd (i[345]86-*-win32): Becomes i[345]86-*-cygwin32.
	(powerpcle-*-cygwin32): New.
	* peicode.h (add_data_entry): Get address from vma.

Wed Jan 31 16:23:57 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elflink.c (_bfd_elf_create_linker_section): If the symbol
	attached to the section has already been created as an undefined
	symbol, treat it as if it hasn't been created yet.

Wed Jan 31 16:16:53 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elflink.h (elf_bfd_final_link): Don't output initial dummy
	symbol or section symbols if stripping all symbols and this is not
	a relocateable link.  Don't output the symbol string table if
	there are no symbols.
	(elf_link_flush_output_syms): Don't do anything if there are no
	symbols to flush.

Wed Jan 31 12:55:49 1996  Richard Henderson  <rth@tamu.edu>

	* coff-aux.c: New file.
	* hosts/m68kaux.h: New file.
	* config.bfd (m68*-apple-aux*): New target.
	* configure.in (m68*-apple-aux*): New native host.
	(m68kaux_coff_vec): New vector.
	* configure: Rebuild.
	* targets.c (m68kaux_coff_vec): Declare.
	* coffcode.h (bfd_coff_backend_data): Add field
	_bfd_coff_link_add_one_symbol.
	(bfd_coff_link_add_one_symbol): Define.
	(compare_arelent_ptr): New static function if TARG_AUX.
	(coff_write_relocs): If TARG_AUX, sort the relocs.
	(coff_write_object_contents): Set A/UX aouthdr magic number.
	(coff_link_add_one_symbol): Define if not defined.
	(bfd_coff_std_swap_table): Initialize new field.
	* libcoff.h: Rebuild.
	* cofflink.c (coff_link_add_symbols): Call
	bfd_coff_link_add_one_symbol rather than
	_bfd_generic_link_add_one_symbol.
	* coff-m68k.c (COFF_PAGE_SIZE): Don't define if already defined.
	* coff-alpha.c (alpha_ecoff_backend_data): Initialize new field.
	* coff-mips.c (mips_ecoff_backend_data): Likewise.
	* Makefile.in: Rebuild dependencies.
	(BFD32_BACKENDS): Add coff-aux.o.
	(BFD32_BACKENDS_CFILES): Add coff-aux.c.

Wed Jan 31 11:37:46 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf32-m68k.c (elf_m68k_relocate_section): Fix R_68K_GOT*
	relocation; ignore addend with R_68K_{GOT,PLT}*O relocation.

Tue Jan 30 12:09:04 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (do_maintainer_clean): Remove $(srcdir)/bfd-in2.h,
	$(srcdir)/libbfd.h and $(srcdir)/libcoff.h.
	(maintainer-clean): Warn about deleting special files.
	(bfd-in2.h, libbfd.h, libcoff.h): New targets.

	* elf32-hppa.c (elf32_hppa_relocate_section): Handle indirect and
	warning symbols correctly.
	* elf32-i386.c (elf_i386_relocate_section): Likewise.
	* 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-sparc.c (sparc64_elf_relocate_section): Likewise.

	* syms.c (_bfd_stab_section_find_nearest_line): Add casts to avoid
	warnings.

Mon Jan 29 14:27:24 1996  Kim Knuttila  <krk@cygnus.com>

	* libcoff-in.h: aligned newly exported names with bfd naming
	conventions. Removed an erroneous define of POWERPC_LE_PE.
 	* libcoff.h: Rebuild.
	* cofflink.c, coff-ppc.c: the above function name changes

Mon Jan 29 13:06:28 1996  Ian Lance Taylor  <ian@cygnus.com>

	From Basim Kadhim <kadhim@spock.cs.colorado.edu>:
	* ecoff.c (struct extsym_info): Define.
	(_bfd_ecoff_bfd_final_link): Pass a pointer to struct extsym_info
	to ecoff_link_write_external.
	(ecoff_link_write_external): Accept a struct extsym_info pointer.
	Strip symbols when appropriate.

	Based on patches from Ronald F. Guilmette <rfg@monkeys.com>:
	* syms.c (BSF_OBJECT): Define.
	(bfd_print_symbol_vandf): Print 'O' for BSF_OBJECT.
	* bfd-in2.h: Rebuild.
	* elfcode.h (elf_slurp_symbol_table): Set BSF_OBJECT for an
	STT_OBJECT symbol.
	* elf.c (swap_out_syms): Only set type to STT_OBJECT if BSF_OBJECT
	is set.

	* elf32-i386.c (elf_i386_relocate_section): If -Bsymbolic, when
	copying relocs into a shared object, treat a defined global symbol
	as a local symbol.
	* elf32-m68k.c (elf_m68k_relocate_section): Likewise.
	* elf32-mips.c (mips_elf_relocate_section): Likewise.
	* elf32-sparc.c (elf32_sparc_relocate_section): Likewise.

	* elflink.h (elf_link_add_object_symbols): Only set weakdef to a
	real defined symbol, not to a weak defined symbol.

Mon Jan 29 11:34:36 1996  Kim Knuttila  <krk@cygnus.com>

	* cofflink.c: removed the POWERPC_LE_PE hack, promoted some types
	and made a few static functions externs.

	* coff-ppc.c (ppc_bfd_coff_final_link): new function, replaces the
	POWERPC_LE_PE hack in cofflink.

	* libcoff-in.h: promoted the following from cofflink.c to allow
	_bfd_coff_final_link to be overridden -  STRING_SIZE_SIZE,
	coff_debug_merge_element, struct coff_debug_merge_type,
	coff_debug_merge_hash_entry, coff_debug_merge_hash_table,
	coff_debug_merge_hash_table_init,  coff_debug_merge_hash_table_free,
	coff_debug_merge_hash_lookup, coff_link_section_info,
	coff_final_link_info, coff_debug_merge_hash_newfunc,
	coff_write_global_sym, coff_link_input_bfd, coff_reloc_link_order.

	* libcoff.h: re-gen'd

Fri Jan 26 18:33:35 1996  Ian Lance Taylor  <ian@cygnus.com>

	* syms.c: Include "bfdlink.h".
	(struct stab_find_info): Define.
	(_bfd_stab_section_find_nearest_line): New function.
	* libbfd-in.h (_bfd_stab_section_find_nearest_line): Declare.
	* libbfd.h: Rebuild.
	* elf-bfd.h (struct elf_obj_tdata): Add line_info field.
	* elf.c (_bfd_elf_find_nearest_line): Try calling
	_bfd_stab_section_find_nearest_line before searching the ELF
	symbol table.  Find the closest STT_FUNC symbol, not the last one.
	* libcoff-in.h (coff_data_type): Add line_info field.
 	* libcoff.h: Rebuild.
	* coffgen.c (coff_find_nearest_line): Try calling
	_bfd_stab_section_find_nearest_line before searching the COFF
	symbol table.
	* Makefile.in: Rebuild dependencies.

Fri Jan 26 16:11:19 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elf32-ppc.c (R_PPC_EMB_SDA21 relocations): Make relocation size
	4 bytes, so we get the correct value when updating the register
	field in little endian mode.

Thu Jan 25 12:14:16 1996  Ian Lance Taylor  <ian@cygnus.com>

	* libcoff-in.h (struct xcoff_tdata): Remove toc_section and
	entry_section fields.  Add sntoc and snentry fields.
	* libcoff.h: Rebuild.
	* coffcode.h (coff_mkobject_hook): Initialize sntoc and snentry,
	not toc_section and entry_section (the COFF file does not have any
	sections at this point).
	(coff_write_object_contents): Set o_snentry and o_sntoc from
	snentry and sntoc rather than entry_section and toc_section.
	* coff-rs6000.c (xcoff_copy_private_bfd_data): Copy sntoc and
	snentry, not toc_section and entry_section.
	* xcofflink.c (bfd_xcoff_size_dynamic_sections): Don't set
	entry_section from hentry.
	(xcoff_link_input_bfd): If a defined symbol has XCOFF_ENTRY set,
	set snenty.
	(xcoff_link_input_bfd): Set sntoc, not toc_section.
	(xcoff_write_global_symbol): Get toc_section from sntoc, rather
	than using toc_section directly.

	* archures.c: Add missing `.' in enum bfd_architecture.
	* bfd-in2.h: Rebuild.

	* config.bfd (i[345]86-*-sco*elf*): Use bfd_elf32_i386_vec.  From
	Robert Lipe <robertl@arnet.com>.

Thu Jan 25 12:08:51 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elf32-ppc.c (ppc_elf_size_dynamic_sections): Add .rela.sdata{,2}
	to sections we allocate.  Use bfd_zalloc to allocate initialial
	sections, not bfd_alloc.
	(ppc_elf_check_relocs): Remove BFD_ASSERTs for !shared from
	SDA{,2}I16 relocations.
	(ppc_elf_add_symbol_hook): Use the value of -G nn to determine
	whether to put something in .sbss or not.
	(ppc_elf_relocate_section): Add support for more relocations.  Add
	in sec->output_offset where appropriate.  Make error messages
	include the symbol name.

	* elflink.c (_bfd_elf_create_linker_section): Lookup symbol before
	trying to add it to the symbol table, so _GLOBAL_OFFSET_TABLE_
	doesn't get redefined messages if -shared.

	* elflink.h (elf_create_pointer_linker_section) Only bump RELA
	section if the rel_section field has been set up.

Wed Jan 24 20:40:26 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elf32-ppc.c (ppc_elf_relocate_section): Fix typo in eabi
	relocations.

Wed Jan 24 10:38:34 1996  Doug Evans  <dje@charmed.cygnus.com>

	* elf32-sparc.c (elf32_sparc_merge_private_bfd_data): Delete checking
	of flags, only flags used are controlled by mach number.  Bump up
	output file mach number to highest of input file mach numbers.
	(elf32_sparc_object_p): Watch for EF_SPARC_SUN_US1.
	(elf32_sparc_final_write_processing): Set EF_SPARC_SUN_US1 if v8plusa.

	* config.bfd (sparc64-*-{sysv4*,solaris2*}): Comment out
	bfd_elf64_sparc_vec support.

Tue Jan 23 14:33:05 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elf32-ppc.c (ppc_elf_copy_private_bfd_data): Don't complain if
	the embedded bit is set on some objects and not on others.  Just
	or it together.
	(ppc_elf_relocate_section): Implement R_PPC_EMB_{SDA21,RELSDA}
	relocations.

Tue Jan 23 14:22:45 1996  Ian Lance Taylor  <ian@cygnus.com>

	* coffcode.h (coff_new_section_hook): Don't try to align the
	.stabstr section.

	* coffcode.h (coff_set_section_contents): Fix the handling of the
	.lib section to work even if the entire section contents are
	written at once.  From Gvran Uddeborg <gvran@uddeborg.pp.se> and
	Robert Lipe <robertl@arnet.com>.

Mon Jan 22 18:45:51 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elflink.h (elf_finish_pointer_linker_section): Don't allocate
	memory here for contents.

	* elf32-ppc.c (ppc_elf_relocate_section): Bump up _SDA_BASE_ and
	_SDA2_BASE_ by 32768.
	(ppc_elf_size_dynamic_sections): #if out PLT code which we haven't
	started using.  Allocate contents for .sdata and .sdata2 sections
	also.
	(ppc_elf_check_relocs): Use bfd_get_section_name in debug message,
	rather than _name.
	(ppc_elf_finish_dynamic_symbol): Remove code that attempted to
	size _SDA{,2}_BASE_.
	(ppc_elf_relocate_section): Change how sdata{,2} relocations are
	done.

Mon Jan 22 08:52:04 1996  Doug Evans  <dje@charmed.cygnus.com>

	* elflink.h (elf_finish_pointer_linker_section): Fix typo.

	* archures.c (bfd_mach_sparc_v9): Renamed from bfd_mach_sparc64.
	(bfd_mach_sparc_{v8plus,v8plusa}): Define.
	(bfd_mach_sparc_v9a): Define.
	(bfd_mach_sparc_v9_p): Define.
	* bfd-in2.h: Regenerated.
	* aoutx.h (aout,machine_type): bfd_mach_sparc64 renamed to
	bfd_mach_sparc_v9.
	* elf64-sparc.c (sparc64_elf_object_p): Likewise.
	* config.bfd (sparc64-*-sysv4*,sparc64-*-solaris2*): Set targ_defvec
	to bfd_elf32_sparc_vec.
	* cpu-sparc.c (arch_info_struct): Renamed from sparc_arch_info.
	Add v8plus{,a} support.
	Add v9a support.
	(sparc_compatible): New function.
	* elf32-sparc.h: #include "elf/sparc.h".
	(elf32_sparc_merge_private_bfd_data, elf32_sparc_object_p,
	elf32_sparc_final_write_processing): New functions.
	(bfd_elf32_bfd_merge_private_bfd_data, elf_backend_object_p,
	elf_backend_final_write_processing): Define.

Mon Jan 22 11:21:51 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elf-bfd.h (struct elf_link_hash_entry): Add
	linker_section_pointer field.
	(enum elf_linker_section_enum): Enumeration for new way of
	creating linker dynamic sections and symbols.
	(elf_linker_section{,_pointers}): New structures for creating
	dynamic sections and symbols.
	(elf_obj_tdata): Add linker_section_pointers and linker_section
	fields.
	(elf_local_ptr_offsets,elf_linker_section): New accessor macros.
	(_bfd_elf_create_linker_section): New declarations.
	(_bfd_elf_find_pointer_linker_section): Ditto.
	(bfd_elf{32,64}_{create,finish}_pointer_linker_section): Ditto.
	(_bfd_elf_make_linker_section_rela): Ditto.

	* elf.c (_bfd_elf_link_hash_newfunc): Initialize new fields.

	* elf32-ppc.c (ppc_elf_create_dynamic_sections): Delete.
	(ppc_elf_create_linker_section): New function to create the
	sections .got, .sdata, and .sdata2.
	(ppc_elf_size_dynamic_sections): Zap .rela.{sdata,sdata2} if
	needed.
	(ppc_elf_check_relocs): Support more of the eabi relocations.
	(ppc_elf_relocate_section): Ditto.
	(ppc_elf_finish_dynamic_symbols): Adjust _SDA{,2}_BASE_ by 32768
	if the .sdata{,2} + .sbss{,2} section size is > 32k.

	* elflink.h (elf_create_pointer_linker_section): New function to
	create initialized pointers in dynamic linker sections.
	(elf_finish_pointer_linker_section): Actually intialize the
	pointers created above.

	* elfcode.h (bfd_elf{32,64}_create_pointer_linker_section): New
	macros to provide both 32 and 64 bit versions of
	elf_create_pointer_linker_section.
	(bfd_elf{32,64}_finish_pointer_linker_section): New macros to
	provide both 32 and 64 bit versions of
	elf_finish_pointer_linker_section.

	* elflink.c (_bfd_elf_create_linker_section): New function to
	create a linker section.
	(_bfd_elf_find_pointer_linker_section): Find a unique pointer to a
	given address in the linker pointer offsets created for a given
	symbol.
	(_bfd_elf_make_linker_section_rela): Make a RELA section
	corresponding to the generated linker section.

Sat Jan 20 08:36:10 1996  Doug Evans  <dje@canuck.cygnus.com>

	* elf32-sparc.c (ELF_MACHINE_ALT1): Define.

Thu Jan 18 18:25:34 1996  Kim Knuttila  <krk@cygnus.com>

	* coff-ppc.c (coff_ppc_relocate_section): changed TOCDEFN relocs.
	(coff_ppc_relocate_section): Handle special values for gcc built dlls.
	(dump_toc): fix diagnosing code to identify out-of-toc-bounds entries.
	Also begin the toc at 4 as an eye catcher ('31313131' marks the first
	toc entry in an objdump) for now.
	(ppc_do_last, ppc_get_last): New function - needed to save processing
	the toc owner to the end.
	(ppc_coff_swap_sym_in_hook): Removed an incorrect hack for doing the
	toc owner last.

	* cofflink.c (_bfd_coff_final_link): Added a new hack to keep the
	toc owner from being done till last. Must define POWERPC_LE_PC
	to enable it.

	* coffcode.h (coff_set_alignment_hook): alignment setting for .stab

	* peicode.h (coff_swap_scnhdr_out): set section flags for stab/str
	to INFO.
	(coff_swap_aouthdr_out): Removed a non-working hack for computing the
	SizeOfImage for PowerPC. Ignore the size of the .junk section.

Thu Jan 18 17:42:12 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elfcore.h: Include <signal.h> before <sys/procfs.h>.

Wed Jan 17 12:40:14 1996  Ian Lance Taylor  <ian@cygnus.com>

	* cpu-powerpc.c (arch_info_struct): Change last entry to not point
	back to first.
	(bfd_powerpc_arch): Point at first entry in arch_info_struct.

Tue Jan 16 15:10:49 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf.c (assign_file_positions_for_segments): Don't increment file
	offset for a segment which contains no loadable sections.

Mon Jan 15 17:46:27 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* reloc.c: Add new PowerPC relocations.
	* {bfd-in2,libbfd}.h: Regenerate.

	* elf32-ppc.c (ppc_elf_howto_raw): Add more PPC relocations.
	(ppc_elf_reloc_type_lookup): Lookup new relocations.

Mon Jan 15 14:29:44 1996  Ian Lance Taylor  <ian@cygnus.com>

	* aoutx.h (howto_table_ext): Fix RELOC_BASE10 and RELOC_BASE22
	entries.

	* sunos.c (sunos_scan_ext_relocs): Don't fail assert if
        info->shared.

	* coffgen.c (coff_find_nearest_line): Don't try to cache
	information in sections that are not owned by a BFD.  From Richard
	Henderson <richard@atheist.tamu.edu>.

	* elf32-mips.c: Numerous changes to dynamic linking code, mostly
	from Kazumoto Kojima <kkojima@info.kanagawa-u.ac.jp>.
	* elflink.h (elf_link_output_extsym): Remove special check for
	_rld_new_interface.

	* ecoffswap.h: Add prototypes for static functions.

Sun Jan 14 21:36:08 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elf32-ppc.c (ppc_elf_{unsupported,std}_reloc): Remove functions.
	(ppc_elf_howto_raw): Remove ppc_elf_{unsupported,std}_reloc
	references.
	(ppc_elf_relocate_section):  No longer allow .sdata/.sbss sections
	to satisfy a TOC16 relocation. 	Rewrite unsupported relocation
	support.  Begin support for R_PPC_SDA{2,}REL.

Sat Jan 13 09:36:52 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elf32-ppc.c (ppc_elf_create_dynamic_sections): New function to
	create the .got and .got.neg sections.
	(ppc_elf_size_dynamic_sections): Call it.
	(ppc_elf_check_relocs): Call it.
	(ppc_elf_size_dynamic_sections): Support .got.neg, just like .got.
	(ppc_elf_check_relocs): Add error messages for relocations we
	don't yet support.  Do not include R_PPC_SDAREL16 like a GOT
	relocation.

Fri Jan 12 15:27:59 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elf32-ppc.c (ppc_elf_fake_sections): Define, and handle the new
	section flags for V.4 and eabi.

Fri Jan 12 13:59:16 1996  Ian Lance Taylor  <ian@cygnus.com>

	* elf.c (assign_file_positions_for_segments): If a segment
	contains no sections, don't mark it as readable.

	* elf-bfd.h (_bfd_elf_section_from_bfd_section): Declare.
	* elfcode.h (_bfd_elf_section_from_bfd_section): Don't declare.

	* elf.c (_bfd_elf_print_private_bfd_data): Dump contents of
	dynamic section, if there is one.
	* elf-bfd.h (struct elf_size_info): Add swap_dyn_in field.
	(bfd_elf32_swap_dyn_in): Change type of second parameter to PTR.
	(bfd_elf64_swap_dyn_in): Likewise.
	* elfcode.h (elf_swap_dyn_in): Change type of second parameter to
	PTR.
	(NAME(_bfd_elf,size_info)): Initialize swap_dyn_in field.

	* elf32-i386.c (elf_i386_size_dynamic_sections): Don't create a
	DT_TEXTREL entry because of .rel.plt.  From Martin Pirker
	<pirker@eiunix.tuwien.ac.at>.

Thu Jan 11 17:06:14 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* section.c (SEC_{EXCLUDE,SORT_ENTRIES}): New section flags for
	PowerPC V.4 and eabi.
 	* bfd-in2.h: Regenerate.
	* libfd.h: Regenerate.

	* elfxx-target.h (TARGET_{BIG,LITTLE}_SYM): Add new flags.

	* elf32-ppc.c (ppc_elf_section_from_shdr): Support SHT_ORDERED
	section type and SHF_EXCLUDE section flag, turning them into the
	appropriate bfd section flag.

Thu Jan 11 11:23:30 1996  Ian Lance Taylor  <ian@cygnus.com>

	* xcofflink.c (xcoff_link_add_symbols): Create the special
	sections if we see a DYNAMIC object, in case that is the only
	XCOFF input object we see.

	* elf32-mips.c: Extensive changes for a start at dynamic linking
	support, from Kazumoto Kojima <kkojima@info.kanagawa-u.ac.jp>.

	* elf-bfd.h (struct elf_backend_data): Add type_change_ok field.
	(struct elf_backend_data): Remove
	elf_backend_create_program_headers field.  Add
	elf_backend_additional_program_headers and
	elf_backend_modify_segment_map fields.
	* elfxx-target.h (elf_backend_type_change_ok): Define if not
	defined.
	(elf_backend_additional_program_headers): Likewise.
	(elf_backend_modify_segment_map): Likewise.
	(elf_backend_create_program_headers): Don't define.
	(elfNN_bed): Change to account for field changes.
	* elf.c (assign_file_positions_for_segments): Call new
	modify_segment_map backend function.  Don't call old
	create_program_headers backend function.
	(get_program_header_size): Call additional_program_headers rather
	than create_program_headers.
	* elflink.h (elf_link_add_object_symbols): Initialize
	type_change_ok from new backend field.
	(elf_link_output_extsym): Don't warn if _rld_new_interface is
	defined.
	(elf_reloc_link_order): Treat a reloc against a defined symbol as
	a reloc against the appropriate section.

	* elf-bfd.h (struct bfd_elf_section_data): Add tdata field.
	(struct elf_obj_tdata): Rename ppc_flags_init field to flags_init.
	(elf_flags_init): Rename from elf_ppc_flags_init.
	* elf32-ppc.c (ppc_elf_set_private_flags): Use elf_flags_init, not
	elf_ppc_flags_init.
	(ppc_elf_copy_private_bfd_data): Likewise.
	(ppc_elf_merge_private_bfd_data): Likewise.

	* elf32-m68k.c (howto_table): Change src_mask to 0 for all
	relocation entries.

Tue Jan  9 15:22:53 1996  David Mosberger-Tang  <davidm@azstarnet.com>

	* coff-alpha.c (alpha_relocate_section): During final link, allow
 	output .lita section to be bigger than 64k by adjusting gp value
 	on a per-input section basis.
	* libecoff.h (struct ecoff_tdata): Add issued_multiple_gp_warning
	field.
	(struct ecoff_section_tdata): Add gp field.

Tue Jan  9 12:00:36 1996  Ian Lance Taylor  <ian@cygnus.com>

	Handle Alpha ECOFF changes in OSF/1 3.2.
	* libecoff.h (struct ecoff_backend_data): Add get_elt_at_filepos
	field.
	* coff-alpha.c: Include "aout/ar.h".
	(alpha_ecoff_get_relocated_section_contents): Don't require an
	ALPHA_R_IGNORE reloc after an ALPHA_R_GPDISP reloc, since OSF/1
	3.2 doesn't generate one.
	(alpha_relocate_section): Likewise.
	(alpha_ecoff_slurp_armap): Define.
	(alpha_ecoff_slurp_extended_name_table): Define.
	(alpha_ecoff_construct_extended_name_table): Define.
	(alpha_ecoff_truncate_arname): Define.
	(alpha_ecoff_write_armap): Define.
	(alpha_ecoff_generic_stat_arch_elt): Define.
	(alpha_ecoff_update_armap_timestamp): Define.
	(ARFZMAG): Define.
	(alpha_ecoff_read_ar_hdr): New static function.
	(alpha_ecoff_get_elt_at_filepos): New static function.
	(alpha_ecoff_openr_next_archived_file): New static function.
	(alpha_ecoff_get_elt_at_index): New static function.
	(alpha_ecoff_backend_data): Initialize get_elt_at_filepos field.
	(ecoffalpha_little_vec): Change BFD_JUMP_TABLE_ARCHIVE from
	_bfd_ecoff to alpha_ecoff.
	* ecoff.c (ecoff_link_add_archive_symbols): Use get_elt_at_filepos
	field from backend structure, rather than always calling
	_bfd_get_elt_at_filepos.
	* coff-mips.c (mips_ecoff_backend_data): Initialize
	get_elt_at_filepos field.
	* archive.c (_bfd_generic_read_ar_hdr_mag): New function, copied
	from _bfd_generic_read_ar_hdr with minor changes.
	(_bfd_generic_read_ar_hdr): Use _bfd_generic_read_ar_hdr_mag.
	* libbfd-in.h (_bfd_generic_read_ar_hdr_mag): Declare.
	* libbfd.h: Rebuild.

	* bfd-in.h (BFD_IN_MEMORY): Define.
	* libbfd-in.h (struct bfd_in_memory): Define.
	* libbfd.c (bfd_read): Handle BFD_IN_MEMORY flag.
	(bfd_get_file_window): Don't try to map a BFD_IN_MEMORY file.
	(bfd_write, bfd_stat): Abort if BFD_IN_MEMORY is set.
	(bfd_tell, bfd_flush, bfd_seek): Handle BFD_IN_MEMORY flag.
	* bfd.c (struct _bfd): Change iostream field from char * to PTR.
	(bfd_get_size): Handle BFD_IN_MEMORY flag.
	* cache.c (bfd_cache_close): Ignore BFD_IN_MEMORY files.
	(bfd_open_file): Cast to PTR, not char *, when setting iostream.
	(bfd_cache_lookup_worker): Abort if BFD_IN_MEMORY is set.
	* opncls.c (bfd_fdopenr): Cast to PTR, not char *, when setting
	iostream.
	(bfd_openstreamr): Likewise.
	* aoutx.h (NAME(aout,some_aout_object_p)): Only fstat iostream if
	BFD_IN_MEMORY is not set.
	* riscix.c (riscix_some_aout_object_p): Likewise.
	* bfd-in2.h, libbfd.h: Rebuild.

	* targets.c (bfd_target): Add _bfd_get_elt_at_index field.
	(BFD_JUMP_TABLE_ARCHIVE): Add _get_elt_at_index.
	(bfd_get_elt_at_index): Define.
	* archive.c (_bfd_generic_get_elt_at_index): Rename from
	bfd_get_elt_at_index.  Change index parameter from int to
	symindex.
	* libbfd-in.h (_bfd_generic_get_elt_at_index): Declare.
	(_bfd_noarchive_get_elt_at_index): Define.
	(_bfd_archive_bsd_get_elt_at_index): Define.
	(_bfd_archive_coff_get_elt_at_index): Define.
	* bfd-in2.h, libbfd.h: Rebuild.
	* aout-target.h (MY_get_elt_at_index): Define if not defined.
	* coff-rs6000.c (xcoff_get_elt_at_index): Define.
	* ieee.c (ieee_get_elt_at_index): Define.
	* libecoff.h (_bfd_ecoff_get_elt_at_index): Define.
	* oasys.c (oasys_get_elt_at_index): Define.
	* som.c (som_get_elt_at_index): Define.

	* ecoff.c (_bfd_ecoff_find_nearest_line): Don't restrict line
	numbers to the .text section.

Mon Jan  8 17:00:57 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ieee.c (ieee_write_debug_part): Change return type to boolean.
	If there is a SEC_DEBUGGING section, get the contents of the debug
	information part from it.
	(ieee_set_section_contents): Store the contents of a SEC_DEBUGGING
	section in memory.
	(ieee_write_object_contents): Check ieee_write_debug_part return.

Thu Jan  4 17:12:37 1996  Fred Fish  <fnf@cygnus.com>

	* config.bfd (i[345]86-*-freebsd*): Add target.
	* configure.in (i386freebsd_vec): Add vec.
	* configure: Regenerate.
	* Makefile.in (BFD32_BACKENDS): Add i386freebsd.o.
	(BFD32_BACKENDS_CFILES): Add i386freebsd.c.
	Rebuild dependencies..
	* freebsd.h: New file.
	* i386freebsd.c: New file.
	* targets.c (i386freebsd_vec): Declare.
	(bfd_target_vector): Add i386freebsd_vec.
	* i386linux.c (SEGMENT_SIZE): Define as TARGET_PAGE_SIZE
	* i386netbsd.c (SEGMENT_SIZE):  Define as TARGET_PAGE_SIZE

Thu Jan  4 16:27:46 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ieee.c (ieee_slurp_debug): New static function.
	(ieee_object_p): Call it.
	(ieee_slurp_section_data): Skip debugging sections.
	(ieee_get_reloc_upper_bound): Likewise.
	(ieee_get_section_contents): Likewise.
	(ieee_canonicalize_reloc): Likewise.
	(ieee_write_section_part): Likewise.
	(ieee_write_debug_part): Likewise.
	(ieee_write_data_part): Likewise.
	(init_for_output): Likewise.

Wed Jan  3 19:42:47 1996  Michael Meissner  <meissner@wogglebug.tiac.net>

	* elf32-ppc.c (ppc_elf_relocate_section): Make @GOT relocations
	work.
	(ppc_elf_howto_raw): Just use bfd_elf_generic_reloc for all howto
	relocs, since ppc_elf_relocate_section handles the linker case.
	(ppc_elf_{addr16_ha,got16,toc16,brtaken}_reloc): Delete, no longer
	used.
	(ppc_elf_{addr16_ha,got16,toc16,brtaken}_inner): Merge these into
	ppc_elf_relocate_section since that is now the only caller.
	(ppc_elf_relocate_section): Ditto.

Wed Jan  3 15:11:30 1996  Ian Lance Taylor  <ian@cygnus.com>

	* coffcode.h (coff_write_object_contents): If we don't know the
	section of the entry point for an XCOFF executable, always set the
	entry address to -1.

Tue Jan  2 14:17:15 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* elf.c (bfd_section_from_shdr): Add support for note sections.

Tue Jan  2 13:10:25 1996  Ian Lance Taylor  <ian@cygnus.com>

	* bfd-in.h (struct _symbol_info): Add stab_type field.
	* bfd-in2.h: Rebuild.
	* aoutx.h (NAME(aout,get_symbol_info)): Set stab_type.

	* elf32-ppc.c: Remove trailing newline from calls to
        _bfd_error_handler.
	(ppc_elf_merge_private_bfd_data): Only warn about endianness
	difference if target endianness is known.

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