Sun Jun 28 11:33:48 1998  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* stab.def:  Add N_ALIAS from SunPro F77.

Mon Mar 11 12:15:52 1996  Ian Lance Taylor  <ian@cygnus.com>

	* stab.def: Use __define_stab_duplicate rather than __define_stab
	for duplicate entries N_BROWS and N_MOD2.
	* stab_gnu.h (__define_stab_duplicate): Define before including
	stab.def.

Fri Oct 27 17:47:16 1995  Niklas Hallqvist  <niklas@appli.se>

	* aout64.h, host.h, hp300hpux.h, sun4.h: Changed PAGE_SIZE to
	TARGET_PAGE_SIZE.

Tue Sep 12 12:07:02 1995  Ian Lance Taylor  <ian@cygnus.com>

	* sun4.h (struct internal_sun4_dynamic_link): Change all fields
	from long to unsigned long.

Wed Jul 12 00:15:13 1995  Ken Raeburn  <raeburn@kr-pc.cygnus.com>

	* sun4.h (PAGE_SIZE): Undefine before defining.

Thu Jun 16 14:22:55 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* aout64.h (BMAGIC): Define.

Sat Jun 11 16:16:09 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	Add weak symbols as an extension to a.out.
	* aout64.h (N_WEAKU, N_WEAKA, N_WEAKT, N_WEAKD, N_WEAKB): Define.
	* stab.def: Update symbol value table.

Thu Jun  2 17:13:38 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* sun4.h (EXTERNAL_SUN4_DYNAMIC_DEBUGGER_SIZE): Correct from 28 to
	24.  Fix up ld_got comment.

Wed Mar 30 00:31:49 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* dynix3.h:  Cleanup, adapt to current bfd version.

Sat Feb 26 10:25:53 1994  Ian Lance Taylor  (ian@cygnus.com)

	* aout64.h: Add casts to avoid warnings from SVR4 cc.

Fri Feb 11 12:56:04 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* ar.h (ARMAG, ARMAGB, ARFMAG): Change '\n' to '\012', for greater
	portability.

Fri Jan 21 00:59:06 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* sun4.h: Added information about SunOS shared libraries.

Fri Jan  7 08:20:13 1994  Jim Kingdon  (kingdon@deneb.cygnus.com)

	* aout64.h (N_TXTADDR): Add comment regarding OMAGIC and NMAGIC.

Sat Dec 25 14:55:41 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* aout64.h (N_DATOFF): Don't pad (revert change of 8 Jul 1993).

Tue Nov 16 15:43:46 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* aout64.h: New macros ZMAGIC_DISK_BLOCK_SIZE and N_DISK_BLOCK_SIZE
	for Linux ZMAGIC.
	(N_TXTOFF, N_DATOFF): Use them.

Thu Nov  4 00:33:48 1993  Ken Raeburn  (raeburn@kr-pc.cygnus.com)

	* aout64.h (RELOC_STD_BITS_RELATIVE_LITTLE): Fixed value to match
	sun3 system; used to overlap other fields.
	(RELOC_STD_BITS_JMPTABLE_LITTLE): Likewise.

Wed Nov  3 13:48:27 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* aout64.h (RELOC_STD_BITS_BASEREL_LITTLE): Make it 0x10 (Ken's
	suggestion) to avoid conflict with RELOC_STD_BITS_EXTERN_LITTLE.

Fri Oct 29 15:09:52 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* hp300hpux.h (N_SHARED_LIB): Define to be 0.

Mon Sep 13 21:00:56 1993  John Gilmore  (gnu@cygnus.com)

	* ar.h (ARMAP_TIME_OFFSET):  Add and describe.

Mon Aug 23  Sean Fagan  (sef@cygnus.com)

	* aout64.h [ARCH_SIZE != 64]: Allow N_BADMAG to be overridden.

Mon Aug 16 14:30:14 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stab_gnu.h: Include aout/stab.def not just stab.def.

Sun Jul 18 21:41:47 1993  Jim Kingdon  (kingdon@rtl.cygnus.com)

	* dynix3.h: New, for symmetry running dynix.

Thu Jul  8 12:52:22 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* aout64.h (N_BADMAG): Recognize QMAGIC.
	N_TXTOFF, N_TXTADDR, N_TXTSIZE: Special code for QMAGIC.
	N_DATOFF: Pad text size if we need to.

Fri Jun 18 19:19:38 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stab.def (N_ECOML): Fix comment.

Mon May 31 09:21:30 1993  Jim Kingdon  (kingdon@cygnus.com)

	* stab.def: Remove Solaris information on N_FUN stabstring grammar;
	I've transferred it to gdb/doc/stabs.texinfo, where it belongs.

Mon May 10 05:48:43 1993  Ken Raeburn  (raeburn@kr-pc.cygnus.com)

	* hp300hpux.h: Patch from Glenn Engel for linker problem and
	compatibility fix:
	(OMAGIC, NMAGIC): New definitions.
	(SHAREMAGIC): Deleted.
	(HPUX_DOT_O_MAGIC): New macro.
	(_N_BADMAG): Adjusted.
	(N_HEADER_IN_TEXT, N_DATADDR): New macros.

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

	* hp300hpux.h: New file from Glenn Engel, glenne@lsid.hp.com.

Tue Apr 27 05:51:04 1993  Ken Raeburn  (raeburn@kr-pc.cygnus.com)

	* aout64.h (struct external_exec, *MAGIC, N_BADMAG): Don't define
	if `external_exec' is already defined as a macro.
	(N_DATOFF, N_TRELOFF, N_DRELOFF, N_SYMOFF, N_STROFF): Don't define
	if already defined.
	(struct external_nlist, EXTERNAL_NLIST_SIZE): Don't define if
	`external_nlist' is already defined as a macro.

Sat Aug 15 04:23:02 1992  John Gilmore  (gnu@cygnus.com)

	* adobe.h:  Add description of a.out.adobe format.

Fri Jul  3 00:36:52 1992  John Gilmore  (gnu at cygnus.com)

	* stab.def:  Update more Solaris definitions.
	* stab_gnu.h:  Add N_SO language types, and Solaris basic float types.

Sun Jun 14 10:53:53 1992  John Gilmore  (gnu at cygnus.com)

	* stab.def:  Update descriptions of Solaris-2 stabs; add N_UNDF.

Thu Jun 11 01:12:07 1992  John Gilmore  (gnu at cygnus.com)

	* stab.def:  Add N_OBJ and N_OPT from Solaris-2.

Thu Jan 30 18:12:44 1992  John Gilmore  (gnu at cygnus.com)

	* aout/aout64.h: N_TXTSIZE needs some more parentheses.
	I don't trust C precedence.

Wed Dec 18 14:32:01 1991  Per Bothner  (bothner at cygnus.com)

	* aout/aout64.h:  Move common sunos-specific test
	to recognize shared libraries into new macro N_SHARED_LIB.
	Use it to simplify&reformat N_TXTADDR, N_TXTOFF, N_TXTSIZE.

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

	* ChangeLog, aout64.h, ar.h, encap.h, host.h, hp.h, ranlib.h,
	reloc.h, stab.def, stab_gnu.h, sun4.h: All moved from the
	devo/include directory


Local Variables:
version-control: never
End:
