2000-02-03  H.J. Lu  <hjl@gnu.org>

	* arm-oabi.h: Duplicate changes made to arm.h on Jan. 27,
	2000 by Thomas de Lellis  <tdel@windriver.com>.

2000-01-27  Thomas de Lellis  <tdel@windriver.com>

        * arm.h (STT_ARM_TFUNC): Define in terms of STT_LOPROC.
	(STT_ARM_16BIT): New flag.  Denotes a label that was defined in
	Thumb block but was does not identify a function.

2000-01-20  Nick Clifton  <nickc@cygnus.com>

	* common.h (EM_MCORE): Fix spelling of Motorola.
	* mcore.h (EM_MCORE): Fix spelling of Motorola.

2000-01-13  Nick Clifton  <nickc@cygnus.com>

	* common.h (EM_S370): Change comment - this is now the IBM
	System/370.
	(EM_IA_64): Change comment - this is now the IA-64.

2000-01-11  Nick Clifton  <nickc@cygnus.com>

	* common.h (DT_ENCODING): Fix definition of this value.
	(DT_LOOS): Fix definition of this value.
	(DT_HIOS): Fix definition of this value.
	(OLD_DT_LOOS): Value of DT_LOOS before Oct 4, 1999 draft
	of ELF spec changed it.
	(OLD_DT_HIOS): Value of DT_HIOS before Oct 4, 1999 draft
	of ELF spec changed it.

2000-01-10  Egor Duda  <deo@logos-m.ru>

	* common.h (NT_WIN32PSTATUS): Define.  (cygwin elf core dumps). 

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

	* mips.h (STO_*): Redefine in terms of STV_* values now in
	common.h. 

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

	* common.h: Upgrade to match Oct4, 1999 Draft ELF ABI Spec.
	(EM_MIPS_RS3_LE): New machine number.
	(EM_RCE): New machine number.
	(EM_MMA): New machine number.
	(EM_PCP): New machine number.
	(EM_NCPU): New machine number.
	(EM_NDR1): New machine number.
	(EM_STARCORE): New machine number.
	(EM_ME16): New machine number.
	(EM_ST100): New machine number.
	(EM_TINYJ): New machine number.
	(EM_FX66): New machine number.
	(EM_ST9PLUS): New machine number.
	(EM_ST7): New machine number.
	(EM_68HC16): New machine number.
	(EM_68HC11): New machine number.
	(EM_68HC08): New machine number.
	(EM_68HC05): New machine number.
	(EM_SVX): New machine number.
	(EM_VAX): New machine number.
	(PF_MASKOS): Change value.
	(SHT_INIT_ARRAY): New value for sh_type field.
	(SHT_FINI_ARRAY): New value for sh_type field.
	(SHT_PREINIT_ARRAY): New value for sh_type field.
	(SHT_HIUSER): Change value.
	(SHF_MERGE): New valye for sh_flags field.
	(SHF_STRINGS): New valye for sh_flags field.
	(SHF_INFO_LINK): New valye for sh_flags field.
	(SHF_OS_NONCONFORMING): New valye for sh_flags field.
	(SHF_MASKOS): Change value.
	(ELF_ST_VISIBILITY): New macro.
	(ELF_ST_OTHER): New macro.
	(STT_COMMON): New symbol type.
	(STV_DEFAULT): Value for symbol visibility.
	(STV_INTERNAL): Value for symbol visibility.
	(STV_HIDDEN): Value for symbol visibility.
	(STV_PROTECTED): Value for symbol visibility.
	(DT_RUNPATH): New dynamic section tag.
	(DT_FLAGS): New dynamic section tag.
	(DT_ENCODING): New dynamic section tag.
	(DT_PREINIT_ARRAY): New dynamic section tag.
	(DT_PREINIT_ARRAYSZ): New dynamic section tag.
	(DT_LOPROC): New dynamic section tag index.
	(DT_HIPROC): New dynamic section tag index.
	(DF_ORIGIN): Value for dynamic section flag.
	(DF_SYMBOLIC): Value for dynamic section flag.
	(DF_TEXTREL): Value for dynamic section flag.
	(DF_BIND_NOW): Value for dynamic section flag.

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

	* i960.h (reloc-macros.h):  Include using relative dir elf/.
	* i386.h (reloc-macros.h):  Include using relative dir elf/.
	* hppa.h (reloc-macros.h):  Include using relative dir elf/.
	
1999-12-07  Jim Blandy  <jimb@cygnus.com>

	* common.h (NT_PRXFPREG): New definition.

Wed Dec  1 03:02:15 1999  Jeffrey A Law  (law@cygnus.com)

	* mn10300.h (E_MN10300_MACH_AM33): Define.

Mon Oct 11 22:42:37 1999  Jeffrey A Law  (law@cygnus.com)

	* hppa.h (PF_HP_PAGE_SIZE): Define.
	(PF_HP_FAR_SHARED, PF_HP_NEAR_SHARED, PF_HP_CODE): Likewise.
	(PF_HP_MODIFY, PF_HP_LAZYSWAP, PF_HP_SBP): Likewise.

Mon Oct  4 17:42:38 1999  Doug Evans  <devans@canuck.cygnus.com>

	* m32r.h (E_M32RX_ARCH): Define.

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

	* hppa.h: Add DT_HP_GST_SIZE, DT_HP_GST_VERSION, and DT_HP_GST_HASHVAL.

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

	* pj.h: New file.
	* common.h (EM_PJ): Define.

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

	* hppa.h: Add HPUX specific symbol type definitions.

	* hppa.h: Add HPUX specific dynamic and program header table
	specific definitions.

1999-08-31  Scott Bambrough <scottb@netwinder.org>

	* common.h (NT_TASKSTRUCT): Define.

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

	* sparc.h (EF_SPARC_SUN_US3): Define in Cheetah extensions
	flag (as per SCD2.4.1).

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

	* sparc.h (ELF64_R_TYPE_DATA): Only use ELF64_R_TYPE bits, not
	ELF64_R_SYM bits.

1999-06-21  Philip Blundell  <pb@nexus.co.uk>

	* arm.h (EF_SOFT_FLOAT, F_SOFT_FLOAT): Define.

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

	* m68k.h (EF_CPU32): Move definition inside multiple inclusion
	guard.

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

	* sparc.h (ELF64_R_TYPE_DATA): Sign extend the value.
	(ELF64_R_TYPE_INFO): Mask out all but low 24 bits of data.
	(DT_SPARC_PLTFMT): Delete.
	Based on a patch from Jakub Jelinek.

Mon Jun 21 16:36:02 1999  Jeffrey A Law  (law@cygnus.com)

	* hppa.h (elf_hppa_reloc_type): Renamed from elf32_hppa_reloc_type.

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

	* sparc.h (R_SPARC_max_std): Define.

Wed Jun  9 15:16:34 1999  Jeffrey A Law  (law@cygnus.com)

	* hppa.h: Update with various changes from newest PA ELF
	specifications.

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

	* common.h (EM_PPC64): Define.

1999-06-02  Stu Grossman  <grossman@babylon-5.cygnus.com>

	* dwarf.h: Add LANG_JAVA.
	* dwarf2.h: Add DW_LANG_Java.

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

	* common.h (ELFOSABI_ARM): Define.

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

	* reloc-macros.h: Update comment.

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

	* i960.h: New file.

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

	* mcore.h (R_MCORE_COPY): Define.
	(R_MCORE_GLOB_DAT): Define.
	(R_MCORE_JUMP_SLOT): Define.

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

	* mcore.h (R_MCORE_RELATIVE): Define.

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

        * m68k.h (EF_CPU32): Define.

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

	* reloc-macros.h (START_RELOC_NUMBERS): Prepend an underscore to
	fake reloc entry name (if possible), in order to avoid conflicts
	with typedefs of the same name.

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

	* mips.h (EF_MIPS_32BITMODE): New.

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

	* mcore.h: New header file.  Defines for Motorola's MCore
	processor.

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

	* common.h: Add new constants defined in: "System V Application
	Binary Interface - DRAFT - April 29, 1998" found at the web site:
	http://www.sco.com/developer/gabi/contents.html

	(EM_MMA): Removed.  Replaced with EM_MCORE as Motorolla own this
	value.

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

	* reloc-macros.h: Fixed to not generate an enum with a trailing
	comma.

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

	* mips.h (E_MIPS_MACH_5000): New.

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

	* common.h: Add definitions for a few more Solaris ELF extensions.

