This package has been put together from a number of different pieces and
I don't have time to edit all the README files together nicely.  Most of
them are just cover notes that came with the different parts.  I believe
all code except my own to have previously been posted to the net and
to be in the public domain.  My code is also in the public domain.

What this is is a malloc package with tracing, so you can find where in
your program there is a call to malloc() without a matching free().

This package is written in several separate source files so that a program
won't have to load all of it if it doesn't need it.  However, there may be
cases where a function in the C runtime library calls a malloc() family
function that your program doesn't call, and it will then go to the system
version of the malloc() package for that function.  This causes chaos.

You can force a particular function to be loaded from the malloctrace.a
library by putting, e.g., "-u _calloc" on the compile line just before
the library name.  Or you could avoid the problem permanently by editing
the files malloc.h, malloc.c, free.c, calloc.c, init_trace.c, write_trace.c,
and forget.c into one big file.

The original malloc package was written by Bill Sebok.  I then added the
tracing, while Arthur David Olson, independently, added some bug fixes
and enhancements.   I then took Olson's version and added my tracing to it.

For more details on the tracing see mallck.1 and TRACE_README in this
directory.  README is Sebok's original README.  NEW_VERSION_README is
Olson's cover note.  README.mtest2 and README.mtest3 are cover notes
for two malloc-tester programs (originally called mtest and looptest).
(mtest1, included here without its own README file, is part of Sebok's
package and was originally called tstmalloc).

UNPORTABILITY CAVEATS -

  The tracing depends on being able to dump one's call stack.  This is
done by code in the file write_trace.c.  It works on our Sun running SunOS
3.0 or 3.2, but is likely to need rewriting on your machine!
  There are two other things that work on our Sun but aren't portable:
the types "char *", "long", and "unsigned" seem to be inter-assigned
carelessly (I don't have time to delint this, either); and the BSDish
library function bcopy() is used.
  Use at your own risk.

Mark Brader, SoftQuad Inc., Toronto, August 25, 1988
{ uunet!attcan | linus | decvax | watmath | pyramid } !utzoo!sq!msb
msb@sq.com		decwrl!utcsri!sq!msb
