2002-04-07  Andrew Cagney  <ac131313@redhat.com>

	From 2002-03-05 Scott Pakin <pakin@uiuc.edu>
	* mmap-sup.c (MAP_PRIVATE_OR_SHARED): Define.
	(__mmalloc_mmap_morecore): Use.
	(__mmalloc_remap_core): Use.
	
2000-05-17  Eli Zaretskii  <eliz@is.elta.co.il>

	* Makefile.in (install-info): Make sure $(infodir) exists.  Run
	install-info program on the installed Info files.

2000-03-20  Eli Zaretskii  <eliz@is.elta.co.il>

	* Makefile.in (install): Append "n", not ".n" to libmmalloc.a,
	since the latter loses on DOS 8+3 filesystems.

Mon Feb 28 10:33:51 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: New file.

2000-02-18  Frank Ch. Eigler  <fche@redhat.com>

	From Jason "crash" Molenda <jsm@cygnus.com>:
	* configure.in: Check for getpagesize declaration.
	* mvmalloc.c, mmap-sup.c: Conditionally declare getpagesize.
	* configure: Regenerated.

Fri Feb 18 11:42:21 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in: Check for <unistd.h>.
	* configure: Regenerate.

	From 2000-02-17 RodneyBrown@pmsc.com:
	* mm.c, attach.c, mmap-sup.c, sbrk-sup.c: Include <unistd.h> for
 	sbrk and lseek declarations.  Update copyright.

2000-02-04  Kevin Buettner  (kevinb@cygnus.com)

	* acinclude.m4, aclocal.m4: New files.
	* configure.in (sbrk): Use BFD_NEED_DECLARATION to test for
	presence of a suitable declaration in the system headers.
	* configure: Regenerated.
	* sbrk-sup.c (sbrk): Ifdef'd with NEED_DECLARATION_SBRK.

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

	* configure.in: Requires autoconf 2.12.1 or higher.
	* configure: Regenerated.

1998-07-24  Jim Blandy  <jimb@zwingli.cygnus.com>

	* mcalloc.c: #include <sys/types.h> before <string.h>.  HP/UX 11.0
	needs this.

Thu Apr 23 12:19:22 1998  Philippe De Muyter  <phdm@macqel.be>

        * mmalloc.h: Include sys/types.h and stdio.h #ifndef HAVE_STDDEF_H.
        * mmprivate.h: Do not handle HAVE_STDDEF_H here, since we include
        mmalloc.h.

Tue Mar 24 17:07:02 1998  Stu Grossman  <grossman@bhuna.cygnus.co.uk>

	* Makefile.in:  Get SHELL from configure.
	* configure:  Regenerate with autoconf 2.12.1 to fix shell issues for
	NT native builds.

Mon Feb  7 13:06:45 1997  Philippe De Muyter  <phdm@macqel.be>

        * mmalloc/detach.c: Do not include fcntl.h.

Thu Aug 28 13:15:07 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* mrealloc.c (realloc): Store result in local variable before
 	returning it.  Makes debugging much easier at negligible cost.

Tue Feb  4 16:30:59 1997  Ian Lance Taylor  <ian@cygnus.com>

	* mvalloc.c (cache_pagesize): Rename from pagesize, so that if we
	are building mm.o, it does not conflict with the variable of the
	same name in mmap-sup.c.

Sat Dec 28 12:48:32 1996  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (mm.o): New target that combines all the functions
	into a single object module.  This avoids client programs picking
 	up part of the allocation routines from mmalloc and part from libc,
 	which can lead to undefined behavior.
	(CFILES): Add mm.c
	(TARGETOBJS): Define to be either the individual objects or the
	single combined object.
	(TARGETLIB): Create the archive using TARGETOBJS.
	* mm.c: New file that simply #includes the other source C files.
	
Thu Oct  3 15:45:23 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (maintainer-clean): Depend on distclean, remove
	duplication.

Tue Sep 10 17:52:06 1996  Fred Fish  <fnf@cygnus.com>

	* mmcheck.c (checkhdr): Add prototype.
	(mfree_check): Ditto.
	(mmalloc_check): Ditto.
	(mrealloc_check): Ditto.
	* mmtrace.c (tr_break): Ditto.
	(tr_freehook): Ditto.
	(tr_mallochook): Ditto.
	(tr_reallochook): Ditto.
	* sbrk-sup.c (sbrk_morecore): Ditto.

Wed Sep  4 18:02:45 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* configure configure.in:  Don't default CC to cc.  It causes problems
	when starting a compile in the mmalloc directory.

Wed Jul 24 00:53:34 1996  Fred Fish  <fnf@cygnus.com>

	* mmalloc.h (mmalloc_findbase): Add prototype.

Fri Jul 12 18:35:34 1996  Fred Fish  <fnf@cygnus.com>

	* mmap-sup.c (mmalloc_findbase): Change to not require /dev/zero
	if MMAP_ANONYMOUS is available.

Wed Jul 10 23:53:42 1996  Fred Fish  <fnf@cygnus.com>

	* detach.c (mmalloc_detach): Fix bug in computation of negative
	brk value.
	* mmcheck.c (mmcheckf): Renamed from mmcheck and new FORCE argument
	added.  Replaced hack that always allowed checking routines to be
 	installed and enforce restriction that they have to be installed
	prior to allocating any memory on the used heap or the FORCE argument
	has to be non-NULL.
	(mmcheck): New function that calls mmcheckf with FORCE set to zero,
	for backwards compatibility.
	* mmalloc.c (malloc): Store result in local variable before
	returning it.  Makes debugging much easier at negligible cost.
	* mmalloc.h (mmcheckf): Declare.
	* attach.c (reuse): Call mmcheckf rather than mmcheck.
	* mmap-sup.c (__mmalloc_mmap_morecore): Improve to allow mmap
	to select a base mapping address if none is otherwise given.
	(mmalloc_findbase): New function that user can call to find
	an available mapping address of a given size.
	
Tue Jun 25 22:54:06 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (bindir, libdir, datadir, mandir, infodir, includedir):
	Use autoconf-set values.
	(docdir): Removed.
	* configure.in (AC_PREREQ): autoconf 2.5 or higher.
	* configure: Rebuilt.

Tue May 28 13:51:22 1996  Fred Fish  <fnf@cygnus.com>

	From: Thomas A Peterson <tap@src.honeywell.com>
	* Makefile.in (install-info): Apply patch to install
	mmalloc.info from srcdir if not found in build dir.

Sun Apr  7 20:55:30 1996  Fred Fish  <fnf@rtl.cygnus.com>

	From: Miles Bader  <miles@gnu.ai.mit.edu>
	* configure.in: Use AC_CHECK_TOOL to find AR & RANLIB.
	* configure: Regenerate with autoconf.
	* Makefile.in: Use AR set by configure substitution.
	
Fri Mar 29 09:57:36 1996  Fred Fish  <fnf@cygnus.com>

	* mmalloc.h (mmtrace): Add prototype.

Sat Feb  3 12:41:00 1996  Fred Fish  <fnf@cygnus.com>

	From H.J. Lu (hjl@gnu.ai.mit.edu):
	* mvalloc.c (valloc): new.
	* mmemalign.c: Allocate (SIZE + ALIGNMENT - 1) and then trim
	if possible.
	(memalign): don't put the node on the _aligned_blocks list more
 	than once.

Mon Nov 20 12:04:32 1995  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (OFILES): Make objects depend upon Makefile,
	since Makefile sets DEFS which can definitely affect how
	objects are to be compiled.

Mon Nov  6 14:12:13 1995  Jason Molenda  (crash@phydeaux.cygnus.com)

	* configure.in (AC_CHECK_HEADERS): add limits.h.
	(AC_HEADER_STDC): remove.

	* mmalloc.h: document necessity of defining size_t before
	including mmalloc.h.

	* mmprivate.h: add check for limits.h, remove definition of
	NULL and size_t.

Sun Nov  5 00:27:36 1995  Jason Molenda  (crash@phydeaux.cygnus.com)

	* configure.in: AC_CHECK_HEADERS, not AC_CHECK_HEADER.

Sun Nov  5 00:14:13 1995  Jason Molenda  (crash@phydeaux.cygnus.com)

	* configure.in: add check for stddef.h
	* mmalloc.h: include stddef.h if HAVE_STDDEF_H is defined.

Sat Nov  4 19:10:13 1995  Jason Molenda  (crash@phydeaux.cygnus.com)

	* configure.in: add AC_HEADER_STDC check.

	* mmalloc.h: check if STDC_HEADERS instead of __STDC__.

	* mmprivate.h: check if STDC_HEADERS instead of __STDC__.

Tue Oct 24 13:17:44 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* mmprivate.h: Remove declarations (PTR, etc) that are already
	provided by ansidecl.h, include mmalloc.h earlier in file.

Tue Oct 10 11:04:47 1995  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (BISON):  Remove macro.

Wed Sep 20 12:51:13 1995  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (maintainer-clean): New target, synonym for
	realclean.  Add GNU standard maintainer-clean echos.

Thu Aug  3 10:45:37 1995  Fred Fish  <fnf@cygnus.com>

	* Update all FSF addresses except those in COPYING* files
	and shar archive of original FSF files.

Mon Jun 12 12:11:57 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* Makefile.in (distclean, realclean): Remove config.cache and
	  config.log.

Wed May 17 17:47:44 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* Makefile.in (Makefile): Added config.status to dependency list.
	  (config.status): New target.

Fri May  5 15:17:53 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* mmap-sup.c: Removed munmap prototype.  Some systems have a
	  slightly different prototype.

Wed May  3 17:18:13 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* Makefile.in, configure.in: Converted to use autoconf.
	* configure: New file, generated with autoconf 2.3.
	* config/{mh-go32, mh-irix, mh-ncr3000, mh-sunos4, 
	  mh-sysv4}: Removed.

Thu Nov  3 23:55:21 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* Makefile.in (install-info): Name destination file correctly,
	rather than using undefined shell variable.

Fri Oct 28 16:46:58 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* mmprivate.h: New file, was mmalloc.h.
	(mmalloc.h): Include.
	* mmalloc.h: Remove all but declarations of mmalloc functions.
	(ansidecl.h): Include.
	* attach.c, et al: Include mmprivate.h instead of mmalloc.h.

Wed Aug 24 12:55:33 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* configure.in: Change i[34]86 to i[345]86.

Mon Aug 22 11:36:40 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* Makefile.in (distclean): Separate from realclean.
	(realclean): Remove mmalloc.info.

Fri May  6 13:04:25 1994  Steve Chamberlain  (sac@cygnus.com)

        * config/go32.mh: New file
	* configure.in (host==go32):  Use new fragment.

Tue Feb  8 00:32:28 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* mmtrace.c (tr_freehook, tr_mallochook, tr_reallochook):
	Cast addresses put out via fprintf to unsigned long and use %lx.

Tue Nov 16 20:33:17 1993  Jim Kingdon  (kingdon@deneb.cygnus.com)

	* COPYING.LIB: New file (standard version 2 LGPL, as already cited
	by the source files).

Fri Nov  5 11:47:33 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* Makefile.in (info dvi install-info): Actually make the manual.

Mon Nov  1 14:20:25 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* mmalloc.texi: Fix typo ("for for" -> "for").