Thu Feb 18 18:58:26 1999  Ian Lance Taylor  <ian@cygnus.com>

	* external.h: Only use attribute if __GNUC__ is defined.

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

	Patch submitted by: Scott Bambrough <scottb@corelcomputer.com>

	* elf/external.h: struct Elf_External_Versym must be packed on
	ARM.  Code uses sizeof(Elf_External_Versym) and assumes it is
	equal to sizeof(char[2]).  Reported by Jim Pick <jim@jimpick.com>

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

	* dwarf2.h (DWARF2_External_ARange): New structure.
	(DWARF2_Internal_ARange): New structure.

Mon Feb  1 11:33:56 1999  Catherine Moore  <clm@cygnus.com>

        * arm.h:  Renumber relocs to conform to standard.
        (EF_NEW_ABI):  Define.
        (EF_OLD_ABI):  Define.
        * arm-oabi.h:  New file.

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

	* fr30.h: Add R_FR30_GNU_VT{INHERIT,ENTRY} relocs.

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

	* dwarf2.h: Add typedefs for structures found in dwarf2 sections.

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

	* mips.h (E_MIPS_MACH_4111): New.

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

	* mips.h (EF_MIPS_ABI,E_MIPS_ABI_O32,E_MIPS_ABI_O64,
	E_MIPS_ABI_EABI32,E_MIPS_ABI_EABI64):

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

	* fr30.h: Add R_FR30_48 reloc.

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

	* mips.h: Add external data type for conflict section.

	* mips.h: Add more LL_* options from Irix 6.5.

	* mips.h: Add R_MIPS_JALR and adjust R_MIPS_max appropriately.

Tue Nov 10 15:12:28 1998  Nick Clifton  <nickc@cygnus.com>

	* common.h (EM_CYGNUS_FR30): Reduce to a 16 bit value.

Tue Nov 10 15:17:28 1998  Catherine Moore  <clm@cygnus.com>

        * d10v.h:  Add vtable relocs.

Wed Nov  4 15:56:50 1998  Nick Clifton  <nickc@cygnus.com>

	* common.h (EM_CYGNUS_FR30): New machine number.

	* fr30.h: New file: Definitions for the FR30.

Fri Oct 30 11:54:15 1998  Catherine Moore  <clm@cygnus.com>

        From Philip Blundell <pb@nexus.co.uk>:
        * arm.h (R_ARM_COPY, et al.): New relocs, used by Linux for PIC.
        (EF_ALIGN8): New flag.

Tue Oct 20 11:19:50 1998  Ian Lance Taylor  <ian@cygnus.com>

	* common.h (NT_LWPSTATUS): Close comment accidentally left open.

Mon Oct 19 20:24:11 1998  Catherine Moore  <clm@cygnus.com>

        * sh.h:  Add vtable relocs.

Mon Oct 19 01:44:42 1998  Felix Lee  <flee@cygnus.com>

	* common.h (NT_PSTATUS, NT_FPREGS, NT_PSINFO,
 	NT_LWPSTATUS,NT_LWPSINFO): added.
	* internal.h (Elf_Internal_Note): new structure members.

Fri Oct 16 14:11:25 1998  Catherine Moore  <clm@cygnus.com>

        * m32r.h:  Add vtable relocs.

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

        * sparc.h:  Add vtable relocs.

Mon Oct  5 09:39:22 1998  Catherine Moore  <clm@cygnus.com>

        * v850.h:  Add vtable relocs.

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

	* i386.h (R_386_max): Change from 252 to 24.

Mon Sep 21 12:24:44 1998  Catherine Moore  <clm@cygnus.com>

        * i386.h:  Change vtable reloc numbers.

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

	* m68k.h: Add vtable relocs and R_68K_max.

Tue Sep 15 09:56:49 CDT 1998  Catherine Moore  <clm@cygnus.com>

       * arm.h:  Add vtable relocs.

Mon Aug 31 11:25:27 1998  Catherine Moore  <clm@cygnus.com>

        * arm.h:  Define STT_ARM_TFUNC.  Remove ST_THUMB_xxxx
        definitions.

Sat Aug 29 22:25:51 1998  Richard Henderson  <rth@cygnus.com>

	* i386.h: Add vtable relocs.

1998-08-25 16:42  Ulrich Drepper  <drepper@cygnus.com>

	* common.h: Add SYMINFO_* macros to access Elf*_Syminfo information.

	* external.h: Add Elf_External_Syminfo definition.

	* internal.h: Add Elf_Internal_Syminfo, Elf32_Internal_Syminfo,
	and Elf64_Syminfo definitions.

