2009-06-03  Ulrich Weigand  <uweigand@de.ibm.com>

	* symconst.h (btLong64, btULong64, btLongLong64, btULongLong64,
	btAdr64, btInt64, btUInt64): New defines.

2009-04-21  Kai Tietz  <kai.tietz@onevision.com>

	* pe.h (pex64_runtime_function): New structure.
	(external_pex64_runtime_function): Likewise.
	(pex64_unwind_code): Likewise.
	(external_pex64_unwind_code): Likewise.
	(pex64_unwind_info): Likewise.
	(external_pex64_unwind_info): Likewise.
	(external_pex64_scope): Likewise.
	(pex64_scope): Likewise.
	(pex64_scope_entry):  Likewise.
	(external_pex64_scope_entry): Likewise.
	(PEX64_IS_RUNTIME_FUNCTION_CHAINED): New macro.
	(PEX64_GET_UNWINDDATA_UNIFIED_RVA): Likewise.
	(PEX64_UNWCODE_CODE): Likewise.
	(PEX64_UNWCODE_INFO): Likewise.
	(UWOP_...): Add defines for unwind code.
	(UNW_FLAG_...): Add defined for unwind info flags.
	(PEX64_SCOPE_ENTRY_SIZE): New macro.
	(PEX64_UWI_VERSION): Likewise.
	(PEX64_UWI_FLAGS): Likewise.
	(PEX64_UWI_FRAMEREG): Likewise.
	(PEX64_UWI_FRAMEOFF): Likewise.
	(PEX64_UWI_SIZEOF_UWCODE_ARRAY): Likewise.
	(PEX64_OFFSET_TO_UNWIND_CODE): Likewise.
	(PEX64_OFFSET_TO_HANDLER_RVA): Likewise.
	(PEX64_OFFSET_TO_SCOPE_COUNT): Likewise.
	(PEX64_SCOPE_ENTRY): Likewise.

2009-04-17  H.J. Lu  <hongjiu.lu@intel.com>

	* pe.h (IMAGE_SUBSYSTEM_EFI_ROM): Renamed to ...
	(IMAGE_SUBSYSTEM_SAL_RUNTIME_DRIVER): This.

2009-04-01  Richard Sandiford  <r.sandiford@uk.ibm.com>

	* xcoff.h (xcoff_link_hash_table): Move to bfd/xcofflink.c.

2009-03-14  Richard Sandiford  <r.sandiford@uk.ibm.com>

	* xcoff.h (XCOFF_EXPALL, XCOFF_EXPFULL): New flags.
	(xcoff_loader_info): Add auto_export_flags.

2009-03-14  Richard Sandiford  <r.sandiford@uk.ibm.com>

	* internal.h (C_AIX_WEAKEXT): New macro.
	(C_WEAKEXT): Use the GNU definition in the generic part of the file,
	and conditionally reset it to C_AIX_WEAKEXT in the XCOFF part of
	the file.
	(CSECT_SYM_P): New macro.
	* xcoff.h (L_WEAK): Define.
	(EXTERN_SYM_P): New macro.

2009-03-14  Richard Sandiford  <r.sandiford@uk.ibm.com>

	* xcoff.h (XCOFF_ALLOCATED): New flag.

2009-03-14  Richard Sandiford  <r.sandiford@uk.ibm.com>

	* xcoff.h (XCOFF_CALLED, XCOFF_IMPORT): Update comments.
	(XCOFF_WAS_UNDEFINED): New flag.
	(xcoff_link_hash_table): Add an "rtld" field.