Fri Jul 16 15:27:08 1993  Jim Kingdon  (kingdon@rtl.cygnus.com)

	* test1.c: New file which tests for bug fixed below.
	* Makefile.in (check): Put in commands to run it (but commented out
	because it won't work for Canadian cross).

	* mmalloc.c (mmalloc): When extending a free block at the end of the
	heap, check whether which block is at the end changed.

	* Makefile.in (TAGS): make work when srcdir != objdir.

Thu Jul 15 07:56:47 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* attach.c, detach.c: Include <sys/types.h> before <fcntl.h>.

Wed Jun 30 11:00:53 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* Makefile.in: Add mostlyclean and realclean targets.

Wed Mar 24 01:58:12 1993  david d `zoo' zuhn  (zoo at poseidon.cygnus.com)

	* Makefile.in: add dvi and installcheck targets

Fri Mar 12 18:35:43 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: recognize *-*-solaris2* instead of *-*-solaris* (a
	number of people want to call SunOS 4.1.2 "solaris1.0" and get it right)

Mon Feb 22 18:08:53 1993  John Gilmore  (gnu@cygnus.com)

	* Makefile.in (distclean):  Add.

Tue Feb 16 08:09:15 1993  Fred Fish  (fnf@cygnus.com)

	* Makefile.in, attach.c, detach.c, keys.c, mmap-sup.c, mmtrace.c,
	sbrk-sup.c:  Use GNU Library General Public License, like other
	files.

Wed Nov 18 19:18:59 1992  John Gilmore  (gnu@cygnus.com)

	* configure.in:  Regularize list of host configs.

Fri Oct 30 00:59:46 1992  John Gilmore  (gnu@cygnus.com)

	* mmalloc.texi:  Add missing doubled @.  Bugfix by Paul Eggert.

Fri Oct 23 01:50:52 1992  Stu Grossman  (grossman at cygnus.com)

	* configure.in:  Handle solaris same as sysv4.

Thu Oct  1 23:34:20 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: use cpu-vendor-os triple instead of nested cases

Sun Aug 23 11:09:46 1992  Fred Fish  (fnf@cygnus.com)

	* sbrk-sup.c (__mmalloc_brk_init):  Ensure base of sbrk'd region
	is aligned.  Bug reported by Andrew Heybey (ath@lcs.mit.edu).

Wed Aug 19 14:49:23 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in: always create installation directories.

Mon Jul 20 21:15:44 1992  Fred Fish  (fnf@cygnus.com)

	* mrealloc.c:  Minor code format style changes for consistency.

Fri Jul  3 20:25:30 1992  Fred Fish  (fnf@cygnus.com)

	* attach.c, detach.c, mcalloc.c, mmalloc.c, mmtrace.c, mrealloc.c,
	sbrk-sup.c:  Remove "(void)" casts from function calls where the
	return value is ignored, in accordance with GNU coding standards.

Tue Jun 30 16:44:41 1992  Fred Fish  (fnf@cygnus.com)

	* mmalloc.h (struct mdesc):  Add FIXME comments to point out the
	need to save some data on a per-process basis for mapped regions
	that are shared.
	* attach.c (reuse):  Update the morecore field for reused mapped
	regions to be correct for the current process.

Mon Jun 29 10:45:25 1992  Fred Fish  (fnf at cygnus.com)

	* mmtrace.c:  Lint.

Mon Jun 15 12:20:16 1992  Fred Fish  (fnf@cygnus.com)

	* mmalloc.h (struct mdesc):  Change member "errno" to
	"saved_errno" to avoid possible conflict with ANSI C environments,
	where it is allowed to be a macro.
	* config/mh-ncr3000 (INSTALL):  Don't use /usr/ucb/install,
	it is broken on ncr 3000's.
	* config/mh-ncr3000 (RANLIB):  Use RANLIB=true.

Fri Jun 12 21:34:21 1992  John Gilmore  (gnu at cygnus.com)

	* mmap-sup.c:  Avoid ANSI C "empty translation unit" idiocy.

Tue Jun  9 17:29:04 1992  Fred Fish  (fnf@cygnus.com)

	* config/{mh-ncr3000, mh-sysv4}:  Add definition for INSTALL using
	/usr/ucb/install.

Thu Apr 30 22:36:31 1992  Fred Fish  (fnf@cygnus.com)

	* sbrk-sup.c (sbrk_morecore):  Fix sbrk() error return test.

Mon Apr 20 21:03:30 1992  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in: rework CFLAGS so that they can be passed from the
	  command line.  remove MINUS_G.  Default CFLAGS to -g.

Thu Apr 16 20:00:21 1992  Fred Fish  (fnf@cygnus.com)

	* TODO:  New file.
	* attach.c, mcalloc.c, mfree.c, mmalloc.c, mmalloc.h, mmap-sup.c,
	mmcheck.c, mtrace.c, mrealloc.c, mvalloc.c, sbrk-sup.c:  Lint.

Fri Apr 10 22:59:17 1992  Fred Fish  (fnf@cygnus.com)

	* configure.in:  Recognize new ncr3000 config.
	* config/mh-ncr3000:  New config file.
	* Makefile.in (MINUS_G):  Add macro and default to -g.

Wed Apr  8 09:34:53 1992  Fred Fish  (fnf@cygnus.com)

	* mmalloc.c:  Minor fix to comment.
	* mmalloc.texi:  Update to match actual implementation
	* mmalloc.h (morecore):  Change prototype's 2nd arg to int.

Tue Apr  7 22:16:09 1992  Fred Fish  (fnf@cygnus.com)

	* mmalloc.h (size_t, CHAR_BIT):  Only redefine if not already
	defined.

Mon Apr  6 20:49:33 1992  Fred Fish  (fnf@cygnus.com)

	* mmalloc.h:  Remove include of <stdlib.h>.  This also gets rid
	of the ugly kludge installed on 1-Apr-92.

Mon Apr  6 16:33:37 1992  Stu Grossman  (grossman at cygnus.com)

	* detach.c (mmalloc_detach):  Arg should be PTR, not void *.
	Fixes complaints from non __STDC__ systems.

Wed Apr  1 11:47:02 1992  Fred Fish  (fnf@cygnus.com)

	* mcalloc.c, mfree.c, mmalloc.c, mrealloc.c:  Minor comment
	change.
	* mmalloc.h:  Add ugly kludge to band-aid over problems with
	bogus vendor <stdlib.h> files.

Sun Mar 29 12:41:31 1992  John Gilmore  (gnu at cygnus.com)

	* attach.c, mmalloc.c, mmcheck.c:  Lint.

Thu Mar 26 17:06:04 1992  Fred Fish  (fnf@cygnus.com)

	* attach.c (reuse):  Explicitly discard return value of mmcheck.
	* mmcheck.c (mmcheck):  Document requirements for installing
	corruption checking hooks and set up to enforce restrictions.

Tue Mar 24 23:41:10 1992  K. Richard Pixley  (rich@cygnus.com)

	* config/mh-irix4: new file.

	* Makefile.in: added standard targets, fixed install directories.

Sat Mar 14 17:34:59 1992  Fred Fish  (fnf@cygnus.com)

	* Initial release, incorporated into gdb.


