Boehm-gc built on DragonFly, but it wasn't working properly. This is
one of the major reasons lang/guile20 doesn't build. Ths fix is proven
as it has been taken from DPorts.
== [7.4.4] 2016-05-25 ==
* Allow GC_FAST_MALLOC_GRANS() multiple use in a function.
* Also enable the TSX workaround for i386 (Linux).
* Avoid unstructured procfs on Solaris.
* Change cord/de main() declaration style from K-R to ANSI C.
* Change no-argument functions declaration style to ANSI C (cord).
* Do not include sigcontext.h and asm/sigcontext.h.
* Eliminate 'divide by zero' compiler warning in cordtest.
* Eliminate warning about 64-bit pointer-to-int cast (Win64/pthreads-w32).
* Eliminate warnings detected by Cppcheck in cord de[_win].
* Fix 'comparison of non-null parameter is always false' warning (Clang).
* Fix 'CORD_iter5 unused result' code defect in cordxtra.
* Fix 'GC_generic_malloc_inner_ignore_off_page not used' compiler warning.
* Fix 'implicit declaration of vsnprintf' GCC warning (if strict ANSI mode).
* Fix 'signed-to-bigger-unsigned value assignment' in GC_init_size_map.
* Fix 'signed-to-bigger-unsigned value assignment' warning for hb_map.
* Fix 'signed-to-bigger-unsigned value assignment' warning in GC_setpagesize.
* Fix 'statement unreachable' compiler warning in GC_mark_from.
* Fix 'statement unreachable' compiler warning in memalign.
* Fix 'unused label' compiler warning in cord/de.
* Fix 'value truncated' compiler warning in CORD_cat (MS VC).
* Fix 'variable unused' warning in GC_save_callers.
* Fix 'visibility attribute not supported' GCC warning (IBM AIX).
* Fix CMake warning about CMP0054 by unquoting instances of HOST.
* Fix Cygwin64 build.
* Fix GC_REALLOC to call GC_FREE if new size is zero and pointer is non-NULL.
* Fix Makefile.direct for Cygwin.
* Fix __alloc_size__ availability detection (Clang).
* Fix abort message in GC_move_long_link.
* Fix and code refactoring of lock elision workaround (Linux/x64).
* Fix assertion on mark_lock_holder for non-unique NUMERIC_THREAD_ID.
* Fix data race in GC_init_explicit_typing.
* Fix gc.mak regarding msvc_dbg and test (MSVC).
* Fix missing error handling of pthread_attr_init/getstacksize.
* Fix missing error handling of pthreads_mutex_init and cond_wait.
* Fix missing numeric casts in cord.
* Fix potential left shift overflows in finalize.c (64-bit targets).
* Fix pthreads-win32 name in comments and documentation.
* Fix setup_mark_lock missing prototype.
* Fix unchecked fcntl() result.
* Fix unchecked pointer dereference in check_ints (gctest).
* Fix unchecked pthread_join() result in threadkey_test.
* Fix unchecked sigdelset() result in pthread_support.
* Fix undefined PTRFREE/NORMAL in gc_inline.h.
* Prefix PREFETCH_FOR_WRITE with GC_ as used in gc_inline.h public header.
* Relax mark_mutex attribute needed to disable elision (Linux/x64).
* Remove (deprecate) TODO file.
* Remove code duplication in GC_realloc.
* Remove duplicate new-line in OUT_OF_MEMORY message (cord).
* Remove references to missing linux_threads.c from documentation.
* Revert "Move asm machine-dependent files to 'src' folder" (partly).
* Support Android API level 21.
* Update compiler options in gc.mak (Win32).
* Use mmap instead of sbrk (Hurd).
* Workaround 'comparison is always false' GCC warning in GC_FAST_MALLOC_GRANS.
* Workaround 'identical expr on both sides of bitwise op' warning.
* Workaround Linux NTPL lock elision bug.
* Workaround false warning about unreachable code path.
* Workaround invalid '_end' symbol on Android clang 3.5+.
Also, includes 7.2g changes.
The results of GC_MALLOC_ATOMIC, GC_get_maps, and GC_scratch_alloc
are now properly checked, avoiding segmentation faults. Several
private symbols have been made externally visible to aid third
party software which unfortunately relies on them. Minor NetBSD
issues have been resolved.
Replace first hunk of patch-af with CONFIGURE_ARGS.
Remove next two hunks of patch-af installing some private headers.
This shouldn't be necessary in the 7.x versions. If it is, the author
is willing to help fix the underlying problems.
patch-aa and -ab will be included in the next upstream release.
Bump PKGREVISION.
* doc/gcinterface.html: Improve C++ interface documentation.
* allchblk.c (GC_allochblk): Check for overflow during size
rounding.
* malloc.c: (free replacement) Fix caller address space check.
* finalize.c (GC_grow_table): Dereference table in null-check.
* allchblk.c (add_to_fl): disable assertions with USE_MUNMAP,
and refine assertions to handle huge unmergable blocks.
* allchblk.c (GC_enough_large_bytes_left): No longer take
parameters; return free list index bound.
(GC_merge_unmapped): Don't access nexthdr until after null test.
(Fixes bug in 1/29/08 check-in.) (GC_allochblk): Calculate
when splitting is allowable only once here, not when considering each
block. (GC_allchblk_nth): Accept new may_split parameter.
Avoid some redundant tests for exact size matches.
* alloc.c (GC_should_collect): Cache min_bytes_allocd.
(GC_maybe_gc): Make locking assertion testable.
* mark_rts.c: Fix indentation.
* pthread_stop_world.c: Replace old GC_err_printf1 reference.
* misc.c (GC_init_inner): Assert !GC_need_to_lock only when
defined. (GC_call_with_stack_base): Add GC_API.
* os_dep.c (GC_get_stack_base): Add GC_API.
* win32_threads.c: (GC_register_my_thread, GC_unregister_my_thread):
Add GC_API.
* include/gc.h: Add GC_API annotations.
* include/private/gc_locks.h: Define UNCOND_LOCK etc. also for
PCR.
* include/private/gc_priv.h, mark_rts.c, typd_mlc.c:
Add GC_push_typed_structures() to push GC_ext_descriptors.
* allchblk.c (GC_merge_unmapped, GC_freehblk): Refuse to create
blocks large enough that their size, when interpreted as a signed
value, would be negative.
* include/private/gc_priv.h: Update MAX_ROOT_SETS
and LOG_PHT_ENTRIES to handle larger heaps.
* allchblk.c, alloc.c, include/private/gc_priv.h:
Track GC_bytes_dropped and use in GC triggering decisions.
* alloc.c (min_bytes_allocd): Weight atomic blocks less.
* alloc.c (GC_add_to_heap): Call GC_install_header(p) AFTER
adjusting p.
* alloc.c: Define GC_version instead of in version.h.
* version.h: Remove.
* include/gc_version.h: Move most of version.h here.
* include/gc.h, doc/README.macros: Add GC_NO_THREAD_REDIRECTS,
GC_NO_THREAD_DECLS, don't test explicitly for GC_SOLARIS_THREADS.
* alloc.c: Deal correctly with address wrapping for
GC_greatest_plausible_heap_addr and GC_least_plausible_heap_addr.
* finalize.c, include/gc.h (GC_register_disappearing_link,
GC_register_finalizer_inner): Improve out-of-memory handling.
* dyn_load.c (GC_dyld_image_add): Remove ifdef clause and use the macro
GC_GETSECTBYNAME instead.
* include/private/gc_priv.h: Define GC_GETSECTBYNAME according to the
architecture (Darwin).
* thread_local_alloc.c (GC_malloc_atomic, GC_gcj_malloc): Pass
granules, not bytes, to GC_FAST_MALLOC_GRANS.
* include/gc.h: Never include gc_local_alloc.h.
* malloc.c: Update GC_large_allocd_bytes on explicit deallocation.
* allchblk.c: Sanity check GC_max_large_allocd_bytes.
* include/extra/gc.h, include/extra/gc_cpp.h: New.
* include/include.am: Install gc.h and gc_cpp.h in $(prefix)/include
again.
* dbg_mlc.c: Use random() on all glibc systems.
* mach_dep.c (GC_with_callee_saves_pushed): Don't use getcontext() on
HURD. Add comment.
* pthread_stop_world.c (GC_suspend_handler, GC_stop_init): Accomodate
systems without SA_SIGINFO.
* alloc.c, backgraph.c, headers.c, include/private/gc_priv.h:
Maintain GC_our_memory and GC_n_memory.
* dbg_mlc.c (GC_print_smashed_obj): Improve message.
(GC_print_all_smashed_proc): Pass client object address instead of
base.
* dyn_load.c (sort_heap_sects): New. (GC_register_map_entries):
Register sections that are contiguous and merged with our heap.
* malloc.c, os_dep.c (GC_text_mapping): Check for just base name
of libraries.
* malloc.c (calloc): Check for special callers even with
USE_PROC_FOR_LIBRARIES. Move assertion. Add rudimentary
malloc/free tracing.
* misc.c: No longer call GC_init_lib_bounds explicitly.
* thread_local_alloc.c (GC_malloc, GC_malloc_atomic): Always
initialize on demand.
* alloc.c (GC_stopped_mark): Call GC_add_current_malloc_heap()
while world is still running.
* os_dep.c (GC_is_heap_base): Don't call GC_add_current_malloc_heap()
with world stopped.
* include/gc.h (GC_INIT for cygwin): Always call GC_add_roots.
* misc.c (GC_init/GC_init_inner): Perform all work in
GC_init_inner.
Changes relative to 6.8 include, in no particular order:
- Change C code to require at least C89. Clean up code in various
other respects.
- Win64 port.
- Always count how much live data there is in the heap. Add more
robust heap expansion heuristic which relies on this.
- Remove old-style Solaris threads support and some other obsolete
platform support.
- Restructure mark code, hopefully resulting in some performance
improvements.
- Change the GC code to traffic mostly in either bytes or allocation
granules, not words, internally.
- Provide for fast inline allocation that requires less frequent client
recompilations. (Needs more testing.)
- Removed SILENT configuration macro and PRINTSTATS and GATHERSTATS
macros. Control is now via GC_PRINT_STATS and GC_PRINT_VERBOSE_STATS
encironment variables.
- Thread local allocation is now performed without needing to call
special allocation functions. The configuration macro
THREAD_LOCAL_ALLOC
continues to determine whether this is supported.
- Thread local allocation is supported on more platforms.
- Win32 threads code was rewritten and is hopefully more sane.
- Allocation routines now decide whether to lock dynamically, based on
whether a second thread has been created.
- Mostly untested support for a compiler write barrier.
- Use libatomic_ops for atomic operations.
- Limited support for malloc redirection with Linux threads (& NPTL ).
- Various bug fixes and some new platform support.
configure script since pkgsrc will set MACHINE_GNU_PLATFORM to
sparc-sun-solaris2 on a solaris/sparc machine. This gets this package closer
to building on solaris with the sunpro compiler.
Changes since 6.7:
- Added some support for Dragonfly BSD. (Thanks to Joerg Sonnenberger and
Thomas Klausner.)
- Improvements to the HP/UX section of configure.in.
(Thanks to Andreas Tobler.)
- GC_unix_get_mem could neglect to release the malloc lock on Irix, under
extremely unlikely circumstances. Thanks to Jean-Baptiste Nivois for
some careful code reading.
- Added support for kFreeBSD + glibc (Thanks to Petr Salinger)
- Fix more MacOS threads memory leaks (Thanks to Allan Hsu)
- Added initial Solaris/X86-64 support (Thanks to Rainer Orth)
- Applied a long-lost MINGW patch from Gerard Allan for malloc redirection
with threads. This one probably makes no sense for 7.0, and was not applied
there.
- The Solaris/SPARC definition of GC_INIT() in gc.h wasn't C++-compilable.
- Merge gcconfig.h changes from gcc tree.
- Unconditionally include gc_priv.h in solaris_pthreads.c, win32_threads.h,
aix_irix_threads.c, and solaris_threads.c to get thread definitions.
- Start marker threads in GC_thr_init, so that they get started even
if no other threads are ever started. (Oddly enough, the parallel
collector worked correctly, though not well, with no helper threads.)
- Go ahead and split large blocks in GC_allochblk_nth if GC_dont_gc
is set. (Thanks to Alexander Petrossian.)
- GC_PRINT_BACK_HEIGHT would deadlock with thread support.
- Let in_progress_space in backgraph.s grow dynamically.
- Fix README.solaris2. The GC_thr_init() hack doesn't work anymore.
- Convert GC_finalizer_mem_freed to bytes in allchblk.c.
- Add missing declaration for GC_generic_malloc_words_small_inner.
Without it, s390x breaks. (Thanks to Ulrich Weigand.)
- Applied several MacOSX patches to support older tool chains.
(Thanks to Stefan Ring.)
- Bug fix for NetBSD/amd64. (Thanks to Marc Recht.) Add NetBSD/sh3
support. (Thanks to Uchiyama Yasushi.)
- Fixed an uninitialized variable in cordprnt.c. (Thanks to gcc for
providing the warning.)
- Eliminated some, but not all, gcc -Wall warnings.
- Changed some old style casts to reinterpret_cast in new_gc_alloc.h.
(Thanks to Dan Grayson.)
- GC_extend_size_map shouldn't adjust for GC_all_interior_pointers if
GC_DONT_ADD_BYTE_AT_END is set.
- Changed some (long) casts to (word) in preparation for win64.
(Thanks to Peter Colson.)
- Changed "int stack_size" declaration in pthread_support.c to use
size_t. (Only mattered with GC_ASSERTIONS enabled.)
- Added CRIS (etrax) support. (Thanks to Simon Posnjak and
Hans-Peter Nilsson.)
- Removed GC_IGNORE_FB frame buffer recognition, and replaced
it with a check that the mapping type is MEM_IMAGE.
In theory, this should work much better, but it is a high
risk change for win32. (Thanks to Ashley Bone for the crucial
experimental data behind this, and to Rutger Ovidus for
some further experiments.)
- Fixed print_block_list to print the correct kind number for
STUBBORN. (Thanks to Rutger Ovidus.)
- GC_allochblk_nth incremented GC_words_wasted by bytes rather than
words.
- Consider GC_words_wasted in GC_adj_words_allocd only if it is within
reason. (A hack to avoid some extremely unlikely scenarios in which
we manage to allocate only "wasted" space. 7.0 has a better fix.)
- Changed PowerPC GC_clear implementation to use lwsync instead of
eieio, since the documentation recommends against eieio, and
it seems to be incorrect if the preceding memory op is a load.
- Fixed print_block_list to print the correct kind number for
STUBBORN. (Thanks to Rutger Ovidus.)
- GC_allochblk_nth incremented GC_words_wasted by bytes rather than
words.
- Have configure.in generate an error if it is asked to support
pthreads, but doesn't know how to.
- Added Kazuhiro Inaoka's patch for Renesas M32R support.
- Have the GNU build mechanism link with -ldl. Rename THREADLIBS
to THREADDLLIBS to reflect this. (Thanks to Sven Verdoolaege.)
- Added Hannes Mehnert's patch for FreeBSD/SPARC support.
- Merged some FreeBSD specific patches to threadlibs.c and dyn_load.c.
(Thanks tp John Merryweather Cooper.)
- Define MPROTECT_VDB on MACOSX only if threads are being used, since the
dirty page tracking mechanism uses threads. (This avoids an undefined
reference to _GC_darwin_register_mach_handler_thread.)
- By popular demand, use __libc symbols only if we are built with
USE_LIBC_PRIVATES, which is off by default, and not otherwise documented.
- Ignore GC_enable_incremental() requests when KEEP_BACK_PTRS is set.
The GC itself will dirty lots of pages in this cases, probably making
it counterproductive on all platforms. And the DARWIN port crashes.
changes:
- Add a patch provided by UCHIYAMA Yasushi in PR 26180 to support NetBSD/sh3.
- Correctly define ELFSIZE for NetBSD. Fixes PR 26252 by Kouichirou Hiratsuka.
Bump BUILDLINK_DEPNDS to 6.3nb1 for the ELFSIZE fix.
This is mostly a bug fix release.
Selection of changes:
- most pkgsrc patches have been integrated
- amd64 support for NetBSD/OpenBSD (thanks to drochner@)
- enhanced Darwin support
For a complete list see:
http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/recent_changes
- GC_invoke_finalizers could, under rare conditions, set
GC_finalizer_mem_freed to an essentially random value. This could
possibly cause unbounded heap growth for long-running applications
under some conditions. (The bug was introduced in 6.1alpha5, and
is not in gcc3.3. Thanks to Ben Hutchings for finding it.)
- Attempted to sanitize the various DLL macros. GC_USE_DLL disappeared.
GC_DLL is used instead. All internal tests are now on GC_DLL.
README.macros is now more precise about the intended meaning.
- Include DllMain in the multithreaded win32 version only if the
collector is actually built as a dll. (Thanks to Mohan Embar for
a version of the patch.)
- Hide the cygwin threadAttach/Detach functions. They were violating our
namespace rules.
- Fixed an assertion in GC_check_heap_proc. Added GC_STATIC_ASSERT.
(Thanks again to Ben Hutchings.)
- Removed some obsolete definitions for Linux/PowerPC in gcconfig.h.
- CORD_cat was not rebalancing unbalanced trees in some cases, violating
a CORD invariant. Also tweaked the rebalancing rule for
CORD_cat_char_star. (Thanks to Alexandr Petrosian for the bug report
and patch.)
- Added hand-coded structured exception handling support to mark.c.
This should enable support of dynamic libraries under win32 with
gcc-compiled code. (Thanks to Ranjit Mathew for the patch.)
Turned on dynamic library scanning for win32/gcc.
- Removed some remnants of read wrapping. (Thanks to Kenneth Schalk.)
GC_USE_LD_WRAP ws probably broken in recent versions.
- The build could fail on some platforms since gcconfig.h could include
declarations mentioning ptr_t, which was not defined, e.g. when if_mach
was built. (Thanks to Yann Dirson for pointing this out.) Also
cleaned up tests for GC_PRIVATE_H in gcconfig.h a bit.
- The GC_LOOP_ON_ABORT environment variable interfered with incremental
collection, since the write fault handler was erroneously overridden.
Handlers are now set up in the correct order.
- It used to be possible to call GC_mark_thread_local_free_lists() while
the world was not stopped during an incremental GC. This was not safe.
Fortunately, it was also unnecessary. Added GC_world_stopped flag
to avoid it. (This caused occasional crashes in GC_set_fl_marks
with thread local allocation and incremental GC. This probably happened
primarily on old, slow multiprocessors.)
- Allowed overriding of MAX_THREADS in win32_threads.c from the build
command line. (Patch from Yannis Bres.)
- Taught the IA64/linux code to determine the register backing store base from
/proc/self/maps after checking the __libc symbol, but before guessing.
(__libc symbols are on the endangered list, and the guess is likely to not
always be right for 2.6 kernels.) Restructured the code to read and parse
/proc/self/maps so it only exists in one place (all platforms).
- The -DUSE_PROC_FOR_LIBRARIES code was broken on Linux. It claimed that it
also registered the main data segment, but didn't actually do so. (I don't
think anyone actually uses this configuration, but ...)
- Made another attempt to get --enablecplusplus to do the right thing.
Since there are unavoidable problems with C programs linking against a
dynamic library that includes C++ code, I separated out the c++ code into
libgccpp.
Based on patch provided in PR pkg/21569 by Marc Recht.
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.