Sun Aug  9 20:26:49 CDT 1998  Catherine Moore  <clm@cygnus.com>

       * arm.h:  Add ST_THUMB definitions.

Wed Aug  5 15:52:35 1998  Nick Clifton  <nickc@cygnus.com>

	* arm.h: Add ELF header flags to specify compile time optins:
	EF_INTERWORK: New flag.
	EF_APCS_26: New flag.
	EF_APCS_FLOAT: New flag.
	EF_PIC: New flag.

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

	* mips.h: Add missing RHF_* constants.

Fri Jul 31 10:01:40 1998 Catherine Moore  <clm@cygnus.com>

        * arm.h: Add R_ARM_THM_PC9 relocation.

1998-07-30 16:25  Ulrich Drepper  <drepper@cygnus.com>

	* common.h: Add new DT_* entries and there flag macros from Solaris.

Tue Jul 28 18:14:07 1998  Stan Cox  <scox@equinox.cygnus.com>

	* sparc.h: (R_SPARC_REV32): Added for little endian data e.g. sparc 86x.

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

	* mn10300.h: Add R_MN10300_24 relocation.

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

	* mips.h: Add MIPS64 relocation names and values.

Wed Jul 22 19:29:00 Catherine Moore  <clm@cygnus.com>

        * arm.h: Rename relocations.

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

	* ppc.h: Define enum as elf_ppc_reloc_type.

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

	* reloc-macros.h: New file.  Provides relocation macros:
	START_RELOC_NUMBERS, RELOC_NUMBER, FAKE_RELOC, EMPTY_RELOC and
	END_RELOC_NUMBERS used by other elf header files.

	* alpha.h: Use reloc-macros.h.
	* arc.h: Use reloc-macros.h.
	* arm.h: Use reloc-macros.h.
	* d10v.h: Use reloc-macros.h.
	* d30v.h: Use reloc-macros.h.
	* hppa.h: Use reloc-macros.h.
	* i386.h: Use reloc-macros.h.
	* m32r.h: Use reloc-macros.h.
	* m68k.h: Use reloc-macros.h.
	* mips.h: Use reloc-macros.h.
	* mn10200.h: Use reloc-macros.h.
	* mn10300.h: Use reloc-macros.h.
	* ppc.h: Use reloc-macros.h.
	* sh.h: Use reloc-macros.h.
	* sparc.h: Use reloc-macros.h.
	* v850.h: Use reloc-macros.h.

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

	* mn10300.h: Rewrite relocation definition using macros.
	* mips.h: Likewise.
	* ppc.h: Likewise.
	* alpha.h: Likewise.
	* arm.h: Likewise.
	* d10v.h: Likewise.
	* d30v.h: Likewise.
	* m32r.h: Likewise.
	* m68k.h: Likewise.
	* mn10200.h: Likewise.
	* sh.h: Likewise.
	* sparc.h: Likewise.

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

	* arm.h: New file.
	* d10v.h: New file.
	* d30v.h: New file.
	* i386.h: New file.
	* m68k.h: New file.
	* mn10200.h: New file.
	* sh.h: New file.

	* mips.h: Add R_MIPS_* and SHT_MIPS_* entries.

	* mn10300.h: Add R_MN10300_* entries.

	* ppc.h: Add R_PPC_* entries.

1998-07-20 07:11  Ulrich Drepper  <drepper@cygnus.com>

	* mips.h: Add ODK_*, OEX_*, OPAD_*, OHW_*, and OGP_* constants.
	Define Elf32_External_Lib.

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

	* mips.h (PT_MIPS_OPTIONS): New symbol.
	Add lots of DT_MIPS_* symbols.

Fri Jun 26 10:46:35 1998  Jeffrey A Law  (law@cygnus.com)

	* mn10300.h: New file.

Thu Jun 18 19:27:56 1998  Nick Clifton  <nickc@cygnus.com>

	* common.h (EM_960, EM_V800, EM_FR20, EM_RH32, EM_MMA,
	EM_OLD_ALPHA): Add these constants.

Thu Jun 11 17:59:01 1998  Nick Clifton  <nickc@cygnus.com>

	* common.h (EM_486, EM_S370): Add these constants.