2009-03-14  Dave Korn  <dave.korn.cygwin@gmail.com>

	* internal.h (struct internal_extra_pe_aouthdr):  Correct type
	of DllCharacteristics flags field to unsigned.
	* pe.h (IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE,
	IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE,
	IMAGE_DLL_CHARACTERISTICS_NX_COMPAT,
	IMAGE_DLLCHARACTERISTICS_NO_ISOLATION,
	IMAGE_DLLCHARACTERISTICS_NO_SEH,
	IMAGE_DLLCHARACTERISTICS_NO_BIND,
	IMAGE_DLLCHARACTERISTICS_WDM_DRIVER,
	IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE):  New macros to
	define flag bit values for DllCharacteristics field of PEAOUTHDR,
	PEPAOUTHDR.

2008-12-23  Johan Olmutz Nielsen  <jnielsen@ddci.com>

	* ti.h (COFF_ADJUST_SCNHDR_OUT_PRE): Define.

2008-06-17  Nick Clifton  <nickc@redhat.com>

	* ti.h (GET_SCNHDR_NLNNO): Provide an alternative version of this
	macro which does not trigger an array bounds warning in gcc.
	(PUT_SCNHDR_NLNNO): Likewise.
	(GET_SCNHDR_FLAGS): Likewise.
	(PUT_SCNHDR_FLAGS): Likewise.
	(GET_SCNHDR_PAGE): Likewise.
	(PUT_SCNHDR_PAGE): Likewise.

2007-11-05  Danny Smith  <dannysmith@users.sourceforge.net>

	* pe.h (COFF_ENCODE_ALIGNMENT) Define.

2007-08-02  H.J. Lu  <hongjiu.lu@intel.com>

	* pe.h (IMAGE_SCN_ALIGN_POWER_BIT_POS): New.
	(IMAGE_SCN_ALIGN_POWER_BIT_MASK): Likewise.
	(IMAGE_SCN_ALIGN_POWER_NUM): Likewise.
	(IMAGE_SCN_ALIGN_POWER_CONST): Likewise.
	(IMAGE_SCN_ALIGN_128BYTES): Likewise.
	(IMAGE_SCN_ALIGN_256BYTES): Likewise.
	(IMAGE_SCN_ALIGN_512BYTES): Likewise.
	(IMAGE_SCN_ALIGN_1024BYTES): Likewise.
	(IMAGE_SCN_ALIGN_2048BYTES): Likewise.
	(IMAGE_SCN_ALIGN_4096BYTES): Likewise.
	(IMAGE_SCN_ALIGN_8192BYTES): Likewise.
	(IMAGE_SCN_ALIGN_1BYTES): Redefined with
	IMAGE_SCN_ALIGN_POWER_CONST.
	(IMAGE_SCN_ALIGN_2BYTES): Likewise.
	(IMAGE_SCN_ALIGN_4BYTES): Likewise.
	(IMAGE_SCN_ALIGN_8BYTES): Likewise.
	(IMAGE_SCN_ALIGN_16BYTES): Likewise.
	(IMAGE_SCN_ALIGN_32BYTES): Likewise.
	(IMAGE_SCN_ALIGN_64BYTES): Likewise.

2007-07-12  Kai Tietz   <kai.tietz@onevision.com>

	* internal.h (struct internal_syment): Use bfd_hostptr_t for
	_n_zeroes and _n_offset fields.

2007-04-27  Alan Modra  <amodra@bigpond.net.au>

	* rs6000.h: Write Mimi's name in ASCII.

2007-03-19  H.J. Lu  <hongjiu.lu@intel.com>

	* internal.h (internal_extra_pe_aouthdr): Add Magic,
	MajorLinkerVersion, MinorLinkerVersion, SizeOfCode,
	SizeOfInitializedData, SizeOfUninitializedData,
	AddressOfEntryPoint, BaseOfCode and BaseOfData.

2006-12-05  Michael Tautschnig  <tautschn@model.in.tum.de>
	    Nick Clifton  <nickc@redhat.com>

	* external.h (struct external_aouthdr): Add ATTRIBUTE_PACKED.
	(struct external_syment): Likewise.
	(union external_auxent): Likewise.

