| Copyright 1988, 1989 Hans-J. Boehm, Alan J. Demers |
| Copyright (c) 1991-1995 by Xerox Corporation. All rights reserved. |
| Copyright (c) 1996-1999 by Silicon Graphics. All rights reserved. |
| Copyright (c) 1999-2001 by Hewlett-Packard. All rights reserved. |
| |
| THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED |
| OR IMPLIED. ANY USE IS AT YOUR OWN RISK. |
| |
| Permission is hereby granted to use or copy this program |
| for any purpose, provided the above notices are retained on all copies. |
| Permission to modify the code and to distribute modified code is granted, |
| provided the above notices are retained, and a notice that the code was |
| modified is included with the above copyright notice. |
| |
| A few files have other copyright holders. A few of the files needed |
| to use the GNU-style build procedure come with a modified GPL license |
| that appears not to significantly restrict use of the collector, though |
| use of those files for a purpose other than building the collector may |
| require the resulting code to be covered by the GPL. |
| |
| For more details and the names of other contributors, see the |
| doc/README* files and include/gc.h. This file describes typical use of |
| the collector on a machine that is already supported. |
| |
| For the version number, see doc/README or version.h. |
| |
| INSTALLATION: |
| Under UN*X, Linux: |
| Alternative 1 (the old way): type "make test" in this directory. |
| Link against gc.a. With the most recent GC distributions |
| you may have to copy Makefile.direct to Makefile first. |
| |
| Alternative 2 (the new way): type |
| "./configure --prefix=<dir>; make; make check; make install". |
| Link against <dir>/lib/libgc.a or <dir>/lib/libgc.so. |
| See README.autoconf for details |
| |
| Under Windows 95, 98, Me, NT, or 2000: |
| copy the appropriate makefile to MAKEFILE, read it, and type "nmake test". |
| (Under Windows, this assumes you have Microsoft command-line tools |
| installed, and suitably configured.) |
| Read the machine specific README in the doc directory if one exists. |
| |
| If you need thread support, you will need to follow the special |
| platform-dependent instructions (win32), or define GC_THREADS |
| as described in Makefile (Makefile.direct), or possibly use |
| --enable-threads=posix when running the configure script. |
| |
| If you wish to use the cord (structured string) library with the stand-alone |
| Makefile.direct, type "make cords", after copying to "Makefile". |
| (This requires an ANSI C compiler. You may |
| need to redefine CC in the Makefile. The CORD_printf implementation in |
| cordprnt.c is known to be less than perfectly portable. The rest of the |
| package should still work.) |
| |
| If you wish to use the collector from C++, type "make c++", or use |
| --enable-cplusplus with the configure script. With Makefile.direct, |
| hese add further files to gc.a and to the include subdirectory. With the |
| alternat build process,this generates libgccpp. |
| See cord/cord.h and include/gc_cpp.h. |
| |
| TYPICAL USE: |
| Include "gc.h" from the include subdirectory. Link against the |
| appropriate library ("gc.a" under UN*X). Replace calls to malloc |
| by calls to GC_MALLOC, and calls to realloc by calls to GC_REALLOC. |
| If the object is known to never contain pointers, use GC_MALLOC_ATOMIC |
| instead of GC_MALLOC. |
| |
| Define GC_DEBUG before including gc.h for additional checking. |
| |
| More documentation on the collector interface can be found at |
| http://www.hpl.hp.com/personal/Hans_Boehm/gc/gcinterface.html, |
| in doc/README and other files in the doc directory, and in include/gc.h . |
| |
| WARNINGS: |
| |
| Do not store the only pointer to an object in memory allocated |
| with system malloc, since the collector usually does not scan |
| memory allocated in this way. |
| |
| Use with threads may be supported on your system, but requires the |
| collector to be built with thread support. See Makefile. The collector |
| does not guarantee to scan thread-local storage (e.g. of the kind |
| accessed with pthread_getspecific()). The collector does scan |
| thread stacks though, so generally the best solution is to ensure that |
| any pointers stored in thread-local storage are also stored on the |
| thread's stack for the duration of their lifetime. |
| |