Extend thread-related debug messages.
All interior pointers must be enabled for finalized allocation.

* include/gc_disclaim.h: Add note about all-interior-pointers requirement.
* fnlz_mlc.c (GC_init_finalized_malloc): Abort with a useful message if all
interior pointers are not enabled.
* tests/disclaim_bench.c, tests/disclaim_test.c: Enable all interior
pointers for tests.
Move finalizer closure to the end of objects.

* fnlz_mlc.c: Move finalizer closure for finalized object kinds to the end
of objects.  This way, we don't require all interior pointers, and GC_base
returns the expected address.
* tests/disclaim_test.c: Improve test coverage.
Remove closure data from GC_register_disclaim_proc.

* include/gc_disclaim.h, fnlz_mlc.c (GC_disclaim_proc, GC_register_disclaim_proc):
Remove CD from typedef and function.
* reclaim.c (GC_reclaim_uninit, GC_reclaim_block): Adjust calls.
* include/private/gc_priv.h, misc.c: Remove CD from object kind struct and
initializers.
Export GC_push manipulation functions and function pointer.

* include/private/gc_priv.h, include/gc_mark.h: Move GC_push_all,
GC_push_conditional and GC_push_other_roots to a public header and adjust
prototypes and comment.
* mark.c, os_dep.c: Adjust prototypes accordingly.
Define GC_VSNPRINTF internal macro in misc.c (code refactoring)

* misc.c (GC_VSNPRINTF): New macro (defined to vsnprintf by default
and used by GC_PRINTF_FILLBUF).
Fix GC_INLINE definition to comply with ISO C90 standard (GCC)

* include/private/gc_priv.h (GC_INLINE): Define as "static __inline"
for GCC if "strict ISO/ANSI C90" mode is enforced.
FreeBSD New ports collection for boehm-gc v7.1
(Imported from freebsd-ports/devel/boehm-gc)
(Apply commit 2cdf7ec from 'release-7_2' branch.)

* dbg_mlc.c (GC_caller_func_offset): New function (empty unless
FreeBSD).
* dbg_mlc.c (GC_debug_malloc, GC_debug_realloc): Invoke
GC_caller_func_offset if GC_ADD_CALLER.
* include/private/gc_priv.h (GC_DBG_RA): Define to GC_RETURN_ADDR_PARENT
(if the latter is defined).
* dbg_mlc.c (GC_debug_malloc_replacement,
GC_debug_realloc_replacement): Pass NULL (instead of "unknown") to
GC_debug_malloc/realloc.
* doc/gc.man: Add "PORT INFORMATION".
* dyn_load.c (ElfW): Define for FreeBSD.
* include/private/gcconfig.h (X86_64, IA64, POWERPC, ARM32,
mach_type_known, ALIGNMENT, OS_TYPE, DYNAMIC_LOADING, HEURISTIC2,
etext, SEARCH_FOR_DATA_START): Likewise.
* os_dep.c (old_bus_act): Likewise.
* include/gc.h (GC_RETURN_ADDR_PARENT): New macro.
* os_dep.c (GC_set_and_save_fault_handler): Invoke sigaction(SIGBUS)
for FreeBSD.
* os_dep.c (AIM): Define before include machine/trap.h if FreeBSD/ppc.
* os_dep.c (CODE_OK): Define to test "code" against EXC_DSI (instead
of BUS_PAGE_FAULT) if FreeBSD/ppc.

Conflicts:

    Makefile.in
    configure
    dbg_mlc.c
    include/gc.h
    include/private/gcconfig.h
    os_dep.c
FreeBSD New ports collection for boehm-gc v7.2d
(Apply commit 8666ba2 from 'release-7_2' branch.)

* include/private/gc_priv.h (RA): Define to "GC_RETURN_ADDR_PARENT,"
if GC_RETURN_ADDR_PARENT defined.
* include/private/gcconfig.h (FREEBSD): Group rules.

Conflicts:

    Makefile.in
    configure
    dbg_mlc.c
    include/private/gc_priv.h
    include/private/gcconfig.h
    os_dep.c
Fix GC_caller_func_offset and GC_DBG_RA names
(Apply commit 28e6e4f from 'release-7_2' branch.)

* dbg_mlc.c (GC_caller_func_offset): Test FREEBSD macro instead of
__FreeBSD__ (since the former is always defined in gcconfig.h included
from this file indirectly).
* dyn_load.c (ElfW): Likewise.
* dbg_mlc.c (GC_caller_func): Fix name to GC_caller_func_offset.
* dbg_mlc.c (GC_debug_realloc): Invoke GC_caller_func_offset if
GC_ADD_CALLER (same as in GC_debug_malloc and commit 2cdf7ec).
* include/private/gc_priv.h (RA): Fix name to GC_DBG_RA.
* include/private/gcconfig.h (X86_64): Test __x86_64__ in addition to
__amd64__ for FreeBSD (proposed in commit b54833a).