2006-11-14  Phil Lello  <phil.lello@homecall.co.uk>

	* pe.h: Added defines for IMAGE_SUBSYSTEM_EFI_ROM and
	IMAGE_SUBSYSTEM_XBOX.
	* internal.h: Added defines for PE directory entry types.
	NB: in internal.h because IMAGE_NUMBEROF_DIRECTORY_ENTRYIES is in
	pe.h

2006-09-20  Kai Tietz  <Kai.Tietz@onevision.com>

	* external.h: Add proper external_aouthdr64 structure (without
	data_start member).
	(AOUTHDRSZ64): Set according structure size.
	(AOUTHDR64): As typedef of external_aouthdr64 structure.
	* internal.h: Add relocation identifiers for coff.
	* pe.h:	Add define IMAGE_FILE_MACHINE_AMD64 the coff signature.
	(PEPAOUTHDR): Adjust structure to have proper size (using AOUTHDR64).
	(PEPAOUTSZ): Calculated size of 240.
	* x86_64.h: Coff information for x86_64 (AMD64).

2006-02-05  Arnold Metselaar  <arnold.metselaar@planet.nl>

	* internal.h: Add relocation number R_IMM24 for Z80.

2005-10-25  Arnold Metselaar  <arnold.metselaar@planet.nl>

	* internal.h: Add relocation number for Z80
	* z80.h: New file.

2005-08-18  Alan Modra  <amodra@bigpond.net.au>

	* a29k.h: Delete.

2005-07-14  Daniel Marques  <marques@cs.cornell.edu>

	* alpha.h (ALPHA_ECOFF_COMPRESSEDMAG): Define.
	* ecoff.h (ALPHA_MAGIC_COMPRESSED): Define.

2005-05-10  Nick Clifton  <nickc@redhat.com>

	* Update the address and phone number of the FSF organization in
	the GPL notices in the following files:
	a29k.h,	alpha.h, apollo.h, arm.h, aux-coff.h, ecoff.h, external.h,
	go32exe.h, h8300.h, h8500.h, i386.h, i860.h, i960.h, ia64.h,
	internal.h, m68k.h, m88k.h, maxq.h, mcore.h, mips.h, mipspe.h,
	or32.h, pe.h, powerpc.h, rs6k64.h, sh.h, sparc.h, ti.h, tic30.h,
	tic4x.h, tic54x.h, tic80.h, w65.h, we32k.h, xcoff.h, z8k.h
	
2005-02-21  Alan Modra  <amodra@bigpond.net.au>

	* xcoff.h (struct xcoff_loader_info): Warning fix.

2005-01-10  Inderpreet Singh <inderpreetb@noida.hcltech.com>

	* maxq.h (F_MAXQ10, F_MAXQ20): Define.

2004-11-08  Inderpreet Singh   <inderpreetb@nioda.hcltech.com>
	    Vineet Sharma      <vineets@noida.hcltech.com>

	* maxq.h: New file: Defintions for the maxq port.

2004-11-08  Aaron W. LaFramboise <aaron98wiridge9@aaronwl.com>

	* pe.h (IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY): Define.
	(IMAGE_WEAK_EXTERN_SEARCH_LIBRARY): Same.
	(IMAGE_WEAK_EXTERN_SEARCH_ALIAS): Same.

2004-08-13  Mark Kettenis  <kettenis@gnu.org>

	* symconst.h (langMax): Fix typo in comment.

2004-04-23  Chris Demetriou  <cgd@broadcom.com>

	* mips.h (MIPS_R_RELHI, MIPS_R_RELLO, MIPS_R_SWITCH): Remove
	(MIPS_R_PCREL16): Update comment.
	* ecoff.h (struct ecoff_value_adjust): Remove structure.
	(struct ecoff_debug_info): Remove 'adjust' member.

2004-04-20  DJ Delorie  <dj@redhat.com>

	* internal.h (R_SECREL32): Add.

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