Tue Jun  9 09:35:29 1998  Nick Clifton  <nickc@cygnus.com>

	* common.h (EM_ARM): Add this constant.

Wed May  6 09:45:30 1998  Gavin Koch  <gavin@cygnus.com>

	* mips.h (EF_MIPS_MACH,E_MIPS_MACH_*): Added.

Sat Apr 25 18:35:06 1998  Richard Henderson  <rth@cygnus.com>

	* alpha.h (STO_ALPHA_NOPV, STO_ALPHA_STD_GPLOAD): New.

Wed Apr 15 15:42:45 1998  Richard Henderson  <rth@cygnus.com>

	* common.h (EM_SPARC64): Move and rename to EM_OLD_SPARCV9.
	(EM_SPARCV9): New.  This is the official ABI name and number.

Sat Feb 28 17:04:41 1998  Richard Henderson  <rth@cygnus.com>

	* alpha.h (EF_ALPHA_32BIT, EF_ALPHA_CANRELAX): New.

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

	* m32r.h (EF_M32R_ARCH, E_M32R_ARCH): New flags to
	specify machine architecture.

Fri Dec  5 11:20:08 1997  Nick Clifton  <nickc@cygnus.com>

	* v850.h: New constants: SHN_V850_SCOMMON, SHN_V850_TCOMMON,
	SHN_V850_ZCOMMON, SHT_V850_SCOMMON, SHT_V850_TCOMMON,
	SHT_V850_ZCOMMON to handle v850 common sections.
	enum reloc_type renamed to v850_reloc_type to avoid name
	conflict.

Thu Oct 23 13:55:24 1997  Richard Henderson  <rth@cygnus.com>

	* sparc.h (enum elf_sparc_reloc_type): Add UA64 & UA16.

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

	* sparc.h (DT_SPARC_REGISTER): New macro.
	(DT_SPARC_PLTFMT): In support of old sparc64-linux .plts; will
	go away soon.

Tue Sep 30 13:26:58 1997  Doug Evans  <dje@canuck.cygnus.com>

	* sparc.h (EF_SPARC_HAL_R1, EF_SPARC_EXT_MASK): New macros.
	(EF_SPARCV9_{MM,TSO,PSO,RMO}): New macros.
	(SHN_BEFORE,SHN_AFTER): New macros.
	(SHF_EXCLUDE,SHF_ORDERED): New macros.
	(STT_REGISTER): New macro.
	(R_SPARC_GLOB_JMP): Deleted, but slot reserved.
	(R_SPARC_{DISP64,PLT64,HIX22,LOX10}): New relocations.
	(R_SPARC_{H44,M44,L44,REGISTER}): New relocations.
	(ELF64_R_TYPE_{DATA,ID,INFO}): New macros.

Wed Sep 17 16:41:42 1997  Nick Clifton  <nickc@cygnus.com>

	* v850.h: Add R_V850_CALLT_6_7_OFFSET and R_V850_CALLT_16_16_OFFSET.

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

	* v850.h (reloc_type): Add R_V850_TDA_16_16_OFFSET.

Wed Sep  3 15:11:14 1997  Richard Henderson  <rth@cygnus.com>

	* mips.h: Correct typo in comment.

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

	* v850.h (reloc_type): Remove R_V850_16_PCREL.

Tue Sep  2 17:41:05 1997  Nick Clifton  <nickc@cygnus.com>

	* common.h: Remove magic number for V850E.
	* common.h: Remove magic number for V850EA.
	* v850.h: Add new flags for e_flags field in elf header.

Mon Aug 25 16:06:47 1997  Nick Clifton  <nickc@cygnus.com>

	* common.h (EM_CYGNUS_V850E): backend magic number for v850e.
	* common.h (EM_CYGNUS_V850EA): backend magic number for v850ea.

Mon Aug 18 11:05:23 1997  Nick Clifton  <nickc@cygnus.com>

	* v850.h (reloc_type): Add 16 bit PC relative relocation.

Fri Aug 15 05:10:09 1997  Doug Evans  <dje@canuck.cygnus.com>

	* arc.h (enum reloc): Move here from elf32-arc.c.

Fri Aug  8 17:05:29 1997  Doug Evans  <dje@canuck.cygnus.com>

	* arc.h: New file.
	* common.h (EM_CYGNUS_ARC): Define.

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

	* internal.h (Elf_Internal_Ehdr): Change e_phoff and e_shoff from
	bfd_signed_vma to bfd_size_type, as they are not signed.

Wed Mar  5 15:35:26 1997  Doug Evans  <dje@seba.cygnus.com>

	* m32r.h (SHF_M32R_CAN_RELAX): Define.

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

	* external.h: Dump the 32/64 bit specific forms of the version
	structures, and just define them as size independent.

	* common.h (VERSYM_HIDDEN, VERSYM_VERSION): Define.

Fri Feb 21 13:00:34 1997  Doug Evans  <dje@canuck.cygnus.com>

	* m32r.h (enum reloc_type): Add R_M32R_SDA16.
	(SHN_M32R_SCOMMON): Define.

Wed Feb 19 15:35:31 1997  Ian Lance Taylor  <ian@cygnus.com>

	From Eric Youngdale <eric@andante.jic.com>:
	* external.h, internal.h, common.h: Added new structures and
	definitions for ELF versions.

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

	* common.h (EM_CYGNUS_D30V): Define.

Mon Jan 27 11:54:44 1997  Doug Evans  <dje@seba.cygnus.com>

	* m32r.h (enum reloc_type): Add R_M32R_HI16_[SU]LO,R_M32R_LO16.

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

	* v850.h (V850_OTHER_{TDA_BYTE,ERROR}): New bits for the st_other
	field.
	(SHN_V850_*): Remove v850 specific section indexes, which are not
	needed.
	(enum reloc_type): Move the v850 relocations here from
	elf32-v850.c

Thu Jan  2 19:30:23 1997  Michael Meissner  <meissner@tiktok.cygnus.com>

	* v850.h: New file, provide V850 specific definitions.

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

	* common.h (DT_AUXILIARY): Define.
	(DT_FILTER): Define.

Wed Dec  4 05:03:37 1996  Jason Merrill  <jason@yorick.cygnus.com>

	* dwarf2.h: Update.

Tue Nov 26 10:44:47 1996  Ian Lance Taylor  <ian@cygnus.com>

	* mips.h (STO_MIPS16): Define.

Tue Nov 12 15:45:42 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* d10v.h: Remove empty file.

Tue Oct  8 11:31:24 1996  Ian Lance Taylor  <ian@cygnus.com>

	* mips.h (EF_MIPS_ABI2): Define.

Thu Oct  3 10:01:40 1996  Jeffrey A Law  (law@cygnus.com)

	* common.h: Break mn10x00 support into mn10200 and mn10300.

Wed Oct  2 21:26:43 1996  Jeffrey A Law  (law@cygnus.com)

	* common.h (EM_CYGNUS_MN10x00): Define.

Mon Sep 23 09:18:04 1996  Doug Evans  <dje@seba.cygnus.com>

	* m32r.h: New file.

Fri Aug 30 17:06:21 1996  Ian Lance Taylor  <ian@cygnus.com>

	* common.h (EM_SH): Define.

Tue Aug 20 14:47:54 1996  J.T. Conklin  <jtc@hippo.cygnus.com>

	* common.h (EM_CYGNUS_V850): Define.

Mon Aug 19 10:59:10 1996  Doug Evans  <dje@canuck.cygnus.com>

	* common.h (EM_CYGNUS_M32R): Define.

Mon Jul 22 18:59:55 1996  Ian Lance Taylor  <ian@cygnus.com>

	* mips.h (SHT_MIPS_IFACE, SHT_MIPS_CONTENT): Define.
	(SHT_MIPS_SYMBOL_LIB): Define.
	(SHF_MIPS_MERGE, SHF_MIPS_ADDR32, SHF_MIPS_ADDR64): Define.
	(SHF_MIPS_NOSTRIP, SHF_MIPS_LOCAL, SHF_MIPS_NAMES): Define.

Thu Jul 18 19:12:15 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* dwarf2.h: New file.

Jul 18 13:20:39 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* common.h (EM_CYGNUS_D10V): Define.
	* d10v.h: New file.

Fri Jun 21 12:33:24 1996  Richard Henderson  <rth@tamu.edu>

	* alpha.h: New file.
	* common.h (EM_ALPHA): Define.