Conflicts:

    include/private/gcconfig.h
Adjust configure.ac to match configure regarding FreeBSD/sparc64
(Apply commit 41a99fb from 'release-7_2' branch.)

* configure.ac (Configuration of machine-dependent code): Handle
sparc64-*-freebsd* case.
Reformat gcconfig.h (related to FreeBSD/arm)

* include/private/gcconfig.h (ALIGNMENT, OS_TYPE, DYNAMIC_LOADING,
HEURISTIC2, etext, SEARCH_FOR_DATA_START): Reformat (adjust
indentation) for FreeBSD/arm.
Fix old_segv/bus_act variables initialization for FreeBSD

* os_dep.c (old_segv_act): Define static variable for FREEBSD (same as
for NETBSD).
* os_dep.c (GC_set_and_save_fault_handler): Reformat code (related to
FreeBSD).
* os_dep.c (GC_reset_fault_handler): Initialize old_segv_act (and
old_bus_act) for FREEBSD (same as for NETBSD).
Adjust GC_debug_malloc/realloc_replacement macro to match the API function

* malloc.c (GC_debug_malloc_replacement): Pass NULL (instead of
"unknown") to "s" argument of GC_debug_malloc to match that
replacement definition in dbg_mlc.c.
* mallocx.c (GC_debug_realloc_replacement): Likewise.
Replace GC_DBG_RA with GC_DBG_EXTRAS macro

* dbg_mlc.c (GC_debug_malloc_replacement,
GC_debug_realloc_replacement): Use GC_DBG_EXTRAS (instead of
"GC_DBG_RA NULL, 0").
* malloc.c (GC_debug_malloc_replacement): Likewise.
* mallocx.c (GC_debug_realloc_replacement): Likewise.
* include/private/gc_priv.h (GC_DBG_EXTRAS): New macro (similar to
GC_EXTRAS but pass NULL/0 instead of __FILE__and __LINE__);
pass "unknown" instead of NULL unless GC_ADD_CALLER.
* include/private/gc_priv.h (GC_DBG_RA): Remove.
Define GC_caller_func_offset only if HAVE_DLADDR and GC_RETURN_ADDR_PARENT
(Apply commit 5d94f18 from 'release-7_2' branch.)

* dbg_mlc.c (GC_caller_func_offset): Do not define (and do not include
dlfcn.h) unless GC_ADD_CALLER; test HAVE_DLADDR (and
GC_RETURN_ADDR_PARENT) instead of FREEBSD macro.
* dbg_mlc.c (GC_caller_func_offset): Use STATIC; replace the K&R-style
function definition with the ANSI C one; remove unnecessary "const" in
type casts; do not call dladdr() if address is 0.
* dbg_mlc.c (GC_debug_malloc, GC_debug_realloc): Move assignment of
"s" argument to "unknown" to GC_caller_func_offset (if GC_ADD_CALLER).
* dbg_mlc.c (GC_debug_realloc): Do not call GC_caller_func_offset if
"p" argument is NULL (i.e., if redirected to GC_debug_malloc)..
* include/private/gcconfig.h (HAVE_DLADDR): Define for FREEBSD.

Conflicts:

    dbg_mlc.c
Prevent use of unsupported __builtin_return_address(1) in GC_DBG_EXTRAS

* include/gc_config_macros.h (GC_CAN_SAVE_CALL_STACKS): Define also
for __amd64__ (synonym for __x86_64__).
* include/gc_config_macros.h (GC_RETURN_ADDR_PARENT): Define only for
x86 and x86_64 (which have frame-pointer register, for other targets
GCC might report "unsupported argument to __builtin_return_address"
warning).
Use __builtin_extract_return_addr in GC_RETURN_ADDR_PARENT (gcc/x86)

* include/gc_config_macros.h (GC_RETURN_ADDR_PARENT): Use
__builtin_extract_return_addr (since the address passed to dladdr);
do not define the macro for GCC pre-v4.
Remove changes in Makefile.in and doc/gc.man specific to FreeBSD ports
(Revert part of commit 8666ba2 from 'freebsd-ports-devel-boehm-gc' branch.)
(Apply commit 8f8d395 from 'release-7_2' branch.)

* doc/gc.man: Remove "PORT INFORMATION".

Conflicts:

    Makefile.in
.gitignore: Ignore test-driver (generated by autoreconf)