version checking will be correct when 6.2 final is out.
Changes since 6.1:
- Guard the test for GC_DUMP_REGULARLY in misc.c with
"#ifndef NO_DEBUGGING". Otherwise it fails to build with NO_DEBUGGING
defined. (Thanks to Manuel Serrano.)
- Message about retrying suspend signals was incorrectly generated even when
flag was not set.
- Cleaned up MACOSX/NEXT root registration code. There was apparently a
separate ifdef case in GC_register_data_segments() for no reason.
- Removed MPROTECT_VDB for MACOSX port, based on one negative report.
- Arrange for gc.h and friends to be correctly installed with GNU-style
"make install".
- Enable the GNU-style build facility include C++ support in the library
with --enable-cplusplus. (Thanks to Thomas Maier for some of the patch.)
- Mark from GC_thread_key in linux_threads.c, in case that's allocated
from the garbage collected heap, as it is with our own thread-specific
storage implementation. (Thanks to Jeff Sturm.)
- Mark all free list header blocks if they are heap allocated. This avoids
some unnecessary tracing. And it remains correct if we clear the
root set. (Thanks to Jeff Sturm for identifying the bug.)
- Improved S390/Linux support. Add S390/Linux 64-bit support. (Thanks
to Ulrich Weigand.)
- Corrected the spelling of GC_{M,C}ALLOC_EXPLICTLY_TYPED to
GC_{M,C}ALLOC_EXPLICITLY_TYPED in gc_typed.h. This is technically
an interface change. Based on the fact that nobody reported this,
I suspect/hope there were no clients.
- Cleaned up gc_typed.h so that (1) it adds an extern "C" declaration
when appropriate, (2) doesn't generate references to undefined internal
macros, and (3) allows easier manual construction of descriptors.
- Close the file descriptor used by GC_print_address_map().
- Set the "close-on-exec" bit for various file descriptors maintained
for the collector's internal use.
- Added a hack to find memory segments owned by the system allocator
under win32. Based on my tests, this tends to eventually find all
segments, though it may take a while. There appear to be cleaner,
but slower solutions under NT/XP. But they rely on an API that's
unsupported under 9X.
- Changed Linux PowerPC stack finding to LINUX_STACKBOTTOM. (Thanks
to Akira Tagoh for pointing out that HEURISTIC1 doesn't work on
64-bit kernels.)
- Added GC_set_free_space_divisor to avoid some Windows dll issues.
- Added FIXUP_POINTER, POINTER_SHIFT, POINTER_MASK to allow preprocessing
of candidate pointers for tagging, etc.
- Always lock around GC_notify_full_gc(). Simplified code for
invoking GC_notify_full_gc().
- Changed the way DATASTART is defined on FreeBSD to be robust against
an unmapped page after etext. (Thanks to Hironori Sakamoto for
tracking down the intermittent failure.)
- Made GC_enable() and GC_disable() official. Deprecated direct update
of GC_dont_gc. Changed GC_gcollect to be a noop when garbage collection
is disabled.
- Call GC_register_dynamic_libraries before stopping the world on Linux,
in order to avoid a potential deadlock due to the dl_iterate_phdr lock.
- Introduced a more general mechanism for platform-dependent code to
decide whether the main data segment should be handled separately
from dynamic libraries, or registered by GC_register_dynamic_libraries.
The latter is more reliable and easier on Linux with dl_iterate_phdr.
Changes since 6.2alpha1:
- Fixed the completely broken FreeBSD code in 6.2alpha1. (Thanks to
Hironori Sakamoto for the patch.)
- Changed IRIX reference in dbg_mlc.c to IRIX5. (Thanks to Marcus Herbert.)
- Attempted to work around the problems with .S filenames and the SGI
compiler. (Reported by several people. Untested.)
- Worked around an HP/UX make issue with the GNU-style build process.
- Fixed the --enable-cplusplus build machinery to allow builds without
a C++ compiler. (That was always the intent ...)
- Changed the debugging allocation macros to explicitly pass the return
address for Linux and XXXBSD on hardware for which we can't get stack
traces. Use __builtin_return_address(0) to generate it when possible.
Some of the configuration work was cleaned up (good) and moved to gc.h
(bad, but necessary). This should make leak detection more useful
on a number of platforms. (Thanks to Fabian Thylman for the suggestion.)
- Fixed compilation problems in dbg_mlc.c with GC_ADD_CALLER.
- Bumped revision number for dynamic library.
Changes since 6.2alpha2:
- Don't include execinfo.h in os_dep.c when it's not needed, and may not exist.
Changes since 6.2alpha3:
- Use LINUX_STACKBOTTOM for >= glibc2.2 on Linux/MIPS. (See Debian bug
# 177204)
- Integrated Jeff Sturm and Jesse Rosenstock's MACOSX threads patches.
- Integrated Grzegorz Jakacki's substantial GNU build patch. "Make dist"
should now work for the GNU build process. Documentation files
are installed under share/gc.
- Tweaked gc_cpp.h to again support the Borland compiler. (Thanks to
Rene Girard for pointing out the problems.)
- Updated BCC_MAKEFILE (thanks to Rene Girard).
- Added GC_ASSERT check for minimum thread stack size.
- Added --enable-gc-assertions.
- Added some web documentation to the distribution. Updated it in the
process.
- Separate gc_conf_macros.h from gc.h.
- Added generic GC_THREADS client-defined macro to set the appropriate
GC_XXX_THREADS internal macro. (gc_config_macros.h.)
- Add debugging versions of _ignore_off_page allocation primitves.
- Moved declarations of GC_make_closure and GC_debug_invoke_finalizer
from gc.h to gc_priv.h.
- Reset GC_fail_count even if only a small allocation succeeds.
- Integrated Brian Alliet's patch for dynamic library support on Darwin.
- gc_cpp.h's gc_cleanup destructor called GC_REGISTER_FINALIZER_IGNORE_SELF
when it should have called the lower case version, since it was
explicitly computing a base pointer.
buildlink2.mk files back into the main trunk. This provides sufficient
buildlink2 infrastructure to start merging other packages from the
buildlink2 branch that have already been converted to use the buildlink2
framework.
Changelog:
Since 5.0alpha7:
- Fixed threadlibs.c for linux threads. -DUSE_LD_WRAP was broken and
-ldl was omitted. Fixed Linux stack finding code to handle
-DUSE_LD_WRAP correctly.
- Added MSWIN32 exception handler around marker, so that the collector
can recover from root segments that are unmapped during the collection.
This caused occasional failures under Windows 98, and may also be
an issue under Windows NT/2000.
Since 5.0
- Fixed a gc.h header bug which showed up under Irix. (Thanks to
Dan Sullivan.)
- Fixed a typo in GC_double_descr in typd_mlc.c not getting traced correctly.
This probably could result in objects described by array descriptors not
getting traced correctly. (Thanks to Ben Hutchings for pointing this out.)
- The block nearly full tests in reclaim.c were not correct for 64 bit
environments. This could result in unnecessary heap growth under unlikely
conditions.
- Removed use of CLEAR_DOUBLE from generic reclaim code, since odd sizes
could occur.
Since 5.1
- dyn_load.c declared GC_scratch_last_end_ptr as an extern even if it
was defined as a macro. This prevented the collector from building on
Irix.
- We quietly assumed that indirect mark descriptors were never 0.
Our own typed allocation interface violated that. This could result
in segmentation faults in the marker with typed allocation.
- Fixed a _DUSE_MUNMAP bug in the heap block allocation code.
(Thanks to Ben Hutchings for the patch.)
- Taught the collector about VC++ handling array operator new.
(Thanks again to Ben Hutchings for the patch.)
- The two copies of gc_hdrs.h had diverged. Made one a link to the other
again.
Since 5.2
- Fixed _end declaration for OSF1.
- There were lots of spurious leak reports in leak detection mode, caused
by the fact that some pages were not being swept, and hence unmarked
objects weren't making it onto free lists. (This bug dated back to 5.0.)
- Fixed a typo in the liblinuxgc.so Makefile rule.
- Added the GetExitCodeThread to Win32 GC_stop_world to (mostly) work
around a Windows 95 GetOpenFileName problem. (Thanks to Jacob Navia.)
but there is the addition of the NetBSD/arm32 bits.
This has been tested on mac68k, macppc, sparc ELF, i386 ELF.
Update provided in PR#10062 by Sunagawa Keiki <kei_sun@ba2.so-net.ne.jp>.
but there is the addition of the NetBSD/arm32 bits.
This has been tested on mac68k, macppc, sparc ELF, i386 ELF.
Update provided in PR#10062 by Sunagawa Keiki <kei_sun@ba2.so-net.ne.jp>.
systems and ELF ones (checked on alpha, i386, powerpc) as well. Update
supplied by SUNAGAWA Keiki <kei_sun@ba2.so-net.ne.jp> in PR#8482 with
minor additions by me.
+ This package throws a segmentation violation during "./test_cpp 1" in
the build target on NetBSD/sparc. Mark it as NOT_FOR_ARCHS= sparc for
just now.
- New, optional Makefile variable HOMEPAGE, specifies a URL for
the home page of the software if it has one.
- The value of HOMEPAGE is used to add a link from the
README.html files.
- pkglint updated to know about it. The "correct" location for
HOMEPAGE in the Makefile is after MAINTAINER, in that same
section.