Fri May 31 17:28:05 1996  Ian Lance Taylor  <ian@cygnus.com>

	* mips.h (Elf_External_Options, Elf_Internal_Options): Define.
	(bfd_mips_elf_swap_options_in): Declare.
	(bfd_mips_elf_swap_options_out): Declare.
	(ODK_*): Define.
	(Elf64_External_RegInfo, Elf64_Internal_RegInfo): Define.
	(bfd_mips_elf64_swap_reginfo_in): Declare.
	(bfd_mips_elf64_swap_reginfo_out): Declare.

Thu May 30 12:35:57 1996  Ian Lance Taylor  <ian@cygnus.com>

	* mips.h (E_MIPS_ARCH_4): Define.

Wed May 29 15:35:33 1996  Ian Lance Taylor  <ian@cygnus.com>

	* mips.h (Elf64_Mips_External_Rel): Define.
	(Elf64_Mips_Internal_Rel): Define.
	(Elf64_Mips_External_Rela, Elf64_Mips_Internal_Rela): Define.
	(RSS_*): Define.

Mon Apr 22 18:26:30 1996  Doug Evans  <dje@canuck.cygnus.com>

	* sparc.h (R_SPARC_[56]): Always define.

Mon Feb 19 01:55:56 1996  Doug Evans  <dje@charmed.cygnus.com>

	* sparc.h (R_SPARC_{PLT32,HIPLT22,LOPLT10,PCPLT32,PCPLT22,
	PCPLT10,5,6}): Don't define ifdef SPARC64_OLD_RELOCS.

Tue Feb  6 11:33:58 1996  Doug Evans  <dje@charmed.cygnus.com>

	* sparc.h (enum sparc_elf_reloc_type): Define.

Wed Jan 17 09:09:16 1996  Doug Evans  <dje@canuck.cygnus.com>

	* common.h: Define EM_SPARC32PLUS.
	* sparc.h: New file.

Thu Jan 11 16:27:34 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* ppc.h (SHF_EXCLUDE, SHT_ORDERED): New fields from the abi.

Thu Nov 30 16:47:18 1995  Ian Lance Taylor  <ian@cygnus.com>

	* internal.h (struct elf_segment_map): Add includes_filehdr and
	includes_phdrs fields.

Tue Nov 28 16:58:10 1995  Ian Lance Taylor  <ian@cygnus.com>

	* internal.h (struct elf_segment_map): Define.

Tue Oct 31 15:19:36 1995  Fred Fish  <fnf@cygnus.com>

	* common.h, dwarf.h, external.h, hppa.h, internal.h,
	mips.h, ppc.h:  Protect against multiple inclusions.

Thu Sep 21 13:51:58 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* ppc.h (EF_PPC_RELOCATABLE_LIB): Add new flag bit.

Fri Sep  1 15:32:17 1995  Kazumoto Kojima  <kkojima@info.kanagawa-u.ac.jp>

	* mips.h: Add some definitions used on Irix 5.

Tue Jun 20 10:18:28 1995  Jeff Law  (law@snake.cs.utah.edu)

	* hppa.h (CPU_PA_RISC1_0): Protect from redefinitions.
	(CPU_PA_RISC1_1): Likewise.

Wed Mar  8 18:14:37 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* ppc.h: New file for PowerPC support.

Tue Feb 14 13:59:13 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* common.h (EM_PPC): Use offical value of 20, not 17.
	(EM_PPC_OLD): Define this to be the old value of EM_PPC.

Tue Jan 24 09:40:59 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* common.h (EM_PPC): New macro, PowerPC machine id.

Tue Jan 17 10:51:38 1995  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* mips.h (SHT_MIPS_MSYM, SHT_MIPS_DWARF, SHT_MIPS_EVENTS): Define.

Mon Oct 17 13:43:59 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* internal.h (Elf_Internal_Shdr): Remove rawdata and size fields.
	Add bfd_section field.

Tue May 24 16:11:50 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* mips.h (Elf32_External_gptab): Define.

Mon May 16 13:22:04 1994  Jeff Law  (law@snake.cs.utah.edu)

	* common.h (EM_HPPA): Delete.
	(EM_PARISC): Add.
	* hppa.h: New file.

Mon May  9 13:27:03 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* common.h (SHN_LORESERVE): Rename from SHN_LORESERV.
	(ELF32_R_TYPE, ELF32_R_INFO): Don't rely on size of unsigned char.
	(ELF64_R_TYPE): Don't rely on size of unsigned long.

