SenoraGC is a relatively portable conservative GC for a slightly
cooperative environment. Its API is based on the Boehm GC.

The collector was originally intended for debugging and memory
tracing, but it can also act as a reasonbaly efficient,
general-purpose, conservative collector.

Usage:

The stack base must be manually identified with GC_set_stack_base();
no garbage collection will occur before this function is called.

All non-stack/register roots (i.e., global variables) must be
registered with GC_add_roots(). For certain platforms, this is
actually done automatically for static variables, but it can't be done
portably in general. (See AUTO_STATIC_ROOTS_IF_POSSIBLE in the flags
section.)

GC space is allocated using mmap() where available, malloc()
otherwise. The GC can define malloc() and free() itself if
platform-specific allocation routines are supported.