Mon Apr 25 15:53:09 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* internal.h (Elf_Internal_Shdr): Use PTR, not void *.

Fri Mar 11 00:34:59 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* mips.h (SHN_MIPS_TEXT, SHN_MIPS_DATA):  Define.

Sat Mar  5 14:08:54 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* internal.h:  Remove Elf32_*, Elf64_* typedefs.  These names
	cause conflicts with system headers, e.g. link.h in gdb/solib.c.
	Combine 32- and 64-bit versions of *_Internal_Dyn.
	* common.h:  Replace uses of Elf64_Word, Elf64_Xword typedefs
	by their expansion.
	* mips.h:  Replace uses of Elf32_Word, Elf32_Sword, Elf32_Addr
	typedefs by their expansion. Add DT_MIPS_RLD_MAP definition.

Fri Feb 18 10:39:54 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* common.h (EM_CYGNUS_POWERPC): Define.  This may be temporary,
	depending upon how quickly I can find a real PowerPC ABI.

Mon Feb  7 08:27:13 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* internal.h: Change HOST_64_BIT to BFD_HOST_64_BIT.

Wed Feb  2 14:12:18 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* common.h: Add comments regarding value of EM_HPPA and how to
	pick an unofficial value.

Wed Nov 17 17:14:26 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* mips.h (SHT_MIPS_OPTIONS): Define.

Mon Nov  8 17:57:00 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* mips.h: Added some more MIPS ABI macro definitions.

Wed Nov  3 22:07:17 1993  Ken Raeburn  (raeburn@rtl.cygnus.com)

	* common.h (EM_MIPS_RS4_BE): New macro.

Tue Oct 12 07:28:18 1993  Ian Lance Taylor  (ian@cygnus.com)

	* mips.h: New file.  MIPS ABI specific information.

Mon Jun 21 13:13:43 1993  Ken Raeburn  (raeburn@poseidon.cygnus.com)

	* internal.h: Combined 32- and 64-bit versions of all structures
	except *_Internal_Dyn.  This will simply the assembler interface,
	and some bfd code.

Tue May 25 02:00:16 1993  Ken Raeburn  (raeburn@cambridge.cygnus.com)

	* external.h, internal.h, common.h: Added 64-bit versions of some
	structures and macros.  Renamed old versions to put "32" in the
	name.  Some are unchanged.

Thu Apr 29 12:12:20 1993  Ken Raeburn  (raeburn@deneb.cygnus.com)

	* common.h (EM_HPPA, NT_VERSION, STN_UNDEF, DT_*): New macros.
	* external.h (Elf_External_Dyn): New type.

	* internal.h (Elf_Intenral_Shdr): New field `size'.
	(Elf_Internal_Dyn): New type.

Tue Apr 20 16:03:45 1993  Fred Fish  (fnf@cygnus.com)

	* dwarf.h (LANG_CHILL):  Change value to one randomly picked in
	the user defined range, to reduce probability of collisions.

Sun Nov 15 09:34:02 1992  Fred Fish  (fnf@cygnus.com)

	* dwarf.h (AT_src_coords):  Whitespace change only.
	* dwarf.h (AT_body_begin, AT_body_end, LANG_MODULA2):
	Add from latest gcc.
	* dwarf.h (LANG_CHILL):  Add as GNU extension.

Sat Aug  1 13:46:53 1992  Fred Fish  (fnf@cygnus.com)

	* dwarf.h:  Replace with current version from gcc distribution.

Fri Jun 19 19:05:09 1992  John Gilmore  (gnu at cygnus.com)

	* internal.h:  Add real struct tags to all the Type_Defs, so they
	can be used in prototypes where the Type_Defs are not known.

Fri Apr  3 20:58:58 1992  Mark Eichin  (eichin at cygnus.com)

	* common.h: added ELF_R_{SYM,TYPE,INFO} for handling relocation
	info
	added EM_MIPS, and corrected value of EM_860 based on System V ABI
	manual.

	* external.h: added Elf_External_{Rel,Rela}.

	* internal.h: added Elf_Internal_{Rel,Rela}.
	added rawdata to Elf_Internal_Shdr.

Sat Nov 30 20:43:59 1991  Steve Chamberlain  (sac at rtl.cygnus.com)

	* common.h, dwarf.h, external.h, internal.h, ChangeLog; moved from
	../elf-<foo>


Local Variables:
version-control: never
End:
