implemented Setup.hs to build boehm cpp libs and install them;
[hs-boehmgc.git] / gc-7.2 / ChangeLog
diff --git a/gc-7.2/ChangeLog b/gc-7.2/ChangeLog
new file mode 100644 (file)
index 0000000..1c3a326
--- /dev/null
@@ -0,0 +1,8153 @@
+[7.2d]
+
+2012-08-09  Ivan Maidanski <ivmai@mail.ru>
+
+       * doc/README: Change version to 7.2d (rev. D).
+
+2012-08-05  Ivan Maidanski <ivmai@mail.ru>
+
+       * config.guess: Regenerate (by autoreconf -vif using autoconf-2.68,
+       automake-1.11.1 and libtool-2.4).
+       * config.sub: Likewise.
+       * m4/libtool.m4: Likewise.
+
+2012-08-02  Ivan Maidanski <ivmai@mail.ru>
+
+       * misc.c (GC_clear_stack_inner): Use GC_approx_sp() instead of
+       "dummy[0]" set to "&dummy" value (that worked as expected only for
+       STACK_GROWS_DOWN case).
+
+2012-08-02  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (min_bytes_allocd, GC_stopped_mark): Use GC_approx_sp()
+       instead of "&dummy"; remove 'dummy' local variable.
+       * dyn_load.c (GC_cond_add_roots): Likewise.
+       * misc.c (GC_init): Likewise.
+       * os_dep.c (GC_get_stack_base, GC_get_main_stack_base): Likewise.
+       * pthread_stop_world.c (GC_suspend_handler_inner,
+       nacl_pre_syscall_hook, __nacl_suspend_thread_if_needed): Likewise.
+       * pthread_support.c (GC_thr_init): Likewise.
+       * ptr_chck.c (GC_on_stack): Likewise.
+       * win32_threads.c (GC_push_stack_for): Likewise.
+       * extra/setjmp_t.c (main): Define volatile 'sp' local variable, store
+       its address to it and use it instead of "&dummy"; remove 'dummy' local
+       variable.
+       * mach_dep.c (GC_with_callee_saves_pushed): Use volatile for 'dummy'
+       local variable.
+       * misc.c (GC_clear_stack_inner): Store address of volatile 'dummy'
+       local array (i.e. 'sp' value) to its first element (and use it in the
+       comparison of addresses) to prevent any harmful optimizations as C
+       officially disallows comparisons of pointers to different objects
+       (e.g., some Mac OS X clang releases might turn a conditional
+       expression that uses 'dummy' address into a constant); update comment.
+       * misc.c (GC_call_with_stack_base): Use "&base" instead of "&dummy"
+       (it is safe to use address of base here); remove dummy variable.
+
+2012-08-01  Ivan Maidanski <ivmai@mail.ru>
+
+       * misc.c (GC_call_with_stack_base): Call GC_noop1 after fn()
+       invocation to prevent a tail-call optimization.
+
+2012-07-21  Ivan Maidanski <ivmai@mail.ru>
+
+       * os_dep.c (GC_get_stack_base): Abort if pthread_stackseg_np fails
+       (if GC_OPENBSD_THREADS).
+       * pthread_stop_world.c (GC_suspend_all): Get correct stack_ptr by
+       calling pthread_stackseg_np (subtracting ss_size from ss_sp) instead
+       of retrieving it from OpenBSD pthread implementation-dependent context
+       (if GC_OPENBSD_THREADS); remove comment.
+
+2012-06-17  Ivan Maidanski <ivmai@mail.ru>
+
+       * tests/initsecondarythread.c: Include "private/config.h" if
+       HAVE_CONFIG_H (mostly to have GC_WIN32_PTHREADS defined for
+       pthreads-w32 target).
+       * tests/thread_leak_test.c: Likewise.
+       * tests/threadkey_test.c: Likewise.
+
+2012-06-16  Ivan Maidanski <ivmai@mail.ru>
+
+       * tests/test_cpp.cc (WinMain): Prevent SEGV in strtok() by checking
+       "cmd" WinMain argument for NULL (in that case "argc" local variable is
+       set to 0).
+
+2012-06-16  Ivan Maidanski <ivmai@mail.ru>
+
+       * tests/test_cpp.cc (main): Call GC_set_all_interior_pointers(1)
+       before GC_INIT to ensure that the collector considers pointers to
+       object interiors as valid ones (such a pointer could emerge as
+       a result of a type cast to subclass in case of multiple inheritance);
+       add comment.
+
+[7.2c]
+
+2012-06-11  Ivan Maidanski <ivmai@mail.ru>
+
+       * doc/README: Change version to 7.2c (rev. C).
+
+2012-06-08  Ivan Maidanski <ivmai@mail.ru>
+
+       * cordbscs.c (CORD_cat_char_star): Check GC_MALLOC_ATOMIC result for
+       NULL (do OUT_OF_MEMORY in such case) to prevent SEGV.
+
+2012-06-07  Ivan Maidanski <ivmai@mail.ru>
+
+       * dyn_load.c (GC_register_dynamic_libraries): If GC_scratch_alloc
+       fails (returns null) then abort (with the appropriate message) instead
+       of causing SEGV.
+       * os_dep.c (GC_dirty_init): Likewise.
+       * headers.c (GC_init_headers): Report error and exit if
+       GC_scratch_alloc fails.
+       * include/private/gc_priv.h (GC_scratch_alloc): Improve comment.
+       * os_dep.c (GC_print_address_map): If GC_get_maps return null then
+       print the appropriate message (instead of passing null to GC_err_puts
+       thus causing SEGV).
+
+2012-06-02  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gc_priv.h (GC_push_all, GC_push_other_roots):
+       Declare as GC_API_PRIV (instead of GC_INNER) to make the symbol
+       externally visible to some well-known 3rd-party software (e.g., ECL).
+       * include/private/gc_priv.h (GC_push_conditional): Declare as
+       GC_API_PRIV (only if GC_DISABLE_INCREMENTAL is undefined).
+       * mark.c (GC_push_all, GC_push_conditional): Remove GC_INNER (to match
+       the declaration).
+       * os_dep.c (GC_push_other_roots): Likewise.
+
+2012-06-02  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gc_priv.h (GC_clear_mark_bit, GC_set_mark_bit):
+       Declare as GC_API_PRIV (instead of GC_INNER) to make the symbol
+       externally visible to 3rd-party software (e.g., ECL).
+       * mark.c (GC_set_mark_bit, GC_clear_mark_bit): Remove GC_INNER (to
+       match the declaration).
+
+2012-06-01  Tsugutomo Enami <tsugutomo.enami@jp.sony.com>
+
+       * dyn_load.c: Include sys/param.h and dlfcn.h on NetBSD.
+       * dyn_load.c (GC_FirstDLOpenedLinkMap): Obtain link map using dlinfo()
+       on NetBSD if RTLD_DI_LINKMAP feature present (defined).
+
+[7.2b]
+
+2012-05-23  Ivan Maidanski <ivmai@mail.ru>
+
+       * doc/README: Change version to 7.2b (rev. B).
+
+2012-05-16  Ivan Maidanski <ivmai@mail.ru>
+
+       * malloc.c (GC_malloc_uncollectable): Do not check assertion on
+       hb_n_marks to be zero if multi-threaded; add comment.
+       * mallocx.c (GC_malloc_atomic_uncollectable): Likewise.
+
+[7.2]
+
+2012-05-11  Ivan Maidanski  <ivmai@mail.ru>
+
+       * configure.ac, doc/README, include/gc_version.h:
+       Bump version to 7.2 (final).
+       * configure: Regenerate.
+       * Makefile.in: Ditto.
+
+2012-04-16  H.J. Lu <hjl.tools@gmail.com>
+
+       * include/gc_tiny_fl.h (GC_GRANULE_BYTES): Set to 8 for x32.
+       (GC_GRANULE_WORDS): Set to 2 for x32.
+
+2012-04-16  H.J. Lu <hjl.tools@gmail.com>
+
+       * include/private/gcconfig.h: (ALIGNMENT): Set to 4 for x32.
+       (CPP_WORDSZ): Set to 32 for x32.
+
+2012-04-29  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_check_fl_marks): Cast pointer passed to GC_is_marked to
+       prevent compiler warning.
+
+2012-04-21  Petter Urkedal <paurkedal@gmail.com>
+
+       * alloc.c (GC_check_fl_marks): Re-read each pointer atomically before
+       following the pointed-to link and bail out if the result is different
+       (this can happen if the thread has popped the object off the
+       free-list); the function is a no-op if AO_load is unavailable.
+
+2012-04-21  Ivan Maidanski <ivmai@mail.ru>
+
+       * pthread_support.c (GC_remove_all_threads_but_me): Call
+       GC_remove_specific after destroying thread-local list.
+
+2012-04-20  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_check_fl_marks): Change prototype (pass pointer to
+       "freelist" element instead of value); do not define the function if
+       THREAD_LOCAL_ALLOC undefined.
+       * include/private/gc_priv.h (GC_check_fl_marks): Likewise.
+       * alloc.c (GC_check_fl_marks): Skip check if the argument points to
+       a special (non-pointer) value; update comment; rename "q" local
+       variable to "list".
+       * thread_local_alloc.c (GC_check_tls_for): Update code according to
+       GC_check_fl_marks functionality change (remove checks for special
+       value).
+
+2012-04-17  Niklas Therning <niklas@therning.org>
+
+       * include/private/gcconfig.h (HAVE_BUILTIN_UNWIND_INIT): Do not define
+       for clang (as __builtin_unwind_init seems to be a no-op in the latest
+       clang release).
+
+2012-04-12  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/pthread_support.h (DETACHED): Fix a typo in comment.
+
+2012-04-02  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure: Regenerate.
+       * include/private/config.h.in : Likewise.
+
+2012-04-02  Ivan Maidanski <ivmai@mail.ru>
+
+       * doc/README.macros (NO_HANDLE_FORK): Replace back with HANDLE_FORK
+       and update.
+       * include/private/gcconfig.h (CAN_HANDLE_FORK): Define also for Darwin
+       in case of MPROTECT_VDB.
+       * misc.c (GC_set_handle_fork): Handle Darwin properly; add comment.
+       * os_dep.c (GC_dirty_init): Do not turn on GC_dirty_maintained for
+       Darwin if GC_handle_fork is on; add comment; remove FIXME.
+       * pthread_support.c (GC_fork_prepare_proc): Remove WARN for Darwin
+       (since GC_dirty_maintained is off in that case).
+       * pthread_support.c (GC_fork_child_proc): Remove comment (for Darwin).
+
+2012-04-02  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc.h (GC_set_handle_fork): New API function.
+       * misc.c (GC_set_handle_fork): Likewise.
+       * include/private/gc_priv.h (GC_handle_fork): New internal variable
+       declaration (only if CAN_HANDLE_FORK).
+       * misc.c (GC_handle_fork): New internal variable (defined only if
+       CAN_HANDLE_FORK); initialize to TRUE if HANDLE_FORK.
+       * include/private/gcconfig.h (HANDLE_FORK): Replace with
+       CAN_HANDLE_FORK.
+       * pthread_support.c (HANDLE_FORK): Likewise.
+       * win32_threads.c (HANDLE_FORK): Likewise.
+       * include/private/gcconfig.h (CAN_HANDLE_FORK): Always define macro if
+       HANDLE_FORK.
+       * pthread_support.c (GC_thr_init): Replace HANDLE_FORK with
+       CAN_HANDLE_FORK; call pthread_atfork only if GC_handle_fork; update
+       the comment.
+       * win32_threads.c (GC_thr_init): Likewise.
+       * tests/test.c (NO_TEST_HANDLE_FORK): Define new macro if fork
+       handling is not supported (or is a no-op) on the target.
+       * tests/test.c (INIT_FORK_SUPPORT): New macro (invoke
+       GC_set_handle_fork unless NO_TEST_HANDLE_FORK).
+       * tests/test.c (GC_OPT_INIT): New macro (defined to GC_INIT or empty).
+       * tests/test.c (GC_COND_INIT): Use INIT_FORK_SUPPORT and GC_OPT_INIT.
+       * tests/test.c (run_one_test): Test NO_TEST_HANDLE_FORK (instead of
+       target-specific macros).
+       * win32_threads.c (GC_remove_all_threads_but_me, GC_fork_prepare_proc,
+       GC_fork_parent_proc, GC_fork_child_proc): Do not test GC_PTHREADS.
+       * configure.ac (HANDLE_FORK, NO_HANDLE_FORK): Update message.
+
+2012-02-20  Ivan Maidanski <ivmai@mail.ru>
+
+       * pthread_support.c (GC_thr_init): Abort on pthread_atfork failure
+       (only if HANDLE_FORK).
+
+2012-03-30  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc.h (GC_HAVE_GET_HEAP_USAGE_SAFE): Remove public HAVE_
+       macro (since function availability could be determined by autotools);
+       update the comment.
+
+2012-03-27  Andy Wingo <wingo@pobox.com>
+
+       * configure.ac: Add --enable-handle-fork option; if explicitly passed,
+       enables or disables the pthread_atfork support; if not passed, the
+       default, as determined by gcconfig.h, is to enable HANDLE_FORK if it
+       is supported on the target platform.
+
+2012-03-28  Ivan Maidanski <ivmai@mail.ru>
+
+       * doc/README.solaris2 (SOLARIS THREADS): Update.
+       * doc/overview.html: Remove information about Solaris old-style
+       threads support.
+
+2012-03-26  Ivan Maidanski <ivmai@mail.ru>
+
+       * dyn_load.c: Fix a typo and improve comment (for Android).
+
+2012-03-25  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc_mark.h (GC_clear_stack): New API function.
+       * include/private/gc_priv.h (GC_clear_stack): Remove declaration.
+       * misc.c (GC_clear_stack): Replace GC_INNER with GC_API; add GC_CALL
+       calling conventions modifier.
+
+2012-03-25  Ivan Maidanski <ivmai@mail.ru>
+
+       * allchblk.c (GC_hblkfreelist, GC_free_bytes): Do not define array as
+       STATIC again but only if GC_GCJ_SUPPORT (for GNU GCJ client).
+       * blacklst.c (GC_is_black_listed): Do not define as GC_INNER again
+       (for GNU GCJ client).
+       * include/private/gc_priv.h (GC_is_black_listed): Likewise.
+       * include/private/gc_priv.h (GC_hblkfreelist): Restore removed
+       declaration (but only if GC_GCJ_SUPPORT).
+       * reclaim.c (GC_n_set_marks): Do not define as STATIC again (for GCJ);
+       update the comment.
+
+2012-03-24  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc.h (HIDE_POINTER): Test GC_I_HIDE_POINTERS macro (as
+       a synonym to I_HIDE_POINTERS) again (remains for backward
+       compatibility only).
+
+2012-03-24  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc.h (GC_PTR): Add typedef again (for source-level backward
+       compatibility useful for clients currently using gcc_boehmgc or
+       mono_libgc).
+
+2012-03-16  Ivan Maidanski <ivmai@mail.ru>
+
+       * tests/test.c (GC_ALPHA_VERSION): Define to GC_TMP_ALPHA_VERSION if
+       not defined by gc_version.h.
+       * extra/add_gc_prefix.c (GC_ALPHA_VERSION): Likewise.
+       * extra/gcname.c (GC_ALPHA_VERSION): Likewise.
+
+2012-03-15  Ivan Maidanski <ivmai@mail.ru> (really Hans Boehm)
+
+       * malloc.c (GC_SQRT_SIZE_MAX): New macro.
+       * malloc.c (calloc): Add fast initial size overflow check to avoid
+       integer division for reasonably small values passed.
+
+2012-03-15  Ivan Maidanski <ivmai@mail.ru>
+
+       * malloc.c: Include limits.h for SIZE_MAX.
+       * malloc.c (SIZE_MAX, calloc): Define GC_SIZE_MAX instead of SIZE_MAX.
+
+2012-03-15  Xi Wang <xi.wang@gmail.com>
+
+       * malloc.c (GC_generic_malloc): Check if the allocation size is
+       rounded to a smaller value.
+       * mallocx.c (GC_generic_malloc_ignore_off_page): Likewise.
+
+2012-03-15  Xi Wang <xi.wang@gmail.com>
+
+       * malloc.c (calloc): Check multiplication overflow in calloc(),
+       assuming REDIRECT_MALLOC.
+
+2012-03-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gc_priv.h (GC_print_stats): Update the comment.
+       * tests/test.c (GC_print_stats, run_one_test, check_heap_stats):
+       Rename GC_print_stats to print_stats (since the former is used
+       internally by GC and not exported).
+       * tests/test.c (print_stats): Always define (either as a macro or
+       a static int variable) regardless of GC_DLL and SMALL_CONFIG.
+       * tests/test.c (INIT_PRINT_STATS): New macro (used to initialize
+       print_stats if needed); GETENV is used if needed and available.
+       * tests/test.c (GC_COND_INIT): Invoke INIT_PRINT_STATS.
+
+2012-03-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * misc.c: Include windows.h for Cygwin if GC_READ_ENV_FILE (required
+       for GC_envfile_init).
+       * misc.c (_MAX_PATH): Move definition to the place before the first
+       use (only Win32).
+
+2012-03-04  Ivan Maidanski <ivmai@mail.ru>
+
+       * misc.c (GC_init): Add a workaround for clang/x64 (coming with
+       Xcode 4.3) which cannot process the static assertion on
+       ((ptr_t)-1 > 0) correctly.
+
+2012-02-27  Ivan Maidanski <ivmai@mail.ru>
+
+       * win32_threads.c (GC_register_my_thread): Fix SEGV by setting "me"
+       to the newly-created thread GC descriptor (if lookup failed) before
+       altering flags of "me" (only if GC_PTHREADS); add comment (same as
+       in pthread_support.c).
+
+2012-02-27  Ivan Maidanski <ivmai@mail.ru>
+
+       * os_dep.c (GC_SysVGetDataStart): Place "volatile" keyword for
+       "result" local variable properly.
+
+2012-02-26  Ivan Maidanski <ivmai@mail.ru>
+
+       * win32_threads.c (GC_remove_all_threads_but_me): Update comment;
+       re-hash GC_threads map as thread Win32 Id in the child differs from
+       that in the parent; rename "id" local variable to "pthread_id".
+       * win32_threads.c (GC_remove_all_threads_but_me): Call
+       GC_setspecific (if THREAD_LOCAL_ALLOC) to re-assign Win32-based
+       thread-local pointer to 'tlfs' (identified by GC_thread_key) of the
+       current thread.
+
+2012-02-26  Ivan Maidanski <ivmai@mail.ru>
+
+       * pthread_support.c (GC_remove_all_threads_but_me): Refine comment for
+       stop_info.mach_thread update.
+       * pthread_support.c (GC_remove_all_threads_but_me): Call
+       GC_setspecific (if THREAD_LOCAL_ALLOC) to re-assign thread-local
+       pointer to 'tlfs' (identified by GC_thread_key) of the current thread
+       (except for USE_CUSTOM_SPECIFIC).
+
+2012-02-25  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure: Regenerate.
+
+2012-02-25  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure.ac (win32_threads): Set variable for "mingw" target
+       (causing definition of "WIN32_THREADS" AM conditional which, in turn,
+       causes win32_threads.c to be compiled and put to libgc.a).
+
+2012-02-25  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gc_priv.h (SIG_SUSPEND): Do not define for Cygwin
+       and pthreads-w32 (since signals are not used for threads
+       suspend/resume).
+
+2012-02-24  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gcconfig.h (HANDLE_FORK): Define also for Cygwin
+       (but not for win32-pthreads).
+       * win32_threads.c: Include unistd.h if HANDLE_FORK (for
+       pthread_atfork).
+       * win32_threads.c (GC_wait_for_gc_completion): Add wait_for_all
+       argument.
+       * win32_threads.c (GC_unregister_my_thread, GC_thread_exit_proc): Pass
+       FALSE ("wait_for_all" argument) to GC_wait_for_gc_completion.
+       * win32_threads.c (GC_remove_all_threads_but_me, GC_fork_prepare_proc,
+       GC_fork_parent_proc, GC_fork_child_proc): New functions (similar to
+       that in pthread_support.c) if HANDLE_FORK.
+       * win32_threads.c (GC_thr_init): Invoke pthread_atfork if HANDLE_FORK.
+
+2012-02-24  Ivan Maidanski <ivmai@mail.ru>
+
+       * os_dep.c (GC_dirty_init): Add FIXME regarding fork (Darwin).
+       * pthread_support.c (GC_remove_all_threads_but_me): Update mach_thread
+       for "me" (Darwin).
+       * pthread_support.c (GC_fork_prepare_proc): Output warning if
+       GC_dirty_maintained (if DARWIN and MPROTECT_VDB).
+       * pthread_support.c (GC_fork_prepare_proc, GC_fork_child_proc): Add
+       FIXME (for Darwin).
+       * tests/test.c (run_one_test): Do not test fork() for Darwin with
+       incremental mode on (if HANDLE_FORK); add FIXME.
+
+2012-02-21  Ivan Maidanski <ivmai@mail.ru>
+
+       * win32_threads.c (GC_wait_for_gc_completion): Add function (similar
+       implementation as in pthread_support.c).
+       * win32_threads.c (GC_unregister_my_thread, GC_thread_exit_proc):
+       Call GC_wait_for_gc_completion to prevent collecting from unregistered
+       thread; remove FIXME.
+
+2012-02-21  Ivan Maidanski <ivmai@mail.ru>
+
+       * tests/test.c: Include unistd.h for fork() declaration if HANDLE_FORK
+       (and THREADS).
+
+2012-02-20  Ivan Maidanski <ivmai@mail.ru> (mostly really Andy Wingo)
+
+       * doc/README.macros (HANDLE_FORK): Replace with NO_HANDLE_FORK; update
+       the documentation.
+       * include/private/gcconfig.h (HANDLE_FORK): Explicitly define if
+       GC_PTHREADS unless already defined or NO_HANDLE_FORK is defined, or
+       unsupported on the target.
+
+2012-02-16  Ivan Maidanski <ivmai@mail.ru>
+
+       * mark.c (GC_push_all, GC_push_selected): Properly check for empty
+       region after boundaries alignment (for the case when boundaries
+       unaligned and the region is short than one word); simplify the checked
+       condition.
+
+2012-02-16  Ivan Maidanski <ivmai@mail.ru>
+
+       * finalize.c (GC_finalizer_nested): Change type from char to int to
+       force GC symbols proper alignment for some compilers (e.g., Watcom);
+       add comment.
+       * finalize.c (GC_check_finalizer_nested): Cast GC_finalizer_nested
+       properly (since it holds an unsigned char value).
+       * os_dep.c (GC_get_maps): Remove static "init_buf" variable (of char
+       size) and initialize "maps_buf" to NULL since it is allocated anyway
+       (since maps_size is non-zero).
+       * os_dep.c (GC_register_data_segments): Remove static "dummy" variable
+       (of char size) and use GC_pages_executable instead.
+
+2012-02-14  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gcconfig.h (NO_DYLD_BIND_FULLY_IMAGE): Do not define
+       if already defined (e.g., by compiler -D option).
+
+2012-02-10  Ivan Maidanski <ivmai@mail.ru>
+
+       * mark_rts.c (GC_add_roots_inner): Fix update of GC_root_size value
+       for Win32 (adjust GC_root_size before altering r_start/r_end).
+
+2012-02-01  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc.h (GC_dont_gc): Improve comment (add note for new client
+       code).
+       * include/gc.h (GC_is_disabled): New API function.
+       * misc.c (GC_is_disabled): Likewise.
+
+2012-02-01  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc.h (GC_stackbottom): Improve comment (add note for
+       new client code).
+
+2012-02-01  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc.h (GC_base): Fix a typo in the comment.
+
+2012-02-01  Ivan Maidanski <ivmai@mail.ru>
+
+       * cord/cordtest.c (main): Print "SUCCEEDED" message to stdout
+       instead of stderr.
+
+2012-01-31  Ivan Maidanski <ivmai@mail.ru>
+
+       * allchblk.c (GC_add_to_fl): Append ';' after FREE_ASSERT().
+       * allchblk.c (GC_remove_from_fl): Fix a typo in a comment.
+
+2012-01-26  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gcconfig.h (USE_GET_STACKBASE_FOR_MAIN): Define if
+       PLATFORM_ANDROID.
+
+2012-01-26  Ivan Maidanski <ivmai@mail.ru>  (really Daniel R. Grayson)
+
+       * mark_rts.c (GC_add_roots_inner): Round "b" pointer up to word
+       boundary.
+       * include/gc.h (GC_add_roots): Update the comment.
+
+2012-01-24  Ivan Maidanski <ivmai@mail.ru>
+
+       * pthread_support.c (STAT_READ, STAT_BUF_SIZE): Move the definition
+       out of PLATFORM_ANDROID condition.
+       * pthread_support.c (GC_get_nprocs_present): New static function
+       obtaining number of avalable CPUs from
+       "/sys/devices/system/cpu/present" (only Linux/arm excluding NaCl).
+       * pthread_support.c (GC_thr_init): Invoke GC_get_nprocs_present
+       (unless set from the environment variable) to workaround a bug in
+       some Linux/arm kernels (including Android).
+
+2012-01-24  Ivan Maidanski <ivmai@mail.ru>
+
+       * pthread_support.c (GC_get_nprocs): Change "result" local variable
+       type to int from word (to match returned value type); remove redundant
+       cast; initialize "result" variable just before its use.
+
+2012-01-23  Ivan Maidanski <ivmai@mail.ru>
+
+       * os_dep.c (GC_sigbus_count): Fix a typo in a comment.
+
+2012-01-20  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure.ac (AC_INIT): Update bug reports email.
+       * doc/gcdescr.html: Likewise.
+       * doc/README.cords: Likewise.
+       * doc/overview.html: Fix email address.
+
+2012-01-18  Ivan Maidanski <ivmai@mail.ru>
+
+       * tests/realloc_test.c (main): Prevent NULL pointer dereference
+       (exit with an error message in case of NULL returned by GC_malloc).
+
+2012-01-17  Ivan Maidanski <ivmai@mail.ru>
+
+       * cord/cordtest.c (FNAME1, FNAME2): Do not specify folder
+       (platform-dependent) for temporary file; use same short file name
+       (DOS-compatible) for all targets.
+
+2012-01-13  Ivan Maidanski <ivmai@mail.ru>
+
+       * extra/gc.c: Include gc_pthread_redirects.h (unless
+       GC_NO_THREAD_REDIRECTS) to restore thread calls macro-based
+       redirection after the corresponding undef's in pthread_support.c.
+       * win32_threads.c: Restore thread calls macro-based redirection
+       (unless GC_NO_THREAD_REDIRECTS) at the file end.
+       * extra/gc.c: Remove "file not well tested" comment.
+
+2012-01-10  Ivan Maidanski <ivmai@mail.ru>
+
+       * pthread_stop_world.c (GC_restart_handler): Preserve errno value in
+       case of sem_post or GC_log_printf invocation inside.
+
+2011-12-30  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile.in: Regenerate.
+
+2011-12-30  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile.am (pkginclude_HEADERS): Remove gc_allocator.h
+       entry.
+       * Makefile.am (include_HEADERS): Add include/extra/gc_cpp.h entry
+       (only if CPLUSPLUS).
+       * include/include.am (pkginclude_HEADERS): Remove include/gc_cpp.h
+       entry.
+       * include/include.am (include_HEADERS): Remove include/extra/gc_cpp.h
+       entry.
+
+2011-12-30  Ivan Maidanski <ivmai@mail.ru>
+
+       * misc.c (GC_init): Append ';' after GC_ASSERT().
+       * os_dep.c (GC_protect_heap): Likewise.
+
+2011-12-30  Ivan Maidanski <ivmai@mail.ru>
+
+       * tests/test_cpp.cc (GC_API_PRIV): New macro (same definition as in
+       gc_priv.h).
+       * tests/test_cpp.cc (GC_printf): Use GC_API_PRIV instead of GC_API.
+
+2011-12-30  Ivan Maidanski <ivmai@mail.ru>
+
+       * dyn_load.c (GC_dyld_image_add, GC_dyld_image_remove): Declare i, j
+       local variables as unsigned (to prevent compiler warning in
+       a comparison involving sizeof)
+
+2011-12-27  Ivan Maidanski <ivmai@mail.ru>  (really Richard Sandiford)
+
+       * include/private/gcconfig.h (HBLKSIZE): Define for MIPS.
+
+2011-12-27  Ivan Maidanski <ivmai@mail.ru>  (really David Daney)
+
+       * include/private/gcconfig.h (CPP_WORDSZ, ALIGNMENT): Handle
+       mips64-linux n64 ABI.
+
+2011-12-15  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure: Regenerate.
+
+2011-12-15  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure.ac (ac_cv_fno_strict_aliasing): New variable (set to
+       "skipped" if the client passed "-fstrict-aliasing" option to CFLAGS
+       else set to "yes" if GCC supports "-fno-strict-aliasing" option,
+       otherwise set to "no").
+       * configure.ac (CFLAGS): Append "-fno-strict-aliasing" if
+       ac_cv_fno_strict_aliasing is "yes" (only if GCC).
+
+2011-12-13  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure: Regenerate.
+
+2011-12-13  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure.ac (ac_is_dgux): Move down to below gc-debug processing
+       (DG/UX) since it uses "enable_gc_debug" variable; remove FIXME.
+
+2011-12-13  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure.ac (CFLAGS, CXXFLAGS): Preserve C/C++ flags passed by
+       client (DG/UX only); remove code duplication (put common flags to
+       "dgux_spec_opts" variable).
+
+2011-11-23  Ivan Maidanski <ivmai@mail.ru>  (really Bruce Mitchener)
+
+       * README: Fix typos.
+       * doc/README.cmake: Likewise.
+       * doc/README.darwin: Likewise.
+       * autogen.sh: Set file 'executable' bit.
+
+2011-11-15  Ivan Maidanski <ivmai@mail.ru>
+
+       * pthread_support.c (GC_is_thread_tsd_valid): Check tsd more correctly
+       using GC_thread and thread_local_freelists declarations; remove FIXME.
+       * win32_threads.c (GC_is_thread_tsd_valid): Likewise.
+
+2011-11-15  Ivan Maidanski <ivmai@mail.ru>
+
+       * thread_local_alloc.c (GC_malloc, GC_malloc_atomic): Test result of
+       GC_getspecific() for NULL in all cases except for USE_COMPILER_TLS and
+       USE_WIN32_COMPILER_TLS (i.e., no-op implementation of GC_getspecific).
+
+2011-10-10  Ivan Maidanski <ivmai@mail.ru>  (really Linas Vepstas)
+
+       * include/private/gcconfig.h: Add machine description for Hexagon.
+
+2011-09-30  Ivan Maidanski <ivmai@mail.ru>
+
+       * tests/test.c (mktree): Insert CHECK_OUT_OF_MEMORY to report mktree()
+       out-of-memory failures.
+       * tests/trace_test.c (mktree): Test whether GC_MALLOC_ATOMIC returns
+       NULL (exit with an error code and the appropriate message printed in
+       this case).
+
+2011-09-23  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure: Regenerate.
+
+2011-09-23  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure.ac (NO_DEBUGGING): Define based on testing enable_gc_debug
+       value (instead of based on with_cross_host value).
+
+2011-09-23  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure.ac (THREAD_LOCAL_ALLOC): Test enable_shared and
+       enable_static values properly when setting THREAD_LOCAL_ALLOC
+       in case PARALLEL_MARK is off (Win32 only).
+
+2011-09-22  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure: Regenerate.
+       * include/private/config.h.in: Ditto.
+
+2011-09-22  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure.ac (GC_DLL): New AC template; define if only the dynamic
+       libraries are being built.
+       * configure.ac (THREAD_LOCAL_ALLOC): Define for Win32 implicitly
+       if static libraries are being built (i.e. GC_DLL is not defined).
+       * doc/README.win32: Update "GNU Tools" section.
+
+2011-09-22  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure.ac (THREADS): Change "posix" to "win32" in case of
+       cross-compiling to MinGW.
+
+2011-09-22  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure.ac (PARALLEL_MARK): Check --enable-parallel-mark also for
+       Solaris.
+
+2011-09-20  Ivan Maidanski <ivmai@mail.ru>
+
+       * pthread_start.c (GC_inner_start_routine): Add volatile to "me" local
+       variable to prevent its clobbering.
+
+2011-09-20  Ivan Maidanski <ivmai@mail.ru>
+
+       * tests/threadkey_test.c (main): Print a message if the test is
+       skipped.
+
+2011-09-14  Ivan Maidanski <ivmai@mail.ru>
+
+       * backgraph.c (per_object_helper): Cast "i" local variable to word
+       (instead of "sz") in a comparison.
+
+2011-09-14  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile.direct (Makefile): Add rule to create (or overwrite)
+       Makefile from Makefile.direct file.
+       * Makefile.direct (clean): Remove "base_lib", "c++" files as well.
+
+2011-09-13  Ivan Maidanski <ivmai@mail.ru>
+
+       * CMakeLists.txt (CMAKE_LEGACY_CYGWIN_WIN32): Set to 0 (required for
+       Cygwin).
+
+2011-09-13  Ivan Maidanski <ivmai@mail.ru>
+
+       * tests/test.c (check_heap_stats): Increase max_heap_sz value (for
+       32-bit targets) from 15M by 1M (as the former is hit sometimes on
+       Cygwin).
+
+2011-09-13  Ivan Maidanski <ivmai@mail.ru>
+
+       * CMakeLists.txt (cygwin): Remove "-D_REENTRANT" definition.
+       * CMakeLists.txt (cord): Add gdi32 link library.
+
+2011-09-13  Ivan Maidanski <ivmai@mail.ru>
+
+       * cord/de.c (WIN32): Define also for Cygwin.
+
+2011-09-13  Ivan Maidanski <ivmai@mail.ru>
+
+       * gc_cpp.cc (operator delete): Do not define for Cygwin since already
+       defined in include/gc_cpp.h file.
+
+2011-09-08  Ivan Maidanski <ivmai@mail.ru>
+
+       * cord/cordprnt.c (CORD_vsprintf): Cast "prec" and "width" local
+       variables to size_t.
+       * dyn_load.c (GC_register_dynamic_libraries_dl_iterate_phdr): Change
+       type of "i" local variable to int.
+       * pthread_support.c (start_mark_threads): Likewise.
+       * os_dep.c (GC_repeat_read): Change type of "num_read" to size_t.
+       * os_dep.c (GC_get_maps): Change type of "result" local variable from
+       int to ssize_t; cast "result" to size_t in comparison.
+       * pthread_support.c (GC_remove_all_threads_but_me): Cast "result" to
+       int.
+       * pthread_support.c (GC_wait_for_gc_completion): Change type of
+       "old_gc_no" local variable to word.
+       * pthread_support.c (GC_lock): Change type of "i" local variable to
+       unsigned.
+       * tests/staticrootstest.c (main): Cast sizeof() value to int in
+       comparisons.
+
+2011-09-07  Ivan Maidanski <ivmai@mail.ru>
+
+       * os_dep.c (GC_find_limit_with_bound): Inside loop, set result local
+       volatile variable and do break instead of return (this also suppresses
+       compiler warning about the potential clobbering of "bound" variable
+       by setjmp).
+
+2011-09-07  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc.h (GC_get_heap_size, GC_get_free_bytes,
+       GC_get_unmapped_bytes, GC_get_bytes_since_gc, GC_get_total_bytes):
+       Refine comment.
+       * include/gc.h (GC_HAVE_GET_HEAP_USAGE_SAFE): New macro.
+       * include/gc.h (GC_get_heap_usage_safe): New API function.
+       * misc.c (GC_get_heap_usage_safe): Likewise.
+       * include/gc_mark.h (GC_get_heap_size_inner, GC_get_free_bytes_inner):
+       Remove API function.
+       * misc.c (GC_get_heap_size_inner, GC_get_free_bytes_inner): Likewise.
+       * misc.c (GC_get_heap_size): Add comment.
+       * misc.c (GC_get_heap_size, GC_get_free_bytes, GC_get_unmapped_bytes,
+       GC_get_bytes_since_gc, GC_get_total_bytes): Remove locking.
+       * misc.c (GC_get_unmapped_bytes): Do not test USE_MUNMAP (not needed
+       after locking removal).
+       * misc.c (GC_get_bytes_since_gc, GC_get_total_bytes): Cast result to
+       size_t.
+
+2011-09-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc_mark.h (GC_set_start_callback): Refine comment (the
+       function acquires the GC lock).
+       * include/gc.h (GC_set_all_interior_pointers, GC_set_stop_func,
+       GC_get_stack_base): Likewise.
+       * include/gc.h (GC_get_version, GC_get_gc_no, GC_get_parallel,
+       GC_set_find_leak, GC_get_all_interior_pointers,
+       GC_get_dont_precollect, GC_get_pages_executable, GC_set_max_heap_size,
+       GC_set_force_unmap_on_gcollect): Refine comment (the function is
+       lock-free).
+
+2011-08-31  Ivan Maidanski <ivmai@mail.ru>
+
+       * tests/initsecondarythread.c: Include windows.h instead of pthread.h
+       unless GC_PTHREADS.
+       * tests/thread_leak_test.c: Likewise.
+       * tests/initsecondarythread.c (thread): Use WINAPI and set return
+       type to DWORD unless GC_PTHREADS.
+       * tests/thread_leak_test.c (test): Likewise.
+       * tests/initsecondarythread.c (main): Use HANDLE, CreateThread and
+       WaitForSingleObject instead of pthread_t, pthread_create and
+       pthread_join, respectively, unless GC_PTHREADS.
+       * tests/thread_leak_test.c (main): Likewise.
+
+2011-08-31  Ivan Maidanski <ivmai@mail.ru>
+
+       * tests/initsecondarythread.c (GC_NO_THREAD_REDIRECTS): Add comment.
+       * tests/initsecondarythread.c: Include stdio.h.
+       * tests/initsecondarythread.c (thread): Cast result of malloc to void;
+       return arg parameter instead of NULL (to suppress compiler warnings).
+       * tests/initsecondarythread.c (main): Define "code" local variable;
+       store result of pthread_create and pthread_join to "code" variable;
+       exit application with an error code (with the corresponding error
+       message) if pthread_create or pthread_join fails.
+
+2011-08-31  Ivan Maidanski <ivmai@mail.ru>  (really Jean-Claude Beaudoin)
+
+       * include/private/gcconfig.h (GETCONTEXT_FPU_EXCMASK_BUG): Add FIXME
+       that this is no longer needed with the recent GLibC.
+
+2011-08-24  Ivan Maidanski <ivmai@mail.ru>
+
+       * hpux_test_and_clear.s: Remove.
+       * Makefile.am (EXTRA_DIST): Remove hpux_test_and_clear.s.
+       * Makefile.direct (SRCS): Ditto.
+       * Makefile.dj (SRCS): Ditto.
+       * Makefile.dj (SRCS): Remove missing gcc_support.c,
+       include/gc_alloc.h, include/gc_local_alloc.h.
+       * doc/gcdescr.html: Remove information about gc_local_alloc.h.
+       * doc/gcinterface.html: Ditto.
+       * doc/scale.html: Ditto.
+       * doc/gcinterface.html: Remove information about gc_alloc.h.
+       * tests/test_cpp.cc: Don't include missing old gc_alloc.h (include
+       new_gc_alloc.h instead); don't test __GNUC__.
+       * tests/test_cpp.cc (main): Use gc_alloc class instead of alloc (don't
+       test __GNUC__).
+       * windows-untested/vc60/gc.dsp (SOURCE): Don't include missing
+       gc_alloc.h, gc_local_alloc.h.
+       * windows-untested/vc60/libgc.dsp (SOURCE): Ditto.
+       * windows-untested/vc70/gc.vcproj (Header Files): Ditto.
+       * windows-untested/vc70/libgc.vcproj (Header Files): Ditto.
+       * windows-untested/vc71/gc.vcproj (Header Files): Ditto.
+       * windows-untested/vc71/libgc.vcproj (Header Files): Ditto.
+       * Makefile.in: Regenerate.
+
+2011-08-21  Ivan Maidanski <ivmai@mail.ru>
+
+       * allchblk.c (GC_allochblk_nth): Cast MAX_BLACK_LIST_ALLOC and
+       HBLKSIZE to signed_word.
+       * mallocx.c (GC_generic_malloc_many): Cast my_bytes_allocd to word.
+       * mark.c (GC_do_local_mark): Cast the result of local_top minus
+       local_mark_stack to word (since is non-negative).
+       * misc.c (GC_base): Declare sz as unsigned word.
+       * misc.c (GC_enable_incremental): Cast bytes_written to size_t in
+       comparison to len.
+       * obj_map.c (GC_initialize_offsets): Declare 'i' as unsigned.
+       * os_dep.c (GC_or_pages): Ditto.
+       * typd_mlc.c (GC_init_explicit_typing): Ditto.
+       * ptr_chck.c (GC_is_visible): Cast the result of p minus base to word.
+       * typd_mlc.c (GC_make_descriptor): Cast last_set_bit to word (since
+       non-negative) when compared to BITMAP_BITS.
+
+2011-08-14  Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
+
+       * configure.ac: Remove checks for ar and ranlib.
+       * configure.ac: Replace AC_CHECK_HEADER with PKG_CHECK_MODULES when
+       checking for libatomic_ops.  The macro sets the appropriate flags, so
+       simplify accordingly.
+       * Makefile.am, configure.ac: Set ATOMIC_OPS_CFLAGS in configure.ac
+       instead of conditionally doing it in Makefile.am, to be more
+       consistent with the pkg-config case.
+       * configure.ac: Fix a typo and some phrases.
+       * Makefile.in: Regenerate.
+       * aclocal.m4: Ditto.
+       * configure: Ditto.
+
+2011-08-11  Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
+
+       * configure.ac: Since we no longer bundle libatomic_ops, we must
+       check for the sub-directory before using it, in case we didn't
+       find an installed version.
+       * Makefile.am: Don't include libatomic_ops in the distribution.
+       * Makefile.in: Regenerate.
+       * configure: Ditto.
+
+2011-08-09  Ivan Maidanski <ivmai@mail.ru> (really Jie Liu)
+
+       * configure.ac: Add GC_RTEMS_PTHREADS AH_TEMPLATE and configure
+       for rtems.
+       * os_dep.c: Add GC_get_stack_base if GC_RTEMS_PTHREADS for rtems.
+       * pthread_stop_world.c (GC_stop_init): Add ifdef SA_RESTART.
+       * pthread_stop_world.c (GC_stop_init): Use sigprocmask for rtems
+       when defined GC_RTEMS_PTHREADS.
+       * pthread_support.c: Exclude sys/mman.h for rtems.
+       * pthread_support.c (GC_thr_init): Set default GC_nprocs (1) for
+       rtems.
+       * include/gc_config_macros.h: Define GC_RTEMS_PTHREADS for rtems
+       pthread and define GC_NO_DLOPEN for rtems.
+       * include/private/gc_locks.h: Define USE_PTHREAD_LOCKS for rtems.
+       * include/private/gcconfig.h: Use rtems_get_stack_bottom()
+       for InitStackBottom; and use SIGUSR1 for SIG_SUSPEND, SIGUSR2
+       for SIG_THR_RESTART on rtems.
+       * include/private/thread_local_alloc.h: Use USE_PTHREAD_SPECIFIC
+       for rtems.
+       * tests/test.c (Init): Use exit(0) for rtems instead of return.
+       * configure: Regenerate.
+       * include/private/config.h.in: Ditto.
+
+2011-07-26  Ivan Maidanski <ivmai@mail.ru>
+
+       * tests/realloc_test.c: New file.
+       * tests/tests.am (TESTS, check_PROGRAMS): Add realloc_test.
+       * .cvsignore: Add realloc_test.
+       * configure: Regenerate.
+       * Makefile.in: Ditto.
+
+2011-07-14  Ivan Maidanski <ivmai@mail.ru>
+
+       * .cvsignore: Add more auto-generated files.
+
+2011-07-14  Ivan Maidanski <ivmai@mail.ru>
+
+       * new_hblk.c (GC_build_fl): Adjust "h" local variable cast type
+       when setting obj_link (to prevent compiler warning); reformat the
+       comment.
+       * tests/test.c (reverse_test_inner): Use proper type when touching
+       "b" and "c" local variables (to prevent compiler warning).
+
+2011-07-05  Ivan Maidanski <ivmai@mail.ru>
+
+       * misc.c (GC_init): Use HOTTER_THAN (instead of STACK_GROWS_DOWN)
+       for GC_stackbottom assertion.
+       * os_dep.c (GC_enclosing_mapping): Define only if IA64 or
+       INCLUDE_LINUX_THREAD_DESCR; make GC_INNER.
+       * pthread_support.c (GC_enclosing_mapping): Declare (only if
+       INCLUDE_LINUX_THREAD_DESCR).
+       * os_dep.c (GC_get_main_stack_base): Don't call pthread_getattr_np
+       if REDIRECT_MALLOC as the former is observed to call redirected
+       malloc (while GC is not initialized yet) on some Linux platforms.
+       * include/private/gc_priv.h (MAX_HEAP_SECTS): Don't use a smaller
+       value for SMALL_CONFIG if USE_PROC_FOR_LIBRARIES defined.
+
+2011-07-05  Ivan Maidanski <ivmai@mail.ru>
+
+       * malloc.c (GC_init_lib_bounds): Call GC_init (to ensure GC is
+       initialized before doing GC_text_mapping).
+       * misc.c (GC_init): Add a check for GC_init recursion in case of
+       malloc is redirected (abort with the corresponding message).
+       * pthread.c (GC_thr_init): Place GC_add_roots_inner call into
+       "else" branch to prevent "local variable might be uninitialized"
+       compiler warning; add comment.
+
+2011-07-05  Ivan Maidanski <ivmai@mail.ru>
+
+       * dyn_load.c (GC_register_dynamic_libraries): Remove duplicate
+       call of GC_FirstDLOpenedLinkMap (twice).
+       * dyn_load.c (GC_register_main_static_data): Add comment.
+       * cord/cordbscs.c (CORD_riter): Check for empty string passed (do
+       not call CORD_riter4 if CORD_len() returned zero).
+       * cord/cordbscs.c (CORD_init_min_len): Replace the K&R-style
+       function definition with the ANSI C one.
+       * cord/cordbscs.c: Expand all tabs to spaces; remove
+       trailing spaces at EOLn.
+       * tests/threadkey_test.c (on_thread_exit_inner): Check
+       GC_pthread_create() result.
+
+2011-07-04  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gcconfig.h (etext): Don't define if unused
+       (NetBSD).
+       * include/private/gcconfig.h (GC_data_start, DATASTART): Define
+       for NetBSD/amd64 if ELF.
+       * include/private/gcconfig.h (SEARCH_FOR_DATA_START): Don't define
+       for NetBSD/amd64 if ELF.
+
+2011-07-04  Ivan Maidanski <ivmai@mail.ru> (mostly really Andy Wingo)
+
+       * configure.ac (GC_THREADS): Refine the comment.
+       * configure.ac (GC_WIN32_PTHREADS): Add template.
+       * configure.ac (cygwin, win32): Define GC_WIN32_THREADS instead of
+       GC_THREADS.
+       * configure.ac (pthreads): Add mingw target (GC_WIN32_PTHREADS).
+       * configure: Regenerate.
+       * include/private/config.h.in: Ditto.
+       * include/private/gc_locks.h (GC_WIN32_PTHREADS): Remove nested
+       test for the macro; add comment.
+
+2011-07-01  Ivan Maidanski <ivmai@mail.ru>
+
+       * win32_threads.c (CHECK_LOOKUP_MY_THREAD): New macro definition.
+       * win32_threads.c (GC_reset_finalizer_nested,
+       GC_check_finalizer_nested, GC_unregister_my_thread,
+       GC_do_blocking_inner, GC_call_with_gc_active, GC_init_parallel):
+       Insert CHECK_LOOKUP_MY_THREAD before dereferencing thread
+       descriptor pointer (to instruct a LINT-like tool that it is ok to
+       dereference the pointer).
+       * win32_threads.c (GC_get_next_stack): Assert plast_stack_min is
+       non-NULL if current_min is not ADDR_LIMIT (for a LINT-like tool).
+       * win32_threads.c (GC_init_parallel): Define and use "me" local
+       variable.
+       * cord/cordtest.c (test_basics): Test CORD_substr() result is
+       non-NULL.
+       * cord/cordtest.c (test_extras): Test fopen() result is non-NULL.
+       * cord/cordtest.c (test_basics, test_extras, test_printf, main):
+       Replace the K&R-style function definition with the ANSI C one.
+       * cord/cordtest.c: Expand all tabs to spaces; remove
+       trailing spaces at EOLn.
+       * include/private/gc_priv.h (ABORT): Define as abort() when
+       checking the code with a LINT-like tool (Win32 only).
+       * tests/test.c (FAIL): Ditto.
+       * tests/test.c (CHECH_GCLIB_VERSION): New macro (to check that the
+       version of libgc.so used at runtime matches that at compile time).
+       * tests/test.c (GC_COND_INIT): Use CHECH_GCLIB_VERSION.
+       * tests/test.c (CHECK_OUT_OF_MEMORY): New macro (to test malloc
+       result for out of memory).
+       * tests/test.c (cons, small_cons, small_cons_uncollectable,
+       gcj_cons, reverse_test_inner, mktree, alloc8bytes, typed_test,
+       run_one_test): Use CHECK_OUT_OF_MEMORY.
+
+2011-06-30  Ivan Maidanski <ivmai@mail.ru>
+
+       * dyn_load.c (GC_register_map_entries): Remove "count" local
+       variable as unused.
+       * gc_dlopen.c (disable_gc_for_dlopen): Define only if not
+       USE_PROC_FOR_LIBRARIES.
+       * malloc.c (calloc): Add parentheses around '&&' operator.
+       * mark.c (GC_noop_sink): New global variable (instead of a static
+       local variable inside GC_noop1).
+       * mark.c (GC_noop1): Use GC_noop_sink variable (to prevent
+       "variable set but not used" compiler warning).
+       * include/private/gcconfig.h (USE_PROC_FOR_LIBRARIES): Define only
+       if undefined yet.
+       * tests/smash_test.c (main): Don't dereference "p" local variable
+       if it is NULL.
+       * tests/staticrootslib.c (main): Ditto.
+
+2011-06-30  Ivan Maidanski <ivmai@mail.ru>
+
+       * pthread_support.c (GC_segment_is_thread_stack): Replace '&'
+       operator with '&&' one in conditional expressions.
+       * specific.c (remove_specific): Dereference "entry" local variable
+       only if it is non-NULL.
+       * include/gc.h (GC_NEW): Refine the comment (about the returned
+       value).
+
+2011-06-15  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc_version.h, configure.ac, doc/README: Change to
+       version 7.2alpha7.
+       * configure: Regenerate.
+
+[7.2alpha6]
+
+2011-06-14  Ivan Maidanski  <ivmai@mail.ru>
+
+       * configure_atomic_ops.sh: Remove.
+       * Makefile.direct (dist gc.tar): Remove configure_atomic_ops.sh.
+       * Makefile.am (EXTRA_DIST): Add autogen.sh.
+       * Makefile.in: Regenerate.
+       * configure: Ditto.
+
+2011-06-14  Ivan Maidanski  <ivmai@mail.ru>
+
+       * include/gc_version.h, configure.ac, doc/README: Change to
+       version 7.2alpha6.
+       * configure: Regenerate.
+
+2011-05-31  Ivan Maidanski  <ivmai@mail.ru>
+
+       * NT_STATIC_THREADS_MAKEFILE (.cpp.obj): Remove duplicate .cpp
+       filename passed.
+       * NT_X64_THREADS_MAKEFILE (.cpp.obj): Use lowercase file
+       extension.
+       * NT_X64_STATIC_THREADS_MAKEFILE (.cpp.obj): Ditto.
+       * NT_MAKEFILE (.cpp.obj): Ditto.
+
+2011-05-31  Ivan Maidanski  <ivmai@mail.ru>
+
+       * alloc.c (GC_add_current_malloc_heap, GC_build_back_graph,
+       GC_traverse_back_graph): Move prototype to gc_priv.h.
+       * checksums.c (GC_page_was_ever_dirty): Ditto.
+       * dbg_mlc.c (GC_default_print_heap_obj_proc): Ditto.
+       * dyn_load.c (GC_parse_map_entry, GC_get_maps,
+       GC_segment_is_thread_stack, GC_roots_present, GC_is_heap_base,
+       GC_get_next_stack): Ditto.
+       * finalize.c (GC_reset_finalizer_nested,
+       GC_check_finalizer_nested): Ditto.
+       * gcj_mlc.c (GC_start_debugging, GC_store_debug_info): Ditto.
+       * malloc.c (GC_extend_size_map, GC_text_mapping): Ditto.
+       * mark_rts.c (GC_mark_thread_local_free_lists): Ditto.
+       * misc.c (GC_register_main_static_data, GC_init_win32,
+       GC_setpagesize, GC_init_linux_data_start,
+       GC_set_and_save_fault_handler, GC_init_dyld, GC_init_netbsd_elf,
+       GC_initialize_offsets, GC_bl_init, GC_do_blocking_inner,
+       GC_bl_init_no_interiors): Ditto.
+       * os_dep.c (GC_greatest_stack_base_below, GC_push_all_stacks):
+       Ditto.
+       * reclaim.c (GC_check_leaked): Ditto.
+       * win32_threads.c (GC_gww_dirty_init): Ditto.
+       * darwin_stop_world.c (GC_is_mach_marker, GC_mprotect_stop,
+       GC_mprotect_resume): Move prototype to darwin_stop_world.h.
+       * pthread_support.c (GC_FindTopOfStack): Ditto.
+       * dyn_load.c (GC_cond_add_roots): Merge adjacent definitions.
+       * mark.c (GC_page_was_ever_dirty): Remove (as already declared).
+       * mark_rts.c (GC_roots_present): Change return type to void
+       pointer (to match the prototype); return NULL instead of FALSE.
+       * mark_rts.c (GC_add_roots_inner): Cast GC_roots_present() result.
+       * os_dep.c (NEED_PROC_MAPS): Move definition to gcconfig.h.
+       * os_dep.c (GC_write_fault_handler): Make STATIC.
+       * os_dep.c (GC_set_write_fault_handler): New function (only if
+       GC_WIN32_THREADS).
+       * pthread_start.c (GC_start_rtn_prepare_thread,
+       GC_thread_exit_proc): Move prototype to pthread_support.h.
+       * pthread_support.c (GC_nacl_initialize_gc_thread,
+       GC_nacl_shutdown_gc_thread, GC_unblock_gc_signals):
+       Ditto.
+       * pthread_support.c (GC_stop_init): Move prototype to
+       pthread_stop_world.h.
+       * thread_local_alloc.c (GC_check_tls_for): Reformat comment.
+       * win32_threads.c (GC_write_fault_handler): Remove prototype.
+       * win32_threads.c (GC_register_my_thread_inner): Call
+       GC_set_write_fault_handler instead of SetUnhandledExceptionFilter
+       (only if MPROTECT_VDB).
+       * doc/README.win32: Add information about DMC.
+       * include/private/gc_priv.h (GC_set_write_fault_handler): New
+       prototype (only if GC_WIN32_THREADS and MPROTECT_VDB).
+
+2011-05-31  Ivan Maidanski  <ivmai@mail.ru>
+
+       * misc.c (vsnprintf): Redirect to vsprintf() if NO_VSNPRINTF.
+
+2011-05-31  Ivan Maidanski  <ivmai@mail.ru>
+
+       * win32_threads.c (GC_unregister_my_thread): Use KNOWN_FINISHED()
+       instead of FINISHED macro.
+       * tests/test.c (check_heap_stats): Round up max_heap_sz value for
+       Win32 (same as for USE_MMAP).
+
+2011-05-31  Ivan Maidanski  <ivmai@mail.ru>
+
+       * tests/test.c (check_heap_stats): Adjust printf format specifier
+       for max_heap_sz; cast max_heap_sz accordingly.
+
+2011-05-30  Ivan Maidanski  <ivmai@mail.ru>
+
+       * doc/README.solaris2: Add note.
+
+2011-05-30  Ivan Maidanski  <ivmai@mail.ru>
+
+       * configure.ac (SOLARIS25_PROC_VDB_BUG_FIXED): Don't define for
+       Solaris/x86 2.10+.
+       * configure: Regenerate.
+
+2011-05-23  Ivan Maidanski  <ivmai@mail.ru>
+
+       * tests/threadkey_test.c (SKIP_THREADKEY_TEST): Skip the test if
+       defined; explicitly define for some targets.
+
+2011-05-23  Ivan Maidanski  <ivmai@mail.ru>
+
+       * mark.c (GC_dirty): Add prototype (only if MANUAL_VDB).
+       * stubborn.c (GC_dirty): Ditto.
+       * include/private/gcconfig.h (GWW_VDB, MPROTECT_VDB, PCR_VDB,
+       PROC_VDB): Undefine if MANUAL_VDB.
+       * include/private/gcconfig.h (DEFAULT_VDB): Don't define if
+       MANUAL_VDB.
+       * os_dep.c (async_set_pht_entry_from_index): Define for
+       MANUAL_VDB.
+       * os_dep.c (GC_read_dirty): Set GC_dirty_maintained only if
+       success; if ioctl() failed then just print warning instead of
+       aborting.
+
+2011-05-23  Ivan Maidanski  <ivmai@mail.ru>
+
+       * include/private/gc_priv.h (GC_ASSERT): Use "%d" (instead of %ld)
+       for line number printing.
+
+2011-05-23  Ivan Maidanski  <ivmai@mail.ru>
+
+       * os_dep.c (GC_read_dirty): Add debug logging if DEBUG_DIRTY_BITS
+       (for PROC_VDB only); print errors via GC_err_printf; rename "ps"
+       and "np" local variables to npages and pagesize, respectively;
+       remove "current_addr" local variable.
+       * os_dep.c: Reformat comments.
+
+2011-05-22  Ivan Maidanski  <ivmai@mail.ru>
+
+       * os_dep.c (GC_get_main_stack_base): Convert to GC_get_stack_base
+       for BeOS and OS/2; define HAVE_GET_STACK_BASE.
+       * os_dep.c (GET_MAIN_STACKBASE_SPECIAL): Define when a specific
+       GC_get_main_stack_base implementation is defined.
+       * os_dep.c (GC_get_main_stack_base): Define that based on
+       GC_get_stack_base() in a single place (only if
+       GET_MAIN_STACKBASE_SPECIAL is unset); check GC_get_stack_base()
+       result.
+
+2011-05-20  Ivan Maidanski  <ivmai@mail.ru>
+
+       * mark.c (GC_push_selected): Remove "push_fn" argument (use
+       GC_push_all directly); update the documentation; reformat the
+       comment.
+       * mark.c (GC_push_conditional): Simplify the code (for better
+       readability).
+
+2011-05-20  Ivan Maidanski  <ivmai@mail.ru>
+
+       * mark.c (alloc_mark_stack): Use FALSE/TRUE (instead of 0/1) for
+       boolean local variables.
+       * doc/README.macros (GC_PREFER_MPROTECT_VDB): Update.
+       * os_dep.c (GC_page_was_dirty, GC_page_was_ever_dirty,
+       GC_remove_protection): Define for GWW_VDB and PROC_VDB in a single
+       place.
+       * os_dep.c (GC_page_was_dirty, GC_page_was_ever_dirty): Compute
+       PHT_HASH(h) only once (store result to a local variable).
+
+2011-05-20  Ivan Maidanski  <ivmai@mail.ru>
+
+       * doc/README.solaris2: Update.
+
+2011-05-19  Ivan Maidanski  <ivmai@mail.ru> (really Jie Liu)
+
+       * include/private/gcconfig.h (end, InitStackBottom): Declare
+       extern variable for RTEMS.
+       * include/private/gcconfig.h (DATASTART, DATAEND, STACKBOTTOM):
+       Update (for RTEMS).
+       * include/private/gcconfig.h (DATAEND): Fix a typo in the macro
+       name (for RTEMS).
+       * tests/test.c (CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER):
+       Replace with CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER (for RTEMS).
+
+2011-05-18  Ivan Maidanski  <ivmai@mail.ru>
+
+       * include/private/gcconfig.h (MPROTECT_VDB): Enable for Solaris in
+       single-threaded environment.
+
+2011-05-18  Ivan Maidanski  <ivmai@mail.ru>
+
+       * include/private/gcconfig.h (MPROTECT_VDB): Undefine if PROC_VDB.
+       * tests/test.c (NUMBER_ROUND_UP): New macro.
+       * tests/test.c (check_heap_stats): Round up total expected heap
+       size to the nearest 4 MiB bound.
+       * tests/test.c (check_heap_stats): Print the current and expected
+       heap sizes in case of failure.
+
+2011-05-18  Ivan Maidanski  <ivmai@mail.ru>
+
+       * checksums.c (GC_check_blocks, GC_check_dirty): Do log printing
+       only if GC_print_stats; print errors using GC_err_printf.
+       * checksums.c (GC_check_blocks): Join adjacent printf() calls into
+       a single one.
+
+2011-05-17  Ivan Maidanski  <ivmai@mail.ru>
+
+       * pthread_support.c (pthread_join): Add assertion (check thread is
+       finished).
+       * pthread_support.c (GC_register_my_thread): Don't detach the
+       thread if invoked from the thread destructor.
+       * win32_threads.c (GC_register_my_thread): Ditto.
+       * win32_threads.c (GC_unregister_my_thread): Don't delete the
+       thread (just set FINISHED) if the thread is not detached (only if
+       GC_PTHREADS); add assertion (check the thread is not finished).
+       * tests/threadkey_test.c (main): Join some created threads.
+
+2011-05-17  Ivan Maidanski  <ivmai@mail.ru>
+
+       * pthread_support.c (GC_delete_gc_thread): Rename "gc_id" local
+       variable to "t".
+       * win32_threads.c (GC_delete_gc_thread): Ditto.
+       * pthread_support.c (pthread_join, pthread_detach,
+       pthread_cancel): Rename "thread_gc_id" local variable to "t".
+       * win32_threads.c (GC_pthread_detach): Ditto.
+       * win32_threads.c (GC_delete_gc_thread): Remove "gc_nvid" local
+       variable.
+       * win32_threads.c (GC_pthread_join): Rename "joinee" local
+       variable to "t".
+
+2011-05-16  Ivan Maidanski  <ivmai@mail.ru>
+
+       * pthread_stop_world.c (pthread_sigmask): Undefine even if not
+       DEBUG_THREADS.
+       * pthread_stop_world.c (GC_unblock_gc_signals): New function (only
+       if GC_EXPLICIT_SIGNALS_UNBLOCK).
+       * pthread_support.c (GC_unblock_gc_signals): New prototype.
+       * pthread_support.c (GC_register_my_thread_inner,
+       GC_register_my_thread): Call GC_unblock_gc_signals (only if
+       GC_EXPLICIT_SIGNALS_UNBLOCK); add comment.
+       * include/private/gcconfig.h (GC_EXPLICIT_SIGNALS_UNBLOCK): New
+       macro.
+
+2011-05-16  Ivan Maidanski  <ivmai@mail.ru>
+
+       * pthread_stop_world.c (GC_suspend_handler_inner): Remove "dummy",
+       "sig" local variables; rename my_thread local variable to "self".
+
+2011-05-13  Ivan Maidanski  <ivmai@mail.ru>
+
+       * tests/threadkey_test.c (LIMIT): Use smaller value (don't create
+       more than 30 in parallel by default).
+
+2011-05-13  Ivan Maidanski  <ivmai@mail.ru>
+
+       * tests/threadkey_test.c (key_once, main): Work around for Solaris
+       PTHREAD_ONCE_INIT.
+       * tests/threadkey_test.c (LIMIT): Use smaller value for Solaris.
+
+2011-05-13  Ivan Maidanski  <ivmai@mail.ru>
+
+       * dyn_load.c (GC_FirstDLOpenedLinkMap): Remove unused "r" local
+       variable.
+       * pthread_support.c (GC_unregister_my_thread_inner): Revert back
+       GC_remove_specific invocation; add a comment.
+       * include/private/thread_local_alloc.h (GC_remove_specific):
+       Revert back.
+       * specific.c: Expand all tabs to spaces.
+       * specific.c (slow_getspecific): Cast qtid to AO_t.
+       * include/private/specific.h (quick_thread_id): Reformat comment.
+       * include/private/specific.h (key_create, setspecific,
+       remove_specific): Remove "extern" keyword.
+       * include/private/specific.h (getspecific): Change type of "qtid"
+       local variable to unsigned long.
+
+2011-05-11  Ivan Maidanski  <ivmai@mail.ru>
+
+       * pthread_support.c (GC_check_tls): Fix "#endif" comment.
+       * include/gc.h (GC_REDIRECT_TO_LOCAL): Remove deprecated comment.
+       * include/private/thread_local_alloc.h (THREAD_LOCAL_ALLOC):
+       Remove redundant test of the macro.
+       * include/private/thread_local_alloc.h: Reformat the code.
+
+2011-05-11  Ivan Maidanski  <ivmai@mail.ru>
+
+       * backgraph.c (add_edge): Recognize DEBUG_PRINT_BIG_N_EDGES macro.
+       * os_dep.c (GC_set_and_save_fault_handler): Recognize
+       SIGACTION_FLAGS_NODEFER_HACK macro.
+       * pthread_support.c (mark_mutex): Recognize GLIBC_2_1_MUTEX_HACK
+       macro.
+       * pthread_support.c (GC_acquire_mark_lock): Remove commented out
+       code.
+       * include/gc_inline.h (GC_MALLOC_WORDS, GC_MALLOC_ATOMIC_WORDS,
+       GC_CONS): Remove trailing space (before back-slash).
+       * include/private/gc_hdrs.h (GET_BI, GET_HDR_ADDR): Ditto.
+       * include/private/gc_pmark.h (PUSH_OBJ, PUSH_CONTENTS,
+       SET_MARK_BIT_EXIT_IF_SET, LONG_MULT, PUSH_CONTENTS_HDR,
+       GC_PUSH_ONE_STACK, GC_PUSH_ONE_HEAP): Ditto.
+       * include/private/thread_local_alloc.h (GC_key_create): Ditto.
+       * include/private/gc_priv.h (SUNOS5SIGS): Don't include
+       sys/siginfo.h on Linux.
+       * include/private/gcconfig.h: Reformat comments (and some code).
+       * include/private/gcconfig.h (FORCE_WRITE_PREFETCH): New macro
+       recognized, force PREFETCH_FOR_WRITE to be defined on x86.
+       * include/private/gcconfig.h (USE_HPUX_FIXED_STACKBOTTOM): New
+       macro recognized (for HP/UX).
+
+2011-05-11  Ivan Maidanski  <ivmai@mail.ru>
+
+       * os_dep.c (GC_gww_page_was_ever_dirty): Fix comment (for
+       GWW_VDB).
+       * os_dep.c (GC_dirty_init): Use memset() for GC_written_pages
+       resetting (for PROC_VDB).
+
+2011-05-11  Ivan Maidanski  <ivmai@mail.ru> (mostly really Ludovic Courtes)
+
+       * tests/threadkey_test.c: New file.
+       * .cvsignore (threadkey_test): Add.
+       * tests/tests.am (TESTS, check_PROGRAMS): Add 'threadkey_test'.
+       * tests/tests.am (threadkey_test_SOURCES, threadkey_test_LDADD):
+       New variable.
+       * Makefile.in: Regenerate.
+
+2011-05-11  Ivan Maidanski  <ivmai@mail.ru>
+
+       * pthread_support.c (GC_unregister_my_thread_inner): Don't call
+       GC_remove_specific.
+       * include/private/thread_local_alloc.h (GC_remove_specific):
+       Remove (since it is empty for all targets).
+       * pthread_support.c (GC_record_stack_base): New inline function.
+       * win32_threads.c (GC_record_stack_base): Ditto.
+       * pthread_support.c (GC_register_my_thread_inner): Invoke
+       GC_record_stack_base.
+       * win32_threads.c (GC_register_my_thread_inner): Ditto.
+       * pthread_support.c (GC_register_my_thread): If thread is FINISHED
+       then call GC_record_stack_base, clear FINISHED, initialize
+       thread-local list and return success.
+       * win32_threads.c (GC_register_my_thread): Ditto.
+       * include/gc.h (GC_register_my_thread): Update documentation.
+       * include/private/thread_local_alloc.h (GC_thread_key): Ditto.
+
+2011-05-10  Ivan Maidanski  <ivmai@mail.ru>
+
+       * thread_local_alloc.c (GC_malloc, GC_malloc_atomic): Join
+       adjacent "#ifdef".
+       * thread_local_alloc.c (GC_malloc_atomic): Call
+       GC_core_malloc_atomic (instead of GC_core_malloc).
+
+2011-05-10  Ivan Maidanski  <ivmai@mail.ru>
+
+       * pthread_start.c (GC_start_rtn_prepare_thread): Change return
+       type to GC_thread.
+       * pthread_start.c (GC_inner_start_routine): Pass the current
+       thread descriptor to pthread_cleanup_push (same as in
+       win32_threads.c).
+       * pthread_stop_world.c (GC_push_all_stacks): Rename "me" local
+       variable to "self".
+       * win32_threads.c (GC_push_all_stacks): Ditto.
+       * pthread_stop_world.c (GC_suspend_all, GC_start_world): Rename
+       "my_thread" local variable to "self".
+       * pthread_support.c (GC_unregister_my_thread_inner): New static
+       function.
+       * pthread_support.c (GC_unregister_my_thread,
+       GC_thread_exit_proc): Use GC_unregister_my_thread_inner.
+       * win32_threads.c (GC_register_my_thread, GC_unregister_my_thread,
+       GC_do_blocking_inner): Rename "t" local variable to "thread_id".
+       * win32_threads.c (GC_wait_marker, GC_notify_all_marker): Rename
+       "id" local variable to "thread_id".
+
+2011-05-10  Ivan Maidanski  <ivmai@mail.ru>
+
+       * pthread_support.c (GC_unregister_my_thread): Call pthread_self
+       only once.
+       * win32_threads.c (GC_pthread_start_inner): Ditto.
+       * pthread_support.c (GC_unregister_my_thread): Add debug output.
+       * win32_threads.c (GC_unregister_my_thread): Ditto.
+       * pthread_support.c (GC_register_my_thread,
+       GC_start_rtn_prepare_thread): Rename "my_pthread" local variable
+       to "self".
+
+2011-05-10  Ivan Maidanski  <ivmai@mail.ru>
+
+       * include/gc.h (GC_HIDE_POINTER, GC_REVEAL_POINTER): Define
+       unconditionally (do not test GC_I_HIDE_POINTERS); update the
+       comment.
+       * include/gc.h (HIDE_POINTER, REVEAL_POINTER): Define as alias to
+       GC_HIDE/REVEAL_POINTER, respectively.
+       * include/private/gc_pmark.h (GC_I_HIDE_POINTERS): Do not define.
+       * include/private/gc_priv.h (GC_I_HIDE_POINTERS): Ditto.
+
+2011-05-10  Ivan Maidanski  <ivmai@mail.ru>
+
+       * include/gc.h (GC_register_my_thread): Refine the comment.
+
+2011-05-08  Ivan Maidanski  <ivmai@mail.ru>
+
+       * include/gc_inline.h (GC_MALLOC_WORDS, GC_CONS): Add missing
+       parentheses.
+       * include/gc_typed.h (GC_get_bit, GC_set_bit,
+       GC_CALLOC_EXPLICITLY_TYPED): Ditto.
+
+2011-05-07  Ivan Maidanski  <ivmai@mail.ru>
+
+       * include/private/gcconfig.h (NO_GETCONTEXT): Add missing ')'.
+
+2011-05-07  Ivan Maidanski  <ivmai@mail.ru> (really Thorsten Glaser)
+
+       * include/private/gcconfig.h (NO_GETCONTEXT): Do not use
+       getcontext(2) on m68k because it is not implemented there.
+
+2011-05-07  Ivan Maidanski  <ivmai@mail.ru>
+
+       * alloc.c (GC_clear_a_few_frames): Use BZERO().
+       * mark_rts.c (GC_clear_roots, GC_rebuild_root_index): Ditto.
+       * reclaim.c (GC_start_reclaim): Ditto.
+       * blacklst.c (total_stack_black_listed): Remove "len" local
+       variable.
+       * dbg_mlc.c (GC_generate_random_valid_address): Replace "for"
+       statement with "do-while" one.
+       * dyn_load.c (GC_register_dynamic_libraries,
+       GC_register_dynlib_callback): Remove redundant parentheses.
+
+2011-05-06  Ivan Maidanski  <ivmai@mail.ru>
+
+       * cord/cordxtra.c (CORD_from_file_lazy_inner): Suppress
+       "unused result" compiler warning for fread().
+       * cord/cordxtra.c: Expand all tabs to spaces.
+
+2011-05-06  Ivan Maidanski  <ivmai@mail.ru>
+
+       * os_dep.c (GC_write_fault_handler): Break when in_allocd_block
+       is set to true.
+
+2011-05-06  Ivan Maidanski  <ivmai@mail.ru>
+
+       * dbg_mlc.c (GC_has_other_debug_info): Change return type to int;
+       return -1 if the object has (or had) debugging info but was
+       marked deallocated.
+       * include/private/dbg_mlc.h (GC_has_other_debug_info): Ditto.
+       * dbg_mlc.c (GC_has_other_debug_info): Update documentation;
+       remove "ohdr" local variable.
+       * dbg_mlc.c (GC_debug_free): Don't call GC_free if the object has
+       probably been deallocated.
+       * dbg_mlc.c (GC_debug_free): Don't actually free the object even
+       in the leak-finding mode if GC_findleak_delay_free.
+       * dbg_mlc.c (GC_print_all_smashed_proc): Print a trailing blank
+       line.
+       * dbg_mlc.c (GC_check_leaked): New function (only unless
+       SHORT_DBG_HDRS).
+       * doc/README.environment (GC_FINDLEAK_DELAY_FREE): Document.
+       * doc/README.macros (GC_FINDLEAK_DELAY_FREE): Ditto.
+       * include/private/dbg_mlc.h (START_FLAG, END_FLAG): Use GC_WORD_C
+       on 64-bit architectures.
+       * include/private/dbg_mlc.h (NOT_MARKED): Remove redundant
+       parentheses.
+       * include/private/dbg_mlc.h (GC_HAS_DEBUG_INFO): Update (due to
+       GC_has_other_debug_info change).
+       * include/private/gc_priv.h (GC_findleak_delay_free): New global
+       variable declaration (unless SHORT_DBG_HDRS).
+       * misc.c (GC_findleak_delay_free): New global variable; recognize
+       GC_FINDLEAK_DELAY_FREE.
+       * misc.c (GC_init): Recognize GC_FINDLEAK_DELAY_FREE environment
+       variable (unless SHORT_DBG_HDRS).
+       * reclaim.c (GC_check_leaked): Declare (unless SHORT_DBG_HDRS).
+       * reclaim.c (GC_add_leaked): Don't add the object to leaked list
+       if marked as deallocated.
+
+2011-05-05  Ivan Maidanski  <ivmai@mail.ru>
+
+       * dbg_mlc.c (GC_has_other_debug_info): Fix punctuation in the
+       comment.
+       * dbg_mlc.c (GC_FREED_MEM_MARKER): New macro.
+       * dbg_mlc.c (GC_debug_free): Use GC_FREED_MEM_MARKER.
+       * dbg_mlc.c (GC_smashed): Refine documentation.
+       * mark.c (GC_push_selected): Change dirty_fn return type to
+       GC_bool.
+       * os_dep.c (GC_page_was_ever_dirty): Make GC_INNER.
+       * reclaim.c (GC_reclaim_small_nonempty_block): Remove "kind"
+       local  variable.
+       * reclaim.c (GC_reclaim_block): Pass true constant to
+       GC_reclaim_small_nonempty_block (instead of report_if_found).
+       * doc/README.autoconf: Update; fix a typo.
+       * include/private/gcconfig.h (GC_WORD_C): New macro.
+
+2011-05-03  Ivan Maidanski  <ivmai@mail.ru>
+
+       * dbg_mlc.c (GC_store_debug_info_inner): Cast "linenum".
+       * dbg_mlc.c (GC_check_annotated_obj): Fix punctuation in the
+       comment.
+       * dbg_mlc.c (GC_print_smashed_obj): Add (and print) "msg"
+       argument.
+       * dbg_mlc.c (GC_debug_free, GC_print_all_smashed_proc): Pass
+       message to GC_print_smashed_obj.
+       * dbg_mlc.c (GC_debug_free): Call GC_size once.
+       * dbg_mlc.c (GC_debug_realloc): Calculate old_sz only if
+       allocation succeeded; remove unnecessary check for object is
+       smashed (since this is done in GC_debug_free); remove "clobbered"
+       local variable.
+
+2011-05-03  Ivan Maidanski  <ivmai@mail.ru>
+
+       * dbg_mlc.c (GC_store_debug_info_inner, GC_store_debug_info):
+       Rename "integer" argument to "linenum"; change the type of the
+       argument to int.
+       * gcj_mlc.c (GC_store_debug_info): Ditto.
+       * dbg_mlc.c (GET_OH_LINENUM): New macro.
+       * dbg_mlc.c (GC_print_obj, GC_print_smashed_obj): Use
+       GET_OH_LINENUM; adjust print format specifier.
+       * dbg_mlc.c (GC_debug_malloc, GC_debug_malloc_ignore_off_page,
+       GC_debug_malloc_atomic_ignore_off_page,
+       GC_debug_generic_malloc_inner,
+       GC_debug_generic_malloc_inner_ignore_off_page,
+       GC_debug_malloc_stubborn, GC_debug_malloc_atomic,
+       GC_debug_malloc_uncollectable,
+       GC_debug_malloc_atomic_uncollectable): Remove unnecessary cast of
+       "i".
+       * gcj_mlc.c (GC_debug_gcj_malloc): Ditto.
+
+2011-04-26  Ivan Maidanski  <ivmai@mail.ru>
+
+       * .cvsignore (initsecondarythread, test_cpp): Add.
+       * os_dep.c (GC_linux_stack_base): Rename to
+       GC_linux_main_stack_base.
+       * os_dep.c (GC_freebsd_stack_base): Rename to
+       GC_freebsd_main_stack_base; adjust error message.
+       * pthread_stop_world.c (GC_stop_init): Use GC_SEM_INIT_PSHARED
+       as an argument for sem_init().
+       * pthread_support.c (pthread_create): Ditto.
+       * pthread_support.c (pthread_create): Abort in case sem_init()
+       fails.
+       * include/private/gc_priv.h (GC_SEM_INIT_PSHARED): Define.
+       * tests/initsecondarythread.c: Include gcconfig.h; call GC_INIT
+       from main() if it should be done from the primordial thread only.
+
+2011-04-26  Ivan Maidanski  <ivmai@mail.ru>
+
+       * alloc.c: Don't include sys/types.h for ArmCC.
+       * dyn_load.c: Ditto.
+       * os_dep.c: Ditto.
+       * mach_dep.c (_setjmp, _longjmp): Redirect to setjmp/longjmp for
+       ArmCC.
+       * mark.c (GC_noop): Define specially for ArmCC.
+       * include/private/gc_priv.h (GC_noop): Ditto.
+       * misc.c (GC_init): Don't test pointers comparison for ArmCC.
+       * misc.c: Don't include unistd.h for ArmCC.
+       * os_dep.c (pages_executable): Rename to GC_pages_executable;
+       make STATIC.
+       * os_dep.c (GC_unix_mmap_get_mem): Don't define for ArmCC.
+       * ptr_chck.c (GC_is_visible): Explicitly cast
+       (GC_DS_PER_OBJECT-GC_INDIR_PER_OBJ_BIAS) to word (to suppress
+       a compiler warning).
+       * include/private/gcconfig.h: Recognize __arm.
+       * include/private/gcconfig.h (HBLKPTR): Define for ArmCC.
+       * include/private/gcconfig.h (HBLKPTR): Add parentheses for
+       "bytes" argument.
+
+2011-04-24  Ivan Maidanski  <ivmai@mail.ru>
+
+       * pthread_support.c (GC_get_nprocs): Don't define for Android.
+       * pthread_support.c (GC_dummy_thread_local): Don't test
+       GC_LINUX_THREADS.
+       * include/gc_config_macros.h (GC_ADD_CALLER, GC_RETURN_ADDR):
+       Define for Android.
+
+2011-04-24  Ivan Maidanski  <ivmai@mail.ru>
+
+       * mach_dep.c (NO_GETCONTEXT): Move to gcconfig.h.
+       * os_dep.c (GC_write_fault_handler): Don't include ucontext.h if
+       NO_GETCONTEXT.
+       * include/private/gcconfig.h (GETPAGESIZE): Define as a sysconf
+       call for Android.
+
+2011-04-23  Ivan Maidanski  <ivmai@mail.ru>
+
+       * include/private/gc_locks.h (WIN32_LEAN_AND_MEAN, NOSERVICE):
+       Define before including windows.h.
+       * include/private/gc_priv.h (WIN32_LEAN_AND_MEAN, NOSERVICE):
+       Ditto.
+       * include/private/thread_local_alloc.h (WIN32_LEAN_AND_MEAN,
+       NOSERVICE): Ditto.
+       * include/private/gc_priv.h (CLOCKS_PER_SEC): Reformat the
+       comment.
+       * include/private/gc_priv.h (MS_TIME_DIFF): Avoid floating-point
+       arithmetics; add a comment.
+
+2011-04-23  Ivan Maidanski  <ivmai@mail.ru>
+
+       * mark.c (GC_clear_hdr_marks): Don't test USE_MARK_BYTES.
+       * extra/setjmp_t.c (main): Don't test USE_MARK_BITS.
+       * include/private/gc_pmark.h (SET_MARK_BIT_EXIT_IF_SET): Ditto.
+       * include/private/gc_pmark.h (SET_MARK_BIT_EXIT_IF_SET): Remove
+       "mark_byte" local variable.
+       * include/private/gc_pmark.h (OR_WORD_EXIT_IF_SET): Add a comment
+       about that AO_or() is not used by GC unless USE_MARK_BITS
+       explicitly set.
+       * include/private/gc_priv.h (OR_WORD): Ditto.
+       * include/private/gc_pmark.h (INCR_MARKS): Remove trailing ';',
+       add parentheses.
+       * include/private/gc_priv.h (ONES): Define before use by
+       MAKE_COOLER.
+       * include/private/gc_priv.h (MARK_BITS_SZ): Define where used.
+       * include/private/gc_priv.h (OR_WORD): Don't define if
+       USE_MARK_BYTES.
+       * include/private/gcconfig.h (USE_MARK_BYTES); Remove duplicate
+       definition; simplify expression.
+
+2011-04-22  Ivan Maidanski  <ivmai@mail.ru>
+
+       * os_dep.c (GC_get_maps): Always close the file.
+       * pthread_support.c (GC_get_nprocs): Ditto.
+       * os_dep.c (READ): Define similarly across the file (without
+       parameters).
+       * pthread_support.c (GC_get_nprocs): Use signed int type for "i"
+       and "len" local variables (since read() may return -1).
+       * include/private/gc_pmark.h (LONG_MULT): Add prefix/suffix
+       double underscore; add "volatile" for asm.
+       * include/private/gc_pmark.h (LONG_MULT): Add missing
+       parentheses.
+       * include/private/gc_priv.h (OR_WORD): Ditto.
+       * include/private/gc_priv.h (OR_WORD): Remove unnecessary brackets
+       and ';' symbol.
+
+2011-04-22  Ivan Maidanski  <ivmai@mail.ru>
+
+       * os_dep.c (GC_get_stack_base): Implement for Android (same as
+       for Linux).
+       * pthread_support.c (GC_get_nprocs): Return 1 (instead of -1) if
+       failed to open "stat" file (not to issue a warning twice); update
+       the comment.
+       * pthread_support.c (GC_thr_init): Call sysconf() on Android to
+       get the number of CPUs.
+
+2011-04-21  Ivan Maidanski  <ivmai@mail.ru>
+
+       * include/private/gc_priv.h (_GNU_SOURCE): Revert one of the
+       recent patches regarding this macro as the macro should be set
+       (to 1) before including any other system header.
+
+2011-04-21  Ivan Maidanski  <ivmai@mail.ru>
+
+       * doc/README.environment (GC_INITIAL_HEAP_SIZE,
+       GC_MAXIMUM_HEAP_SIZE): Update.
+
+2011-04-20  Ivan Maidanski  <ivmai@mail.ru>
+
+       * misc.c (GC_parse_mem_size_arg): Allow 'k', 'M', 'G' suffixes in
+       heap size specifier; return 0 if not a valid one.
+       * include/gc_cpp.h: Explicitly define inline one-argument delete
+       operator for Cygwin (as a workaround).
+       * include/gc_cpp.h: Reformat the code.
+       * tests/test_cpp.cc: Ditto.
+       * tests/test_cpp.cc (main): Suppress compiler warnings about
+       "assigned value is unused".
+
+2011-04-19  Ivan Maidanski  <ivmai@mail.ru>
+
+       * misc.c (GC_parse_mem_size_arg): New function.
+       * misc.c (GC_init): Use GC_parse_mem_size_arg().
+       * pthread_stop_world.c (tkill): Declare for Android.
+
+2011-04-19  Ivan Maidanski  <ivmai@mail.ru>
+
+       * include/private/gc_priv.h (_GNU_SOURCE): Include features.h
+       first (except for NaCl) and then define the macro to 1 if not yet.
+
+2011-04-18  Ivan Maidanski  <ivmai@mail.ru> (really Ludovic Courtes)
+
+       * tests/tests.am (TESTS, check_PROGRAMS): Add
+       'initsecondarythread'.
+       * tests/tests.am (initsecondarythread_SOURCES,
+       initsecondarythread_LDADD): New variable.
+       * Makefile.in: Regenerate.
+       * configure: Ditto.
+
+2011-04-18  Ivan Maidanski  <ivmai@mail.ru>
+
+       * dbg_mlc.c (GC_store_debug_info_inner): Always define; add
+       "const" to its string argument.
+       * dbg_mlc.c (GC_store_debug_info): Call GC_store_debug_info_inner.
+       * dbg_mlc.c (GC_debug_free): Set GC_have_errors in case of
+       smashed or previously deallocated found.
+       * dbg_mlc.c (GC_check_heap_block): Replace while loop with a for
+       one.
+       * reclaim.c (GC_reclaim_check): Ditto.
+       * dbg_mlc.c (GC_check_heap_proc): Remove redundant cast to word.
+       * os_dep.c (GC_get_stack_base): Don't initialize
+       stackbase_main_self/ss_sp on Solaris if thr_main() is zero (thus
+       calling GC_INIT() from a non-primordial thread is possible now).
+       * reclaim.c (GC_add_leaked): Turn into an inline one.
+       * reclaim.c (GC_reclaim_small_nonempty_block):
+       Change report_if_found type from int/word to boolean.
+       * include/private/gc_priv.h (GC_start_reclaim): Ditto.
+       * include/private/gc_priv.h (set_mark_bit_from_hdr,
+       clear_mark_bit_from_hdr): Place closing parenthesis properly;
+       reformat the code.
+
+2011-04-16  Ivan Maidanski  <ivmai@mail.ru>
+
+       * os_dep.c (GC_get_main_stack_base): Try to use
+       pthread_attr_getstack first for Linux if THREADS.
+       * doc/README.macros (USE_GET_STACKBASE_FOR_MAIN): Adjust text
+       alignment.
+
+2011-04-13  Ivan Maidanski  <ivmai@mail.ru>
+
+       * dbg_mlc.c (GC_generate_random_backtrace_no_gc): Fix a message
+       typo.
+       * dbg_mlc.c (GC_debug_malloc): Add a comment (about zero size).
+       * dbg_mlc.c (GC_debug_generic_malloc_inner): Reformat the comment.
+       * dbg_mlc.c (GC_strdup): Call GC_err_printf instead of WARN (in
+       case of NULL argument).
+       * dbg_mlc.c (GC_free): In case of NULL argument, just return
+       (without any warning printed); eliminate "uncollectable" local
+       variable.
+
+2011-04-13  Ivan Maidanski  <ivmai@mail.ru> (mostly really Rainer Orth)
+
+       * configure.ac (THREADDLLIBS): Use alternate thread library on
+       Solaris 8.
+       * configure.ac (need_atomic_ops_asm): Set to true only for Sparc
+       Solaris.
+       * configure.ac: Don't use libdl on mips-sgi-irix6.
+       * configure: Regenerate.
+
+2011-04-11  Ivan Maidanski  <ivmai@mail.ru> (really Jie Liu)
+
+       * mach_dep.c (NO_GETCONTEXT); Define for RTEMS.
+       * mach_dep.c (GC_with_callee_saves_pushed): Don't call
+       __builtin_unwind_init() for RTEMS; use setjmp() without the
+       leading underscore (for RTEMS).
+       * tests/test.c (BIG): Use smaller value for RTEMS.
+       * tests/test.c (main): Customize for RTEMS.
+
+2011-04-11  Ivan Maidanski  <ivmai@mail.ru> (mostly really Jim Meyering)
+
+       * configure.host: Remove doubled words in comments.
+       * os_dep.c: Ditto.
+       * doc/README: Ditto.
+       * extra/setjmp_t.c: Ditto.
+       * tests/huge_test.c: Ditto.
+       * extra/setjmp_t.c (getpagesize, nested_sp, main, g): Replace the
+       K&R-style function definition with the ANSI C one.
+       * extra/setjmp_t.c: Expand all tabs to spaces.
+       * extra/setjmp_t.c (nested_sp): Implement in the same way as
+       GC_approx_sp.
+
+2011-04-10  Ivan Maidanski  <ivmai@mail.ru> (really Iain Sandoe, Mike Stump)
+
+       * dyn_load.c (GC_dyld_sections): Add more sctions.
+       * dyn_load.c (GC_dyld_add_sect_fmts): New static varaible.
+       * dyn_load.c (L2_MAX_OFILE_ALIGNMENT): New macro.
+       * dyn_load.c (GC_dyld_image_add, GC_dyld_image_remove): Improve
+       logging; add support for on-demand sections.
+       * dyn_load.c (GC_dyld_image_add, GC_dyld_image_remove): Reformat
+       the code.
+
+2011-04-10  Ivan Maidanski  <ivmai@mail.ru>
+
+       * gcj_mlc.c (GC_gcj_malloc_initialized): Use STATIC unless
+       GC_ASSERTIONS.
+       * include/private/gc_priv.h (GC_gcj_malloc_initialized): Don't
+       declare (as external) unless GC_ASSERTIONS.
+       * os_dep.c (GC_win32_free_heap): Clear GC_heap_bases[] also for
+       Cygwin; add FIXME.
+       * include/private/gcconfig.h: Include <sys/unistd.h> for RTEMS.
+       * include/private/gcconfig.h: Add "#error" for every "-->" mark.
+       * include/private/gcconfig.h (CLEAR_DOUBLE): Turn the code into
+       an expression.
+       * include/private/pthread_support.h (SUSPENDED_EXT): Add new flag
+       (which existed previously as SUSPENDED and still exists in GCJ).
+       * include/private/pthread_support.h (DISABLED_GC): Change the
+       value (as it is already used by SUSPENDED_EXT).
+
+2011-04-10  Ivan Maidanski  <ivmai@mail.ru> (mostly really Iain Sandoe)
+
+       * tests/test.c (reverse_test):  Modify count (BIG) for
+       ppc64-darwin.
+
+2011-04-09  Ivan Maidanski  <ivmai@mail.ru>
+
+       * reclaim.c (GC_print_all_errors): Recognize new GC_ABORT_ON_LEAK
+       macro and environment variable; abort if any error has been
+       printed provided the environment variable (or macro) is set.
+       * doc/README.environment (GC_ABORT_ON_LEAK): Document.
+       * doc/README.macros (GC_ABORT_ON_LEAK): Ditto.
+       * doc/README.macros (FIND_LEAK, SUNOS5SIGS, PCR,
+       USE_COMPILER_TLS): Reformat the text.
+
+2011-04-09  Ivan Maidanski  <ivmai@mail.ru> (really Jie Liu)
+
+       * os_dep.c (GC_unix_sbrk_get_mem, GC_unix_get_mem): Don't define
+       for RTEMS.
+       * include/private/gcconfig.h (RTEMS): Add support for.
+       * include/private/gcconfig.h (GET_MEM): Use calloc() for RTEMS.
+
+2011-04-09  Ivan Maidanski  <ivmai@mail.ru>
+
+       * mallocx.c (GC_malloc_uncollectable): Move to malloc.c (since
+       it is used internally in some places).
+
+2011-04-09  Ivan Maidanski  <ivmai@mail.ru>
+
+       * dbg_mlc.c (GC_register_finalizer_no_order): Remove redundant
+       declaration.
+       * dbg_mlc.c (GC_debug_malloc_replacement,
+       GC_debug_realloc_replacement): Rename RA to GC_DBG_RA.
+       * malloc.c (GC_debug_malloc_replacement): Ditto.
+       * mallocx.c (GC_debug_realloc_replacement): Ditto.
+       * dbg_mlc.c (GC_store_debug_info): Move proto from dbg_mlc.h.
+       * malloc.c (GC_strdup, GC_strndup, GC_wcsdup): Move to mallocx.c.
+       * malloc.c: Include errno.h only REDIRECT_MALLOC; remove redundant
+       includes of string.h.
+       * mallocx.c: Include string.h (for GC_strdup).
+       * include/private/dbg_mlc.h (GC_store_debug_info): Move declaration
+       to dbg_mlc.c.
+       * include/private/gc_locks.h (UNCOND_LOCK, UNCOND_UNLOCK): Remove
+       redundant trailing ';'.
+       * include/private/gc_priv.h (START_WORLD, COND_DUMP): Ditto.
+       * include/private/gc_locks.h (LOCK, UNLOCK): Place opening '{'
+       properly.
+       * include/private/gc_priv.h (GC_DBG_RA): Move from dbg_mlc.c,
+       malloc.c, mallocx.c.
+
+2011-04-07  Ivan Maidanski  <ivmai@mail.ru>
+
+       * alloc.c (GC_check_heap, GC_print_all_smashed): Move the
+       definition from misc.c.
+       * dbg_mlc.c (GC_debug_malloc_atomic_uncollectable): Define as
+       public.
+       * include/gc.h (GC_debug_malloc_atomic_uncollectable): Declare.
+       * include/gc.h (GC_MALLOC_ATOMIC_UNCOLLECTABLE): Define new public
+       macro.
+       * dbg_mlc.c (MAX_SMASHED): Don't define if already set.
+       * reclaim.c (MAX_LEAKED): Ditto.
+       * dbg_mlc.c (GC_add_smashed): Add FIXME about the concurrent
+       access to the global array.
+       * reclaim.c (GC_add_leaked): Ditto.
+       * misc.c (GC_print_back_height): Set on if GC_PRINT_BACK_HEIGHT
+       (new macro) is defined.
+       * doc/README.macros (GC_PRINT_BACK_HEIGHT): Document.
+       * misc.c (GC_dump_regularly, GC_init): Replace 0/1 for
+       GC_dump_regularly and GC_print_back_height variables with
+       FALSE/TRUE.
+       * reclaim.c (GC_print_all_errors): Refine the comment.
+
+2011-04-04  Ivan Maidanski  <ivmai@mail.ru>
+
+       * tests/test.c (reverse_test_inner): Undo one of the previous
+       patches which shifts "c" and "d" pointers only if
+       ALL_INTERIOR_POINTERS (since interior pointers are always
+       recognized in stacks).
+
+2011-04-03  Ivan Maidanski  <ivmai@mail.ru>
+
+       * misc.c (GC_stdout, GC_stderr): Move the definition to the place
+       where GC_log is defined (Unix only).
+       * misc.c (GC_init): Recognize "GC_ONLY_LOG_TO_FILE" environment
+       variable and the similar macro; redirect GC_stdout and GC_stderr
+       to GC_log if "GC_LOG_FILE" environment variable is set unless
+       prohibited by GC_ONLY_LOG_TO_FILE (Unix only).
+       * doc/README.environment (GC_ONLY_LOG_TO_FILE): Document.
+       * doc/README.macros (GC_ONLY_LOG_TO_FILE): Ditto.
+
+2011-04-03  Ivan Maidanski  <ivmai@mail.ru>
+
+       * misc.c (GC_stdout, GC_write): Rename GC_stdout to GC_log (Win32
+       only).
+       * misc.c (GC_write): Add for MacOS (and OS/2); change WRITE()
+       accordingly.
+       * misc.c (GC_write): Reformat code (Unix only).
+       * misc.c (GC_printf): Check GC_quiet before va_start().
+
+2011-04-03  Ivan Maidanski  <ivmai@mail.ru>
+
+       * allchblk.c (GC_freehblk): Use GC_log_printf instead of GC_printf
+       inside "if (GC_print_stats)" branch.
+       * alloc.c (GC_collect_or_expand): Ditto.
+       * dyn_load.c (GC_register_dynamic_libraries): Ditto.
+       * headers.c (GC_scratch_alloc): Ditto.
+       * os_dep.c (GC_get_maps, GC_remap, PROTECT,
+       GC_write_fault_handler, GC_dirty_init, GC_mprotect_thread): Ditto.
+       * alloc.c (min_bytes_allocd): Use GC_log_printf instead of
+       GC_printf for DEBUG_THREADS output.
+       * darwin_stop_world.c (GC_stack_range_for, GC_suspend_thread_list,
+       GC_stop_world, GC_thread_resume, GC_start_world): Ditto.
+       * pthread_start.c (GC_inner_start_routine): Ditto.
+       * pthread_stop_world.c (GC_suspend_handler, GC_restart_handler,
+       GC_push_all_stacks, GC_suspend_all, GC_stop_world,
+       GC_start_world): Ditto.
+       * pthread_support.c (GC_mark_thread, GC_get_nprocs,
+       GC_start_rtn_prepare_thread, pthread_create): Ditto.
+       * alloc.c (GC_adj_bytes_allocd, GC_maybe_gc, GC_stopped_mark,
+       GC_finish_collection): Reformat code.
+       * pthread_stop_world.c (GC_print_sig_mask): Ditto.
+       * pthread_support.c (GC_thr_init): Ditto.
+       * checksums.c (GC_update_check_page): Use GC_printf() instead of
+       GC_err_printf() for error printing.
+       * checksums.c (GC_check_blocks, GC_check_dirty): Use GC_log_printf
+       instead of GC_printf for logging purposes.
+       * dyn_load.c (sys_errlist, sys_nerr, errno): Move declaration of
+       external variable outside from GC_register_dynamic_libraries.
+       * dyn_load.c (GC_register_dynamic_libraries): Don't use
+       sys_errlist value if errno equals to sys_nerr.
+       * dyn_load.c (GC_register_dynamic_libraries): Use GC_log_printf
+       instead of GC_printf for DL_VERBOSE output.
+       * dyn_load.c (GC_dyld_image_add, GC_dyld_image_remove,
+       GC_init_dyld): Use GC_log_printf instead of GC_printf for
+       DARWIN_DEBUG output.
+       * os_dep.c (catch_exception_raise): Use GC_log_printf
+       instead of GC_printf for DEBUG_EXCEPTION_HANDLING output.
+       * reclaim.c (GC_print_free_list): Move "n" increment out of
+       GC_printf() call.
+
+2011-04-03  Ivan Maidanski  <ivmai@mail.ru>
+
+       * win32_threads.c (DEBUG_CYGWIN_THREADS, DEBUG_WIN32_PTHREADS,
+       DEBUG_WIN32_THREADS): Remove.
+       * win32_threads.c (GC_register_my_thread_inner,
+       GC_win32_start_inner): Use GC_log_printf instead of GC_printf
+       inside "if (GC_print_stats)" branch.
+       * win32_threads.c (GC_PTHREAD_PTRVAL): New macro (defined only if
+       GC_PTHREADS).
+       * win32_threads.c (GC_delete_gc_thread, NUMERIC_THREAD_ID,
+       GC_pthread_join, GC_pthread_create): Use GC_PTHREAD_PTRVAL
+       macro.
+       * win32_threads.c (GC_push_stack_for, GC_mark_thread,
+       GC_CreateThread, GC_beginthreadex, GC_pthread_join,
+       GC_pthread_create, GC_pthread_start_inner, GC_thread_exit_proc,
+       GC_mark_thread_local_free_lists): Use GC_log_printf instead of
+       GC_printf for DEBUG_THREADS output.
+       * win32_threads.c (GC_win32_start_inner, GC_CreateThread,
+       GC_beginthreadex, GC_pthread_join, GC_pthread_create,
+       GC_pthread_start_inner, GC_thread_exit_proc): Cast
+       GetCurrentThreadId result to long; don't cast value of pthread_t
+       type to int; adjust printf format specifiers.
+       * doc/README.win32 (DEBUG_WIN32_PTHREADS): Remove obsolete
+       information.
+
+2011-04-03  Ivan Maidanski  <ivmai@mail.ru>
+
+       * tests/test.c (cons, small_cons, gcj_cons, check_ints,
+       check_uncollectable_ints, print_int_list, check_marks_int_list,
+       fork_a_thread, finalizer, mktree, chktree, alloc8bytes,
+       alloc_small, tree_test, typed_test, check_heap_stats, WinMain,
+       test, main): Remove unnecessary casts of GC_printf calls to void.
+
+2011-04-02  Ivan Maidanski  <ivmai@mail.ru>
+
+       * allchblk.c (GC_print_hblkfreelist): Adjust (make uniform across
+       BDWGC) printed message (adjust letters case, terminating dot and
+       new line symbols).
+       * alloc.c (GC_check_fl_marks): Ditto.
+       * backgraph.c (new_back_edges): Ditto.
+       * checksums.c (GC_check_dirty): Ditto.
+       * darwin_stop_world.c (GC_push_all_stacks,
+       GC_suspend_thread_list): Ditto.
+       * dbg_mlc.c (GC_print_type, GC_debug_free, GC_debug_realloc,
+       store_old): Ditto.
+       * dyn_load.c (GC_register_dynamic_libraries): Ditto.
+       * mark.c (GC_initiate_gc, GC_mark_some, GC_mark_from, GC_push_all,
+       GC_push_selected, GC_push_next_marked_dirty): Ditto.
+       * mark_rts.c (GC_exclude_static_roots_inner): Ditto.
+       * os_dep.c (GC_remap, GC_default_push_other_roots,
+       GC_push_thread_structures, GC_dirty_init, GC_read_dirty,
+       catch_exception_raise_state, catch_exception_raise_state_identity,
+       GC_mprotect_thread_notify, GC_mprotect_thread,
+       catch_exception_raise): Ditto.
+       * pthread_stop_world.c (GC_print_sig_mask, GC_push_all_stacks,
+       GC_stop_world, GC_stop_init): Ditto.
+       * pthread_support.c (GC_thr_init, GC_register_my_thread_inner,
+       GC_start_routine): Ditto.
+       * win32_threads.c (GC_register_my_thread_inner,
+       GC_push_all_stacks, GC_win32_start_inner, GC_pthread_join,
+       GC_pthread_start_inner): Ditto.
+       * alloc.c (GC_expand_hp_inner): Realign the code.
+       * mark.c (GC_mark_from, GC_mark_local, GC_do_parallel_mark):
+       Ditto.
+       * misc.c (GC_init): Ditto.
+       * os_dep.c (GC_dirty_init, GC_read_dirty): Ditto.
+       * include/private/gc_pmark.h (PUSH_CONTENTS_HDR): Ditto.
+       * tests/test.c (run_one_test): Ditto.
+       * misc.c (GC_err_puts): Document.
+       * misc.c (GC_err_write): Remove.
+       * os_dep.c (dump_maps): Ditto.
+       * include/private/gc_priv.h (GC_err_write): Ditto.
+       * os_dep.c (GC_print_address_map): Call GC_err_puts() instead of
+       dump_maps() and GC_err_write().
+       * os_dep.c (GC_read_dirty): Remove redundant brackets.
+
+2011-04-02  Ivan Maidanski  <ivmai@mail.ru>
+
+       * tests/test.c (reverse_test_inner): Test interior pointer
+       recognition only if ALL_INTERIOR_POINTERS.
+       * tests/test.c (run_one_test): Replace GC_all_interior_pointers
+       with GC_get_all_interior_pointers(); simplify the expression.
+       * tests/test.c (check_heap_stats): Replace GC_bytes_allocd and
+       GC_bytes_allocd_before_gc with GC_get_total_bytes().
+       * tests/test.c (main): Replace GC_gc_no with GC_get_gc_no().
+
+2011-03-27  Ivan Maidanski  <ivmai@mail.ru>
+
+       * dbg_mlc.c (GC_debug_strdup, GC_debug_free): Output a portability
+       warning if the argument is NULL and GC is in leaks detection mode.
+       * dbg_mlc.c (GC_debug_strndup, GC_debug_wcsdup): New public
+       function definition.
+       * malloc.c (GC_strndup, GC_wcsdup, strndup): Ditto.
+       * mallocx.c (GC_posix_memalign): Ditto.
+       * malloc.c (strdup): Fix string size value; rename "len" to "lb".
+       * mallocx.c: Include errno.h unless WinCE (otherwise include
+       windows.h for Win32 error constants).
+       * win32_threads.c: Define WIN32_LEAN_AND_MEAN and NOSERVICE before
+       windows.h inclusion.
+       * misc.c (GC_init): Register at-exit callback if GC_find_leak
+       (even if GC_FIND_LEAK macro is unset).
+       * pthread_stop_world.c (NACL_STORE_REGS,
+       __nacl_suspend_thread_if_needed, GC_nacl_initialize_gc_thread):
+       Use BCOPY() instead of memcpy().
+       * pthread_support.c (GC_init_real_syms): Ditto.
+       * doc/README: Update year in copyright.
+       * include/gc.h: Ditto.
+       * doc/README.macros (GC_DEBUG_REPLACEMENT, GC_REQUIRE_WCSDUP):
+       Document new macro.
+       * doc/README.macros (REDIRECT_MALLOC): Update documentation.
+       * include/gc.h (GC_strndup, GC_posix_memalign, GC_debug_strndup):
+       New API function prototype.
+       * include/gc.h (GC_MALLOC, GC_REALLOC): Redirect to
+       GC_debug_malloc/realloc_replacement() if GC_DEBUG_REPLACEMENT.
+       * include/gc.h (GC_STRDUP): Remove redundant parentheses.
+       * include/leak_detector.h (realloc, strdup): Ditto.
+       * include/gc.h (GC_STRNDUP): New API macro.
+       * include/gc.h (GC_NEW, GC_NEW_ATOMIC, GC_NEW_STUBBORN,
+       GC_NEW_UNCOLLECTABLE): Add missing parentheses.
+       * include/gc.h (GC_wcsdup, GC_debug_wcsdup): New API function
+       prototype (only if GC_REQUIRE_WCSDUP).
+       * include/gc.h (GC_WCSDUP): New API macro (only if
+       GC_REQUIRE_WCSDUP).
+       * include/leak_detector.h: Add copyright header; add usage
+       comment; include stdlib.h and string.h after gc.h (unless
+       GC_DONT_INCLUDE_STDLIB).
+       * include/leak_detector.h (malloc, calloc, free, realloc):
+       Undefine symbol before its redefinition.
+       * include/leak_detector.h (strndup, memalign, posix_memalign):
+       Redefine to the corresponding GC function.
+       * include/leak_detector.h (wcsdup): Redefine to GC_WCSDUP (only
+       if GC_REQUIRE_WCSDUP).
+       * include/leak_detector.h (CHECK_LEAKS): Add comment; don't define
+       the macro if already defined.
+
+2011-03-22  Ivan Maidanski  <ivmai@mail.ru>
+
+       * misc.c (GC_abort): Use _exit() (instead of DebugBreak) on Win32
+       when doing code static analysis (to inform the tool that the
+       function is a no-return one).
+       * os_dep.c (GC_linux_stack_base): Remove a duplicate validation
+       of the length of "stat" file; use signed int type for "i",
+       "buf_offset" and "len" local variables (since read() may
+       return -1).
+
+2011-03-20  Ivan Maidanski  <ivmai@mail.ru>
+
+       * blacklst.c (GC_bl_init_no_interiors): New function (the code
+       moved from GC_bl_init).
+       * blacklst.c (GC_bl_init): Invoke GC_bl_init_no_interiors unless
+       GC_all_interior_pointers mode; remove unnecessarily parameter cast
+       for GC_scratch_alloc call.
+       * include/private/gc_priv.h (GC_bl_init): Move the function
+       declaration to misc.c file.
+       * misc.c (GC_bl_init_no_interiors): Add a prototype.
+       * misc.c (GC_set_all_interior_pointers): Allow values other than 0
+       and 1; allow altering GC_set_all_interior_pointers value even
+       after GC initialization.
+       * obj_map.c (GC_initialize_offsets): Clear GC_valid_offsets and
+       GC_modws_valid_offsets if GC_all_interior_pointers is off.
+       * misc.c (GC_init): Don't call GC_initialize_offsets() unless
+       GC_all_interior_pointers mode.
+
+2011-03-20  Ivan Maidanski  <ivmai@mail.ru>
+
+       * alloc.c (GC_finish_collection): Remove redundant brackets;
+       adjust code indentation.
+       * blacklst.c (GC_add_to_black_list_normal): Simplify expression
+       (to improve code readability).
+       * blacklst.c (GC_is_black_listed): Join nested "if" (into a single
+       conditional expression); initialize "nblocks" just before the loop
+       beginning.
+       * misc.c (GC_init): Don't compute initial_heap_sz if GC is already
+       initialized.
+       * include/private/gc_priv.h (GC_initialize_offsets): Move the
+       function declaration to misc.c file.
+       * obj_map.c (GC_initialize_offsets): Remove offsets_initialized
+       static variable since the function is called only once.
+       * tests/middle.c: Include "gc.h" instead of <gc.h>; expand all
+       tabs to spaces; adjust code indentation; replace the K&R-style
+       function definition with the ANSI C one.
+       * tests/smash_test.c: Ditto.
+       * tests/middle.c (main): Use setter for GC_all_interior_pointers;
+       adjust printf format specifier (and cast the value passed to).
+
+2011-03-15  Ivan Maidanski  <ivmai@mail.ru>
+
+       * doc/README.macros (SMALL_CONFIG, LARGE_CONFIG): Refine the
+       documentation.
+       * include/private/gc_hdrs.h (LOG_BOTTOM_SZ): Ignore SMALL_CONFIG
+       if LARGE_CONFIG is defined.
+       * include/private/gc_priv.h (CPP_LOG_HBLKSIZE): Ditto.
+
+2011-03-15  Ivan Maidanski  <ivmai@mail.ru>
+
+       * alloc.c (GC_finish_collection): Replace "#else #ifdef" with
+       "#elif".
+       * include/private/gc_priv.h (CPP_LOG_HBLKSIZE, LOG_PHT_ENTRIES,
+       MAX_ROOT_SETS, MAX_HEAP_SECTS): Ditto.
+       * alloc.c (GC_expand_hp_inner): Check for GC_collect_at_heapsize
+       overflow even if not LARGE_CONFIG.
+       * dbg_mlc.c (GC_check_heap_proc): Check "oh" size even if
+       SMALL_CONFIG.
+       * finalize.c (GC_print_finalization_stats): Fix "#endif" comment.
+       * new_hblk.c (GC_build_fl_clear2, GC_build_fl_clear4, GC_build_fl2,
+       GC_build_fl4): Reformat the comment; adjust code indentation.
+       * new_hblk.c (GC_build_fl): Fix indentation.
+       * include/private/gc_hdrs.h: Ditto.
+       * doc/README.environment (GC_LOG_FILE, GC_PRINT_VERBOSE_STATS,
+       GC_FULL_FREQUENCY): Refine the documentation.
+
+2011-03-13  Ivan Maidanski  <ivmai@mail.ru>
+
+       * extra/msvc_dbg.c: Test _MSC_VER macro; include "gc.h" (for
+       GC_word); reformat the code; expand all tabs to spaces.
+       * extra/msvc_dbg.c (ULONG_PTR): Replace with GC_ULONG_PTR; define
+       as word.
+
+2011-03-13  Ivan Maidanski  <ivmai@mail.ru>
+
+       * dbg_mlc.c (GC_get_back_ptr_info, GC_print_obj,
+       GC_print_smashed_obj, GC_debug_free_inner): Add a code for a
+       LINT-like tool to instruct it that the function is invoked only
+       with valid parameters (otherwise a SEGV is ok); recognize LINT2
+       new macro.
+       * misc.c (GC_abort): Instruct a LINT-like tool that the function
+       never returns in fact.
+       * os_dep.c (GC_linux_stack_base): Check for read buffer overflow;
+       close the file immediately after read; use STRTOULL() instead of
+       decoding the address number manually.
+       * include/private/gc_priv.h (EXPECT): Don't specify outcome for a
+       LINT-like tool.
+       * include/private/gc_priv.h (GC_all_interior_pointers): Instruct a
+       LINT-like tool that the value is restricted to zero and one only
+       (required since the variable is global and its value is used as a
+       part of array index expression is some places).
+
+2011-03-13  Ivan Maidanski  <ivmai@mail.ru>
+
+       * dbg_mlc.c (GC_make_closure): Fix SEGV in case GC_malloc returns
+       NULL.
+       * dbg_mlc.c (GC_debug_register_finalizer,
+       GC_debug_register_finalizer_no_order,
+       GC_debug_register_finalizer_unreachable,
+       GC_debug_register_finalizer_ignore_self): Handle out of memory
+       case properly (similar to GC_register_finalizer_inner).
+       * headers.c (GC_install_header): Handle the case when alloc_hdr()
+       returns NULL.
+       * os_dep.c (GC_get_maps_len): Defend against missing "maps" file.
+       * pthread_support.c (GC_mark_thread): Place a dummy return
+       statement (which uses "id" argument) before the actual use of "id"
+       as an array index (to suppress a warning produced by some static
+       code analysis tools).
+       * win32_threads.c (GC_mark_thread): Ditto.
+       * pthread_support.c (GC_thr_init): Abort (with the appropriate
+       message) if out of memory.
+
+2011-03-13  Ivan Maidanski  <ivmai@mail.ru>
+
+       * finalize.c (GC_register_finalizer_inner): Fix a typo in a
+       comment.
+       *include/private/gcconfig.h (STACKBOTTOM): Ditto.
+       * gcj_mlc.c (GC_core_gcj_malloc): Replace 0/1 with TRUE/FALSE in
+       EXPECT (the 2nd argument).
+       * malloc.c (GC_core_malloc_atomic, GC_core_malloc, GC_free):
+       Ditto.
+       * mark.c (GC_mark_and_push, GC_mark_and_push_stack): Ditto.
+       * thread_local_alloc.c (GC_malloc, GC_malloc_atomic): Ditto.
+       * include/private/gc_hdrs.h (HC_GET_HDR): Ditto.
+       * include/private/gc_priv.h (SMALL_OBJ): Ditto.
+       * include/private/specific.h (getspecific): Ditto.
+       * pthread_support.c (LOCK_STATS): Add a comment.
+
+2011-03-08  Ivan Maidanski  <ivmai@mail.ru>
+
+       * include/gc_pthread_redirects.h (GC_NO_DLOPEN,
+       GC_NO_PTHREAD_SIGMASK, GC_PTHREAD_CREATE_CONST,
+       GC_PTHREAD_EXIT_ATTRIBUTE, GC_NO_PTHREAD_CANCEL): Move the
+       definition to gc_config_macros.
+
+2011-03-08  Ivan Maidanski  <ivmai@mail.ru>
+
+       * pthread_support.c (pthread_cancel, GC_pthread_cancel_t,
+       GC_pthread_cancel): Test GC_NO_PTHREAD_CANCEL (instead of NACL and
+       GC_PTHREAD_EXIT_ATTRIBUTE).
+       * include/gc_pthread_redirects.h (GC_pthread_cancel,
+       pthread_cancel): Ditto.
+       * pthread_support.c (GC_pthread_create, GC_pthread_sigmask,
+       GC_pthread_join, GC_pthread_detach, GC_pthread_cancel): Realign
+       code.
+       * include/gc_pthread_redirects.h (GC_PTHREAD_EXIT_ATTRIBUTE):
+       Define as empty for NaCl.
+       * include/gc_pthread_redirects.h (GC_NO_PTHREAD_CANCEL): New macro
+       defined.
+
+2011-03-07  Ivan Maidanski  <ivmai@mail.ru>
+
+       * dyn_load.c (GC_init_dyld): Do not invoke
+       _dyld_bind_fully_image_containing_address() if GC_no_dls (as it is
+       not required to register the main data segment in that case).
+       * include/gc.h (GC_no_dls): Adjust the comment.
+
+2011-03-07  Ivan Maidanski  <ivmai@mail.ru>
+
+       * dyn_load.c (GC_MUST_RESTORE_REDEFINED_DLOPEN): Test
+       GC_NO_DLOPEN.
+       * gc_dlopen.c: Ditto.
+       * include/gc_pthread_redirects.h (GC_dlopen, dlopen): Ditto.
+       * gc_dlopen.c: Don't include dlfcn.h (as it is included in
+       gc_pthread_redirects.h).
+       * pthread_support.c (pthread_sigmask, GC_pthread_sigmask_t,
+       GC_pthread_sigmask): Test GC_NO_PTHREAD_SIGMASK (instead of
+       GC_DARWIN_THREADS, GC_OPENBSD_THREADS and NACL).
+       * include/gc_pthread_redirects.h (GC_pthread_sigmask,
+       pthread_sigmask): Ditto.
+       * win32_threads.c (pthread_sigmask, GC_pthread_sigmask): Test
+       GC_NO_PTHREAD_SIGMASK (instead of GC_WIN32_PTHREADS); reformat the
+       comment.
+       * pthread_support.c (pthread_create, GC_pthread_create_t,
+       GC_pthread_create): Rename GC_PTHREAD_CONST to
+       GC_PTHREAD_CREATE_CONST.
+       * win32_threads.c (GC_pthread_create): Ditto.
+       * include/gc_pthread_redirects.h: Ditto.
+       * include/gc_pthread_redirects.h (GC_NO_DLOPEN,
+       GC_NO_PTHREAD_SIGMASK): New macro defined.
+       * include/gc_pthread_redirects.h (GC_PTHREAD_CREATE_CONST): Set to
+       empty for NaCl.
+       * include/gc_pthread_redirects.h (GC_PTHREAD_EXIT_ATTRIBUTE): Do
+       not define for Android (as CANCEL_SAFE is not defined).
+
+2011-03-07  Ivan Maidanski  <ivmai@mail.ru>
+
+       * include/gc.h (GC_ADD_CALLER, GC_RETURN_ADDR,
+       GC_HAVE_BUILTIN_BACKTRACE, GC_CAN_SAVE_CALL_STACKS): Move
+       definition to gc_config_macros.h file.
+       * include/gc_config_macros.h: Check the file is included from gc.h
+       file.
+       * include/gc_version.h: Ditto.
+       * include/gc_config_macros.h: Reformat comments.
+       * include/gc_version.h: Reformat code.
+
+2011-02-20  Ivan Maidanski  <ivmai@mail.ru> (mostly really Elijah Taylor)
+
+       * gc_dlopen.c: Empty unit for NaCl.
+       * os_dep.c: Include fcntl.h for NaCl.
+       * os_dep.c (GC_get_main_stack_base): Ignore
+       USE_GET_STACKBASE_FOR_MAIN macro for NaCl.
+       * os_dep.c (GC_get_stack_base): Return GC_UNIMPLEMENTED for NaCl.
+       * os_dep.c (GC_remap): Use mmap (instead of mprotect) for NaCl.
+       * pthread_start.c (GC_inner_start_routine): Don't invoke
+       pthread_cleanup_push/pop for NaCl.
+       * pthread_stop_world.c (GC_nacl_num_gc_threads,
+       GC_nacl_thread_idx, GC_nacl_park_threads_now,
+       GC_nacl_thread_parker, GC_nacl_gc_thread_self,
+       GC_nacl_thread_parked, GC_nacl_thread_used,
+       GC_nacl_thread_parking_inited, GC_nacl_thread_alloc_lock): New
+       variable (fo NaCl only).
+       * pthread_stop_world.c (GC_suspend_handler): Reformat the code.
+       * pthread_stop_world.c (GC_remove_allowed_signals,
+       suspend_handler_mask, GC_stop_count, GC_world_is_stopped,
+       GC_retry_signals, SIG_THR_RESTART, GC_suspend_ack_sem,
+       GC_restart_ack_sem, GC_suspend_handler_inner, GC_suspend_handler,
+       GC_restart_handler): Don't define for NaCl.
+       * pthread_support.c (GC_get_nprocs): Ditto.
+       * include/private/gc_priv.h (SIG_SUSPEND): Ditto.
+       * include/private/gcconfig.h (LINUX): Ditto.
+       * pthread_stop_world.c (GC_push_all_stacks): Push register storage
+       for NaCl.
+       * pthread_stop_world.c (GC_suspend_all, GC_stop_world,
+       GC_start_world): Implement for NaCl.
+       * pthread_stop_world.c (GC_stop_world): Don't define unused "i"
+       local variable for OpenBSD (and NaCl).
+       * pthread_stop_world.c (NACL_STORE_REGS): New macro definition for
+       NaCl.
+       * pthread_stop_world.c (nacl_pre_syscall_hook,
+       __nacl_suspend_thread_if_needed, nacl_post_syscall_hook,
+       GC_nacl_initialize_gc_thread, GC_nacl_shutdown_gc_thread): New
+       function (for NaCl only).
+       * pthread_stop_world.c (GC_stop_init): Empty for NaCl.
+       * pthread_support.c (pthread_cancel, pthread_sigmask): Don't
+       redirect for NaCl.
+       * include/gc_pthread_redirects.h (pthread_cancel,
+       pthread_sigmask): Ditto.
+       * pthread_support.c (GC_nacl_initialize_gc_thread,
+       GC_nacl_shutdown_gc_thread): New internal prototype (NaCl only).
+       * pthread_support.c (GC_new_thread, GC_delete_thread): Initialize
+       and shutdown thread for NaCl.
+       * pthread_support.c (GC_thr_init): Call sysconf for NaCl.
+       * pthread_support.c (GC_pthread_exit): Call GC_thread_exit_proc
+       for NaCl.
+       * include/gc.h: Don't include features.h for NaCl.
+       * include/gc_pthread_redirects.h (GC_PTHREAD_CONST): New macro.
+       * include/gc_pthread_redirects.h (GC_pthread_create): Use
+       GC_PTHREAD_CONST instead of const.
+       * win32_threads.c (GC_pthread_create): Ditto.
+       * pthread_support.c (GC_pthread_create_t, GC_pthread_create,
+       pthread_create): Ditto.
+       * include/private/gcconfig.h (NACL): Recognize NaCl.
+       * include/private/gcconfig.h (GC_LINUX_THREADS): Valid for NaCl.
+       * include/private/pthread_stop_world.h (thread_stop_info): Add
+       reg_storage member; define NACL_GC_REG_STORAGE_SIZE macro (for
+       NaCl only).
+       * include/private/pthread_support.h (GC_nacl_gc_thread_self):
+       Declare internal variable (for NaCl only).
+
+2011-02-19  Ivan Maidanski  <ivmai@mail.ru>
+
+       * aclocal.m4: Regenerate (by autoreconf -vif using autoconf-2.68,
+       automake-1.11.1 and libtool-2.4).
+       * configure: Ditto.
+       * ltmain.sh: Ditto.
+       * makefile.in: Ditto.
+       * m4/libtool.m4: Ditto.
+       * m4/ltversion.m4: Ditto.
+       * mach_dep.c (GC_with_callee_saves_pushed): Fix FE_ALL_EXCEPT
+       macro.
+
+2011-02-13  Ivan Maidanski  <ivmai@mail.ru>
+
+       * mark.c (GC_mark_some): Prefix and suffix "asm" and "volatile"
+       keywords with double underscore.
+       * os_dep.c (GC_unix_get_mem): Reformat the code.
+       * os_dep.c (catch_exception_raise, catch_exception_raise_state,
+       catch_exception_raise_state_identity): Add GC_API_OSCALL to
+       function definition.
+       * os_dep.c (catch_exception_raise_state,
+       catch_exception_raise_state_identity): Move definition to be
+       before GC_ports.
+       * os_dep.c (catch_exception_raise): Declare to have the symbol
+       defined before GC_ports.
+       * os_dep.c (GC_ports): Store references to catch_exception_raise,
+       catch_exception_raise_state, catch_exception_raise_state_identity
+       (to prevent stripping these symbols as dead).
+       * os_dep.c (catch_exception_raise, catch_exception_raise_state,
+       catch_exception_raise_state_identity): Mark these symbols as
+       "referenced dynamically" via an assembler directive (unless
+       NO_DESC_CATCH_EXCEPTION_RAISE).
+       * include/private/gc_priv.h (GC_API_OSCALL): New macro (defined
+       similar to GC_API but as if GC_DLL is always defined).
+
+2011-02-10  Ivan Maidanski  <ivmai@mail.ru> (with input from Dimitry Andric)
+
+       * os_dep.c: Don't include signal.h for GC_write_fault_handler on
+       Win32.
+       * os_dep.c (SIG_OK): Don't return true unless SIGSEGV or SIGBUS on
+       FreeBSD.
+       * os_dep.c (CODE_OK): Use SEGV_ACCERR on FreeBSD (define
+       SEGV_ACCERR for older FreeBSD releases).
+       * os_dep.c (SIG_OK, CODE_OK, GC_write_fault_handler): Reformat the
+       code.
+
+2011-02-10  Ivan Maidanski  <ivmai@mail.ru>
+
+       * dyn_load.c (GC_register_map_entries,
+       GC_register_dynamic_libraries_dl_iterate_phdr): Calculate
+       DATASTART only once if DATASTART_IS_FUNC.
+       * dyn_load.c (GC_register_dynamic_libraries_dl_iterate_phdr):
+       Calculate DATAEND only once if DATAEND_IS_FUNC.
+       * dyn_load.c: Add comment to some endif; realign some code.
+       * dyn_load.c (GC_init_dyld): Don't use
+       _dyld_bind_fully_image_containing_address if
+       NO_DYLD_BIND_FULLY_IMAGE defined; add FIXME.
+       * include/private/gcconfig.h (GC_data_start, GC_find_limit):
+       Declare if used by DATASTART/DATAEND, respectively.
+       * include/private/gcconfig.h (DATASTART_IS_FUNC, DATAEND_IS_FUNC):
+       Define if DATASTART/DATAEND is a function, respectively.
+       * include/private/gcconfig.h (GETPAGESIZE, NO_PTHREAD_TRYLOCK,
+       NO_DYLD_BIND_FULLY_IMAGE): Define for Darwin/arm as well; include
+       unistd.h.
+
+2011-02-10  Ivan Maidanski  <ivmai@mail.ru>
+
+       * os_dep.c (GC_setpagesize, GC_task_self, PROTECT, UNPROTECT):
+       Reorder to remove redundant ifdef for Win32.
+       * os_dep.c: Add comment to some endif.
+       * os_dep.c: Include pthread.h (for Linux even if single-threaded)
+       if USE_GET_STACKBASE_FOR_MAIN; also include it for Darwin.
+       * os_dep.c (STACKBOTTOM): Redefine for Darwin (unless prohibited
+       for some reason).
+       * os_dep.c (GC_get_main_stack_base): Allow
+       USE_GET_STACKBASE_FOR_MAIN for Linux even if single-threaded; add
+       assertion for the returned result.
+       * os_dep.c (GC_get_stack_base): Define for Darwin if
+       multi-threaded.
+       * os_dep.c (GC_page_was_dirty): Reformat the code.
+       * os_dep.c: Reformat some comments.
+       * os_dep.c (SIG_OK, CODE_OK): Add comment (for FreeBSD).
+       * os_dep.c (ID_STOP, ID_RESUME): Define only if threads.
+       * os_dep.c (catch_exception_raise): Remove redundant parentheses;
+       refine the documentation.
+
+2011-02-10  Ivan Maidanski  <ivmai@mail.ru>
+
+       * NT_MAKEFILE: Define _CRT_SECURE_NO_DEPRECATE for C++ files as
+       well.
+       * NT_STATIC_THREADS_MAKEFILE: Ditto.
+       * doc/README.macros (USE_GET_STACKBASE_FOR_MAIN): Refine.
+       * include/gc.h (GC_INIT): Document.
+       * include/private/gc_priv.h (GC_MACH_HEADER, GC_MACH_SECTION,
+       GC_GETSECTBYNAME): Define depending only on the word size (i.e.,
+       define these macros also for ARM).
+       * tests/test.c (check_heap_stats): Print main thread stack bottom
+       as well (only if verbose mode is on).
+
+2011-02-09  Ivan Maidanski  <ivmai@mail.ru> (mostly Jean-Claude Beaudoin)
+
+       * mach_dep.c (GC_with_callee_saves_pushed): Fix and improve code
+       introduced by the previous patch (if GETCONTEXT_FPU_EXCMASK_BUG
+       and X86_64).
+
+2011-01-22  Ivan Maidanski  <ivmai@mail.ru> (mostly Jean-Claude Beaudoin)
+
+       * darwin_stop_world.c (GC_FindTopOfStack): Prefix and suffix
+       "volatile" keyword with double underscore.
+       * mach_dep.c (GETCONTEXT_FPU_EXCMASK_BUG): Recognize new macro and
+       include fenv.h if defined (unless NO_GETCONTEXT or HAVE_PUSH_REGS).
+       * mach_dep.c (GC_with_callee_saves_pushed): Restore FPU exception
+       mask corrupted by getcontext if GETCONTEXT_FPU_EXCMASK_BUG.
+       * include/private/gcconfig.h (GETCONTEXT_FPU_EXCMASK_BUG): Define
+       for Linux/amd64 (since its GLibc getcontext currently has the bug).
+
+2011-01-17  Ivan Maidanski  <ivmai@mail.ru>
+
+       * allchblk.c (GC_use_entire_heap): Change type to int (as declared
+       in gc.h); set the default value depending on new GC_USE_ENTIRE_HEAP
+       macro.
+       * misc.c (GC_init): Test GC_USE_ENTIRE_HEAP environment variable to
+       alter the default value of GC_use_entire_heap.
+       * doc/README.environment (GC_USE_ENTIRE_HEAP): Document.
+       * doc/README.macros (GC_USE_ENTIRE_HEAP): Ditto.
+
+2011-01-12  Ivan Maidanski  <ivmai@mail.ru>
+
+       * include/private/gcconfig.h (PARALLEL_MARK): Do not make it cause
+       MPROTECT_VDB undefining.
+
+2011-01-07  Ivan Maidanski  <ivmai@mail.ru>
+
+       * gc_dlopen.c: Reformat the comments and adjust code indentation.
+       * include/private/gcconfig.h (DYNAMIC_LOADING): Fix filename in
+       the comment.
+
+2011-01-07  Ivan Maidanski  <ivmai@mail.ru>
+
+       * include/private/gc_priv.h (THREAD_FLD, MAX_HEAP_SECTS,
+       _GC_arrays, GC_push_all_stack_sections, PRINT_BLACK_LIST,
+       GC_add_to_black_list_stack, GC_ASSERT, SIG_SUSPEND,
+       NEED_FIND_LIMIT): Reformat the code and comments for.
+       * include/private/gc_priv.h (_GC_arrays): Move the conditional
+       macro definitions (shortcuts for GC_arrays members) into the
+       structure body.
+
+2011-01-07  Ivan Maidanski  <ivmai@mail.ru>
+
+       * .cvsignore: Add more auto-generated files.
+       * include/private/.cvsignore: Ditto.
+       * darwin_stop_world.c (GC_mach_handler_thread,
+       GC_use_mach_handler_thread,
+       GC_darwin_register_mach_handler_thread): Define only if
+       MPROTECT_VDB.
+       * darwin_stop_world.c (GC_suspend_thread_list): Use
+       GC_mach_handler_thread and GC_use_mach_handler_thread only if
+       MPROTECT_VDB.
+       * darwin_stop_world.c (GC_stop_world): Reset GC_mach_threads_count
+       only if defined (i.e. unless GC_NO_THREADS_DISCOVERY).
+       * misc.c (GC_init): Fix comment for GWW_VDB.
+       * os_dep.c (GC_mprotect_state_t): Reformat the code.
+       * os_dep.c (DARWIN_EXC_STATE, DARWIN_EXC_STATE_COUNT,
+       DARWIN_EXC_STATE_T, DARWIN_EXC_STATE_DAR): New macros.
+       * os_dep.c (catch_exception_raise): Use DARWIN_EXC_STATE,
+       DARWIN_EXC_STATE_COUNT, DARWIN_EXC_STATE_T, DARWIN_EXC_STATE_DAR;
+       reformat the comment.
+       * pthread_support.c (GC_thr_init): Define "dummy" local variable
+       only unless GC_DARWIN_THREADS; reformat the code.
+       * include/private/gcconfig.h (MPROTECT_VDB): Define for Darwin
+       even in the single-threaded mode; define for iPhone/iPad.
+       * include/private/gcconfig.h (IA64): Remove unnecessary "ifdef"
+       around "undef".
+       * include/private/gcconfig.h (HEURISTIC1): Remove unused for
+       Cygwin.
+       * include/private/gcconfig.h (STACKBOTTOM): Use fixed address for
+       Darwin/arm (instead of HEURISTIC1).
+       * include/private/gcconfig.h (GET_MEM): Reformat the code.
+
+2011-01-05  Ivan Maidanski  <ivmai@mail.ru>
+
+       * misc.c (GC_write): Replace multiple "ifdef/endif" with "elif"
+       (for ECOS and NOSYS).
+       * os_dep.c (GC_get_main_stack_base): Ditto.
+       * os_dep.c (GC_get_main_stack_base): Check
+       USE_GET_STACKBASE_FOR_MAIN macro before checking STACKBOTTOM one;
+       remove "dummy" variable (use result one instead); reformat the
+       code.
+       * doc/README.macros (SN_TARGET_PS3): Document.
+       * extra/threadlibs.c (main): Don't output "-lpthread" (and "-ldl")
+       for Android.
+       * include/private/pthread_support.h: Fix comment for "endif".
+
+2010-12-26  Ivan Maidanski  <ivmai@mail.ru> (mostly really Miguel de Icaza)
+
+       * misc.c (GC_allocate_ml): Define global variable if SN_TARGET_PS3.
+       * misc.c (GC_init): Initialize GC_allocate_ml if SN_TARGET_PS3.
+       * os_dep.c (SIGSEGV): Define to dummy zero if SN_TARGET_PS3.
+       * os_dep.c (GC_unix_mmap_get_mem): Don't define if SN_TARGET_PS3.
+       * os_dep.c (GC_default_push_other_roots,
+       GC_push_thread_structures): Define for SN_TARGET_PS3.
+       * include/private/gc_locks.h (GC_allocate_ml, LOCK, UNLOCK): Define
+       for SN_TARGET_PS3.
+       * include/private/gcconfig.h (SN_TARGET_PS3): Recognize new macro
+       (Sony PS/3 target).
+       * include/private/gcconfig.h (THREADS): Define unconditionally if
+       SN_TARGET_PS3.
+       * include/private/gcconfig.h (GET_MEM): Define for SN_TARGET_PS3.
+
+2010-12-26  Ivan Maidanski  <ivmai@mail.ru>
+
+       * alloc.c (GC_collect_or_expand): Replace NIL with NULL in message.
+       * dbg_mlc.c (GC_debug_malloc, GC_debug_malloc_ignore_off_page,
+       GC_debug_malloc_atomic_ignore_off_page,
+       GC_debug_generic_malloc_inner,
+       GC_generic_malloc_inner_ignore_off_page, GC_debug_malloc_stubborn,
+       GC_debug_malloc_atomic, GC_debug_malloc_uncollectable,
+       GC_debug_malloc_atomic_uncollectable): Ditto.
+       * gcj_mlc.c (GC_debug_gcj_malloc): Ditto.
+       * dbg_mlc.c (GC_check_annotated_obj): Replace NIL with NULL in a
+       comment.
+       * dyn_load.c (GC_FirstDLOpenedLinkMap): Ditto.
+       * mark_rts.c (GC_roots_present): Ditto.
+       * doc/README: Ditto.
+       * include/private/gc_hdrs.h (IS_FORWARDING_ADDR_OR_NIL): Ditto.
+       * include/private/gc_priv.h (_GC_arrays): Ditto.
+
+2010-12-26  Ivan Maidanski  <ivmai@mail.ru> (mostly really Geoff Norton
+                                             and Jonathan Pryor)
+
+       * configure.ac: Use AC_CHECK_LIB() to check for pthread instead of
+       just blindly linking to -lpthread, as Android includes pthread
+       support within libc and does not provide a separate libpthread.
+       * dyn_load.c (GC_register_dynamic_libraries): Skip current link map
+       entry if l_addr is NULL (Android/bionic only).
+       * pthread_stop_world.c (android_thread_kill): New internal function
+       (Android only).
+       * pthread_stop_world.c (GC_suspend_all, GC_start_world): Call
+       android_thread_kill (based on tkill) instead of pthread_kill on
+       Android (since pthread_kill cannot be used safely on the platform).
+       * pthread_support.c (GC_new_thread): Store thread Id (obtained from
+       gettid) for use by android_thread_kill (Android only).
+       * include/private/pthread_support.h (GC_Thread_Rep): Add kernel_id
+       structure member (Android only).
+       * include/private/gcconfig.h: Recognize __x86_64 macro as a synonym
+       of __x86_64__ (Darwin); define __environ macro (Android on M68K).
+       * configure: Regenerate.
+
+2010-12-02  Ivan Maidanski  <ivmai@mail.ru>
+
+       * allchblk.c (GC_freehblk): Print extended error message (done via
+       GC_printf() before aborting with a short message) only if
+       GC_print_stats.
+       * dyn_load.c (GC_register_dynamic_libraries): Ditto.
+       * os_dep.c (GC_get_maps, GC_register_data_segments, GC_remap,
+       PROTECT, GC_write_fault_handler, GC_mprotect_thread): Ditto.
+       * pthread_stop_world.c (GC_start_world): Ditto.
+       * win32_threads.c (GC_register_my_thread_inner): Ditto.
+       * os_dep.c (GC_get_main_stack_base, GC_register_data_segments,
+       GC_dirty_init): Remove redundant print of an error message before
+       aborting with the same message.
+       * os_dep.c (GC_register_data_segments): Remove format specifier
+       from the string passed to GC_err_puts(); use ABORT instead of EXIT
+       (if invalid executable type).
+       * os_dep.c (GC_remap): Adjust printf format specifier (for long
+       type).
+       * os_dep.c (GC_dirty_init): Print a message about SIG_IGN detected
+       (for SIGSEGV/BUS) only if GC_print_stats.
+       * os_dep.c (catch_exception_raise): Join 2 adjacent GC_err_printf
+       calls.
+
+2010-11-25  Ivan Maidanski  <ivmai@mail.ru>
+
+       * tests/test.c (main): Print the relevant message if GWW_VDB.
+       * include/private/gcconfig.h: Don't define MPROTECT_VDB for Win32
+       on x64 if compiled by GCC.
+
+2010-11-04  Ivan Maidanski  <ivmai@mail.ru>
+
+       * tests/staticrootstest.c: Include string.h for memset() prototype.
+       * tests/thread_leak_test.c (main): Fix printf() format specifiers.
+
+2010-10-22  Ivan Maidanski <ivmai@mail.ru>
+
+       * CMakeLists.txt: Check enable_parallel_mark on Darwin.
+       * configure.ac: Ditto.
+       * darwin_stop_world.c (DARWIN_SUSPEND_GC_THREADS,
+       DARWIN_QUERY_TASK_THREADS): Rename to GC_NO_THREADS_DISCOVERY and
+       GC_DISCOVER_TASK_THREADS, respectively.
+       * os_dep.c (DARWIN_SUSPEND_GC_THREADS): Ditto.
+       * pthread_support.c (DARWIN_SUSPEND_GC_THREADS): Ditto.
+       * darwin_stop_world.c (DARWIN_QUERY_TASK_THREADS): Don't define
+       (and remove FIXME).
+       * darwin_stop_world.c (GC_use_threads_discovery): Add GC_API;
+       comment; remove FIXME.
+       * win32_threads.c (GC_NO_DLLMAIN): Rename to
+       GC_NO_THREADS_DISCOVERY.
+       * tests/test.c (GC_NO_DLLMAIN): Ditto.
+       * doc/README.macros (GC_NO_DLLMAIN): Ditto.
+       * doc/README.win32 (GC_NO_DLLMAIN): Ditto.
+       * doc/README.macros (GC_NO_THREADS_DISCOVERY): Update the comment.
+       * win32_threads.c (GC_win32_dll_threads): Define as macro to true
+       if GC_DISCOVER_TASK_THREADS (and not GC_NO_THREADS_DISCOVERY);
+       update the comment.
+       * win32_threads.c (GC_use_DllMain): Rename to
+       GC_use_threads_discovery; do not set GC_win32_dll_threads if
+       GC_DISCOVER_TASK_THREADS.
+       * win32_threads.c (GC_started_thread_while_stopped,
+       GC_lookup_thread_inner, UNPROTECT_THREAD, GC_lookup_pthread,
+       GC_thr_init, GC_pthread_create, DllMain): Rewrite some expressions
+       which use GC_win32_dll_threads to minimize the possibility of
+       an "unreachable code" compiler warning when GC_win32_dll_threads
+       is defined as a macro.
+       * win32_threads.c (GC_unregister_my_thread): Don't call
+       GC_delete_thread() if GC_win32_dll_threads and THREAD_LOCAL_ALLOC
+       (since can't happen); use "t" local variable only if not
+       GC_win32_dll_threads.
+       * win32_threads.c (GC_register_my_thread_inner): Reformat the
+       comment.
+       * doc/README.macros (GC_DISCOVER_TASK_THREADS): Document.
+       * include/gc.h (GC_use_DllMain): Rename to
+       GC_use_threads_discovery but keep old name as a macro definition.
+       * include/gc.h (GC_use_threads_discovery): Declare also for
+       Darwin; update the comment.
+       * tests/test.c (main): Call GC_use_threads_discovery for Darwin
+       (to test the mode if possible).
+       * configure: Regenerate.
+
+2010-10-16  Ivan Maidanski <ivmai@mail.ru>
+
+       * darwin_stop_world.c (DARWIN_SUSPEND_GC_THREADS,
+       DARWIN_QUERY_TASK_THREADS): New macro recognized.
+       * darwin_stop_world.c (GC_query_task_threads): add STATIC;
+       initialize to false; define as macro if DARWIN_SUSPEND_GC_THREADS
+       or DARWIN_QUERY_TASK_THREADS; remove FIXME.
+       * darwin_stop_world.c (GC_use_threads_discovery): New function
+       (for setting GC_query_task_threads value).
+       * darwin_stop_world.c (GC_mach_handler_thread,
+       GC_use_mach_handler_thread, GC_mach_thread, GC_MAX_MACH_THREADS,
+       GC_mach_threads, GC_mach_threads_count, GC_suspend_thread_list,
+       GC_darwin_register_mach_handler_thread): Define only if not
+       DARWIN_SUSPEND_GC_THREADS.
+       * darwin_stop_world.c (GC_stop_world, GC_start_world): Exclude
+       the code for GC_query_task_threads case from compilation unless
+       DARWIN_SUSPEND_GC_THREADS.
+       * os_dep.c (GC_darwin_register_mach_handler_thread): Declared only
+       if Darwin threads and not DARWIN_SUSPEND_GC_THREADS.
+       * os_dep.c (GC_mprotect_thread): Call
+       GC_darwin_register_mach_handler_thread only if THREADS and not
+       DARWIN_SUSPEND_GC_THREADS.
+       * pthread_support.c (marker_mach_threads): Don't define if
+       DARWIN_SUSPEND_GC_THREADS.
+       * pthread_support.c (GC_mark_thread): Don't fill in
+       marker_mach_threads if DARWIN_SUSPEND_GC_THREADS.
+       * include/private/gc_locks.h (GC_need_to_lock): Always declare for
+       THREADS case.
+
+2010-10-15  Ivan Maidanski <ivmai@mail.ru>
+
+       * darwin_stop_world.c (GC_query_task_threads): Don't define to
+       false for DARWIN_DONT_PARSE_STACK case; unconditionally initialize
+       the variable to false (for now).
+       * darwin_stop_world.c (GC_push_all_stacks): Call task_threads()
+       only if not DARWIN_DONT_PARSE_STACK.
+       * darwin_stop_world.c (GC_stop_world, GC_start_world): Use the
+       approach based on task_threads() only if GC_query_task_threads
+       else use GC_threads table.
+
+2010-10-15  Ivan Maidanski <ivmai@mail.ru>
+
+       * darwin_stop_world.c (GC_mach_threads): Remove static qualifier.
+       * darwin_stop_world.c (GC_stop_init): Remove (as we do not need to
+       really clear GC_mach_threads[]).
+       * darwin_stop_world.c (GC_stop_world): Reset GC_mach_threads_count
+       (instead of calling GC_stop_init).
+       * include/private/pthread_support.h (GC_stop_init): Remove proto.
+       * pthread_support.c (GC_stop_init): Add proto (unless Darwin).
+       * pthread_support.c (GC_thr_init): Don't call GC_stop_init() if
+       GC_DARWIN_THREADS.
+
+2010-10-14  Ivan Maidanski <ivmai@mail.ru>
+
+       * darwin_stop_world.c (GC_stack_range_for): New static function
+       (move the code from GC_push_all_stacks).
+       * darwin_stop_world.c (GC_push_all_stacks): Call
+       GC_stack_range_for(); rename kern_return local variable to
+       kern_result.
+       * darwin_stop_world.c (GC_is_mach_marker): Change argument type
+       from mach_port_t to thread_act_t.
+       * pthread_support.c (GC_is_mach_marker): Ditto.
+
+2010-10-12  Ivan Maidanski <ivmai@mail.ru>
+
+       * darwin_stop_world.c (GC_push_all_stacks): Fix "my_task" local
+       variable initialization (always call current_task()).
+       * pthread_support.c (GC_thr_init, GC_register_my_thread_inner):
+       Don't set thread's stop_info.stack_ptr value for Darwin.
+       * include/private/darwin_stop_world.h (thread_stop_info): Update
+       the comment for stack_ptr.
+
+2010-10-10  Ivan Maidanski <ivmai@mail.ru>
+
+       * darwin_stop_world.c (GC_push_all_stacks): Rename "r", "me" local
+       variables to "kern_return" and "my_thread" ones, respectively;
+       call mach_port_deallocate() unconditionally.
+       * darwin_stop_world.c (GC_stop_world): Don't call mach_thread_self
+       if DEBUG_THREADS.
+
+2010-10-09  Ivan Maidanski <ivmai@mail.ru>
+
+       * darwin_stop_world.c (GC_mach_thread): Move from
+       darwin_stop_world.h.
+       * include/private/darwin_stop_world.h (GC_mach_thread): Remove.
+       * win32_threads.c (GC_start_world): Define "thread_id" local
+       variable only if GC_ASSERTIONS; decide whether to resume a thread
+       based on its "suspended" field value; assert that suspended thread
+       stack_base is non-zero and the thread is not our one.
+
+2010-10-08  Ivan Maidanski <ivmai@mail.ru>
+
+       * darwin_stop_world.c (GC_thread_resume): New inline function
+       (move code from GC_thread_resume).
+       * darwin_stop_world.c (GC_start_world): Check result of
+       task_threads(); call GC_thread_resume().
+       * os_dep.c (GC_malloc_heap_l, GC_is_malloc_heap_base): Define
+       only if not CYGWIN32.
+       * os_dep.c (GC_is_heap_base): Call GC_is_malloc_heap_base() only
+       if not CYGWIN32.
+
+2010-10-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * darwin_stop_world.c (FindTopOfStack): Change return type to
+       ptr_t (from long); make GC_INNER; add GC_ prefix.
+       * darwin_stop_world.c (GC_push_all_stacks): Add thread_blocked
+       local variable (initialized from the corresponding GC_thread
+       field unless GC_query_task_threads); add assertion that our
+       thread is not blocked; prefix FindTopOfStack with GC_ and remove
+       no longer needed cast to ptr_t of the result; handle thread
+       blocked case (and remove FIXME); use GC_push_all_stack_sections
+       unless GC_query_task_threads (and remove FIXME).
+       * pthread_support.c (GC_FindTopOfStack): Declare (if needed).
+       * pthread_support.c (GC_do_blocking_inner): Call
+       GC_save_regs_in_stack (if needed) before acquiring the lock.
+       * win32_threads.c (GC_do_blocking_inner): Ditto.
+       * pthread_support.c (GC_do_blocking_inner): Set/clear topOfStack
+       field of GC_thread (Darwin only).
+       * include/private/pthread_support.h (GC_thread): Add topOfStack
+       field for Darwin (unless DARWIN_DONT_PARSE_STACK).
+
+2010-10-05  Ivan Maidanski <ivmai@mail.ru>
+
+       * finalize.c (GC_check_finalizer_nested): Change return type to
+       char pointer (instead of int pointer); use explicit cast for
+       GC_finalizer_nested assignment.
+       * pthread_support.c (GC_check_finalizer_nested): Ditto.
+       * win32_threads.c (GC_check_finalizer_nested): Ditto.
+       * finalize.c (GC_finalizer_nested): Change type to unsigned char.
+       * finalize.c (GC_notify_or_invoke_finalizers): Change type of
+       "pnested" local variable to char pointer.
+       * pthread_support.c (GC_do_blocking_inner,
+       GC_call_with_gc_active): Use explicit cast for "thread_blocked"
+       field assignment.
+       * win32_threads.c (GC_lookup_pthread): Use explicit cast for
+       "suspended" field assignment.
+       * win32_threads.c (GC_Thread_Rep): Use short type for
+       finalizer_skipped; use char type for finalizer_nested and flags
+       fields and reorder some fields (to minimize GC_Thread_Rep
+       structure size).
+       * include/private/pthread_support.h (GC_Thread_Rep): Ditto.
+       * win32_threads.c (GC_Thread_Rep): Use char type for suspended
+       field (instead of GC_bool).
+       * include/private/pthread_support.h (GC_Thread_Rep): Use char type
+       for thread_blocked field (instead of short).
+
+2010-09-30  Ivan Maidanski <ivmai@mail.ru>
+
+       * darwin_stop_world.c (GC_query_task_threads): New variable (or
+       macro).
+       * darwin_stop_world.c (GC_push_all_stacks): Use
+       GC_query_task_threads (to choose between algorithms based on
+       kernel task_threads and based on GC_threads table); update FIXME;
+       remove commented out GC_push_one statements.
+       * pthread_support.c (GC_thr_init, GC_do_blocking_inner,
+       GC_call_with_gc_active, GC_register_my_thread_inner): Initialize
+       stack_ptr field for all platforms.
+       * pthread_support.c (GC_call_with_gc_active): Initialize
+       saved_stack_ptr field for all platforms.
+       * include/private/darwin_stop_world.h (thread_stop_info): Add
+       stack_ptr field; change type of already_suspended from int to
+       GC_bool.
+
+2010-09-29  Ivan Maidanski <ivmai@mail.ru>
+
+       * darwin_stop_world.c (GC_MAX_MACH_THREADS): New macro.
+       * darwin_stop_world.c (GC_mach_threads, GC_stop_init): Use
+       GC_MAX_MACH_THREADS instead of THREAD_TABLE_SZ.
+       * darwin_stop_world.c (GC_mach_threads): Add FIXME.
+       * darwin_stop_world.c (GC_stop_init, GC_suspend_thread_list,
+       GC_stop_world): Use FALSE and TRUE for already_suspended field and
+       "changed", "found" variables.
+       * darwin_stop_world.c (GC_is_mach_marker): New prototype (only if
+       PARALLEL_MARK).
+       * darwin_stop_world.c (GC_suspend_thread_list): Change return type
+       to GC_bool; change type of "changed", "found" to GC_bool; make
+       "my_thread" as an argument (instead of acquiring/deallocating it
+       locally); do not add my_thread, GC_mach_handler_thread and marker
+       threads to GC_mach_threads table; check for overflow of
+       GC_mach_threads table; increase GC_mach_threads_count if "found"
+       is true and info.suspend_count is non-zero.
+       * darwin_stop_world.c (GC_suspend_thread_list, GC_start_world):
+       Adjust "thread" format specifiers for GC_printf(); search thread
+       in "old_list" starting from the previous found one.
+       * darwin_stop_world.c (GC_stop_world): Rename "changes" to
+       "changed" local variable; remove "result" variable; adjust
+       GC_printf debugging message.
+       * darwin_stop_world.c (GC_start_world): Do not check for
+       my_thread and GC_use_mach_handler_thread (since they are not added
+       to GC_mach_threads table); call thread_info() only if
+       DEBUG_THREADS or GC_ASSERTIONS.
+       * pthread_support.c (marker_mach_threads): New static variable (if
+       Darwin).
+       * pthread_support.c (GC_is_mach_marker): New function (if Darwin).
+       * pthread_support.c (GC_mark_thread): Fill in marker_mach_threads
+       table (if Darwin).
+
+2010-09-26  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_parallel): Define only if THREADS.
+       * misc.c (GC_get_parallel): Ditto.
+       * include/gc.h (GC_parallel, GC_get_parallel,
+       GC_get_suspend_signal, GC_allow_register_threads,
+       GC_register_my_thread, GC_unregister_my_thread): Define only if
+       GC_THREADS.
+       * include/gc.h (GC_get_heap_size): Fix a typo in a comment.
+
+2010-09-11  Ivan Maidanski <ivmai@mail.ru> (really Ludovic Courtes)
+
+       * configure.ac: Use `AC_C_INLINE'.
+       * include/private/gc_priv.h (GC_INLINE): Use "inline" keyword
+       (determined by configure AC_C_INLINE) if HAVE_CONFIG_H is defined.
+       * configure.ac: Expand all tabs to spaces.
+       * configure: Regenerate.
+       * include/private/config.h.in: Ditto.
+
+2010-09-11  Ivan Maidanski <ivmai@mail.ru>
+
+       * dyn_load.c (DL_ITERATE_PHDR_STRONG): New macro (define for
+       FreeBSD).
+       * dyn_load.c (GC_register_main_static_data): Move the definition
+       above GC_register_dynamic_libraries_dl_iterate_phdr one (FreeBSD
+       case); unconditionally return FALSE if DL_ITERATE_PHDR_STRONG.
+       * dyn_load.c (GC_register_dynamic_libraries_dl_iterate_phdr): Test
+       GC_register_main_static_data() result (instead of direct testing
+       of dl_iterate_phdr (to prevent a compiler warning).
+       * os_dep.c (CODE_OK): Test si_code also for the value of 2
+       (FreeBSD case; required for FreeBSD v7+).
+       * os_dep.c (CODE_OK): Properly use parentheses (HPUX case).
+       * include/private/gcconfig.h (DATASTART): Cast etext argument in
+       GC_FreeBSDGetDataStart() call; remove unnecessary "&" (FreeBSD
+       case).
+
+2010-09-09  Ivan Maidanski <ivmai@mail.ru> (with input from Ludovic Courtes)
+
+       * include/private/specific.h (quick_thread_id): Define thru
+       GC_approx_sp(); define as a macro.
+       * include/private/specific.h (getspecific): Use GC_INLINE instead
+       of __inline__ (to work around Sun CC which does not recognize
+       inline keyword surrounded with underscores).
+       * include/private/specific.h: Expand all tabs to spaces; remove
+       trailing spaces at EOLn.
+
+2010-09-04  Ivan Maidanski <ivmai@mail.ru>
+
+       * darwin_stop_world.c (FindTopOfStack): Simplify condition
+       expressions.
+       * darwin_stop_world.c (GC_push_all_stacks): Merge two variants
+       of this function (DARWIN_DONT_PARSE_STACK).
+       * darwin_stop_world.c (GC_push_all_stacks): Add a check for our
+       thread is found (same as in pthread_stop_world.c).
+       * darwin_stop_world.c (GC_push_all_stacks): Print the number of
+       scanned threads if verbose (same as in pthread_stop_world.c).
+
+2010-09-04  Ivan Maidanski <ivmai@mail.ru>
+
+       * darwin_stop_world.c (GC_push_all_stacks): Reset
+       thread_state_count value before every thread_get_state call;
+       refine the comment for thread_state_count.
+       * darwin_stop_world.c (GC_push_all_stacks): Ignore rsp, rip/eip,
+       rflags, cs, fs, gs, ss, ds, es, __pc registers; uncomment ebp
+       register pushing.
+       * darwin_stop_world.c (GC_push_all_stacks): Set outCount to
+       GC_MACH_THREAD_STATE_COUNT (instead of THREAD_STATE_MAX).
+       * darwin_stop_world.c (GC_push_all_stacks): Remove FIXME and WARN
+       for i386.
+
+2010-09-03  Ivan Maidanski <ivmai@mail.ru>
+
+       * doc/README.macros (DARWIN_DONT_PARSE_STACK): Fix a typo.
+       * darwin_stop_world.c (GC_use_mach_handler_thread): Change type
+       to GC_bool.
+       * darwin_stop_world.c (GC_suspend_thread_list, GC_start_world):
+       Simplify the expressions involving GC_use_mach_handler_thread.
+       * darwin_stop_world.c (GC_darwin_register_mach_handler_thread):
+       Initialize GC_use_mach_handler_thread to TRUE (instead of 1).
+
+2010-09-02  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc_pthread_redirects.h (GC_pthread_sigmask, GC_dlopen,
+       pthread_sigmask, dlopen): Don't define for Win32 pthreads (and
+       don't include signal.h and dlfcn.h).
+
+2010-08-25  Ivan Maidanski <ivmai@mail.ru> (with help from Hans Boehm)
+
+       * dyn_load.c (GC_register_dynlib_callback): Add FIXME.
+
+2010-08-18  Ivan Maidanski <ivmai@mail.ru> (really Andreas Tobler)
+
+       * include/private/gcconfig.h: Add support for FreeBSD on ppc64.
+
+2010-08-18  Ivan Maidanski <ivmai@mail.ru> (with help from Andreas Tobler)
+
+       * os_dep.c (PROTECT, UNPROTECT): Correct VM_PROT_EXEC to
+       VM_PROT_EXECUTE.
+
+2010-08-14  Ivan Maidanski <ivmai@mail.ru>
+
+       * aclocal.m4: Regenerate (by autoreconf -vif using autoconf-2.67,
+       automake-1.11.1 and libtool-2.2.8).
+       * configure: Ditto.
+       * ltmain.sh: Ditto.
+       * Makefile.in: Ditto.
+       * include/private/config.h.in: Ditto.
+       * m4/libtool.m4: Ditto.
+       * m4/ltoptions.m4: Ditto.
+       * m4/ltversion.m4: Ditto.
+       * m4/lt~obsolete.m4: Ditto.
+
+2010-08-14  Ivan Maidanski <ivmai@mail.ru>
+
+       * os_dep.c (os2_alloc): Don't set PAG_EXECUTE unless
+       pages_executable is on.
+       * os_dep.c (os2_alloc): Add FIXME (for recursion).
+       * os_dep.c (UNPROTECT): Abort with a more informative message if
+       pages_executable is on ("mprotect" case).
+       * os_dep.c (PROTECT, UNPROTECT): Set VM_PROT_EXEC if
+       pages_executable is on (Darwin case).
+       * pthread_support.c (GC_init_real_syms): Abort with an informative
+       message if libgc is linked after libpthread.
+
+2010-08-14  Ivan Maidanski <ivmai@mail.ru>
+
+       * dyn_load.c (GC_register_dynlib_callback): Adjust "start" pointer
+       for 64-bit targets.
+       * pthread_support.c (start_mark_threads): Expand PTHREAD_CREATE
+       macro.
+       * pthread_support.c (start_mark_threads): Call INIT_REAL_SYMS()
+       since REAL(pthread_create) is used.
+       * pthread_support.c (PTHREAD_CREATE): Remove unused.
+
+2010-08-14  Ivan Maidanski <ivmai@mail.ru>
+
+       * extra/threadlibs.c (main): Remove --wrap for "read" (since not
+       wrapped anymore).
+       * doc/README.linux (GC_USE_LD_WRAP): Ditto.
+       * os_dep.c (__wrap_read): Ditto (in the comment).
+
+2010-08-14  Ivan Maidanski <ivmai@mail.ru> (with help from Hans Boehm)
+
+       * include/gc_pthread_redirects.h: Test GC_PTHREADS and GC_H at the
+       beginning of the file.
+       * include/gc_pthread_redirects.h (GC_PTHREAD_EXIT_ATTRIBUTE): New
+       macro (defined only for Linux and Solaris).
+       * include/gc_pthread_redirects.h (GC_pthread_cancel,
+       GC_pthread_exit): Declare new API function (only if
+       GC_PTHREAD_EXIT_ATTRIBUTE).
+       * include/gc_pthread_redirects.h (pthread_cancel, pthread_exit):
+       Redirect (if GC_PTHREAD_EXIT_ATTRIBUTE).
+       * include/private/pthread_support.h (DISABLED_GC): New macro.
+       * pthread_support.c (pthread_cancel, pthread_exit): Restore
+       original definition or declare "real" function (if needed and
+       GC_PTHREAD_EXIT_ATTRIBUTE).
+       * pthread_support.c (GC_pthread_cancel_t, GC_pthread_exit_t):
+       Declare new types if needed.
+       * pthread_support.c (GC_pthread_cancel, GC_pthread_exit): New
+       function definition (only if GC_PTHREAD_EXIT_ATTRIBUTE).
+       * pthread_support.c (GC_init_real_syms): Initialize pointers to
+       the "real" pthread_cancel and pthread_exit (only if
+       GC_PTHREAD_EXIT_ATTRIBUTE).
+       * pthread_support.c (GC_unregister_my_thread): Enable collections
+       if DISABLED_GC was set (only if GC_PTHREAD_EXIT_ATTRIBUTE).
+       * pthread_support.c (pthread_cancel, pthread_exit): New wrapped
+       function definition (only if GC_PTHREAD_EXIT_ATTRIBUTE defined).
+       * pthread_support.c (GC_start_routine): Refine the comment.
+       * extra/threadlibs.c (main): Adjust --wrap (add "read",
+       "pthread_exit", "pthread_cancel" but remove "sleep").
+       * doc/README.linux (GC_USE_LD_WRAP): Ditto.
+       * doc/README.linux: Expand all tabs to spaces; remove trailing
+       spaces at EOLn.
+
+2010-08-12  Ivan Maidanski <ivmai@mail.ru> (mostly really Mike Gran)
+
+       * include/gc.h (GC_MALLOC_STUBBORN): Remove trailing ';' in the
+       macro definition.
+       * include/gc.h (GC_reachable_here): Ditto.
+       * include/gc.h (GC_reachable_here): Prefix and postfix "volatile"
+       with double '_'.
+
+2010-07-29  Ivan Maidanski <ivmai@mail.ru> (with input from NIIBE Yutaka)
+
+       * pthread_start.c: New file.
+       * CMakeLists.txt (SRC): Add pthread_start.c.
+       * Makefile.am (libgc_la_SOURCES): Ditto.
+       * Makefile.direct (CSRCS): Ditto.
+       * Makefile.direct (OBJS): Add pthread_start.obj.
+       * extra/gc.c: Add a comment; include pthread_start.c.
+       * pthread_support.c (start_info): Move the struct definition down
+       closer to its usage.
+       * pthread_support.c (GC_thread_exit_proc): Replace STATIC with
+       GC_INNER.
+       * pthread_support.c (GC_inner_start_routine): Move to the
+       definition to pthread_start.c; leave only the prototype; remove
+       STATIC.
+       * pthread_support.c (GC_start_rtn_prepare_thread): New function
+       (contains parts of the original GC_inner_start_routine).
+       * Makefile.in: Regenerate.
+       * configure: Ditto.
+
+2010-07-28  Ivan Maidanski <ivmai@mail.ru> (mostly really Noah Lavine)
+
+       * configure.ac (NO_EXECUTE_PERMISSION): Add comment.
+       * doc/README.macros (NO_EXECUTE_PERMISSION): Update the
+       documentation.
+       * include/gc.h (GC_set_pages_executable, GC_get_pages_executable):
+       New API function declaration.
+       * include/gc.h (GC_ignore_warn_proc): Reformat the comment.
+       * os_dep.c (OPT_PROT_EXEC): Remove (superseded by
+       pages_executable).
+       * os_dep.c (pages_executable): New static variable.
+       * os_dep.c (IGNORE_PAGES_EXECUTABLE): New macro (used by
+       GC_get_pages_executable only).
+       * os_dep.c (GC_unix_mmap_get_mem, GC_remap, PROTECT, UNPROTECT):
+       Replace OPT_PROT_EXEC with pages_executable.
+       * os_dep.c (GC_unix_mmap_get_mem, GC_remap, GC_win32_get_mem,
+       GC_wince_get_mem, UNPROTECT): Undefine IGNORE_PAGES_EXECUTABLE.
+       * os_dep.c (GC_win32_get_mem, GC_wince_get_mem, GC_remap, PROTECT,
+       UNPROTECT): Use PAGE_EXECUTE_... only if pages_executable is on.
+       * os_dep.c (GC_set_pages_executable, GC_get_pages_executable): New
+       API function definition.
+
+2010-07-28  Ivan Maidanski <ivmai@mail.ru>
+
+       * tests/test.c (check_heap_stats): Increase max_heap_sz by 20% for
+       64-bit CPUs (to prevent "Unexpected heap growth" failure on Win64,
+       at least).
+
+2010-07-14  Ivan Maidanski <ivmai@mail.ru>
+
+       * tests/test.c (check_heap_stats): Increase max_heap_sz by 25% for
+       32-bit CPUs (to prevent "Unexpected heap growth" failure).
+
+2010-07-13  Ivan Maidanski <ivmai@mail.ru>
+
+       * gc_dlopen.c (dlopen): Prototype REAL_DLFUNC if GC_USE_LD_WRAP.
+       * pthread_support.c (pthread_create, pthread_join, pthread_detach,
+       pthread_sigmask): Ditto.
+       * gc_dlopen.c (dlopen): Remove cast (redundant since the prototype
+       is added).
+       * gc_dlopen.c (GC_dlopen): Fix return type.
+       * pthread_support.c (GC_init_real_syms): Don't define
+       LIBPTHREAD_NAME, LIBPTHREAD_NAME_LEN, len, namebuf and
+       libpthread_name if RTLD_NEXT.
+
+2010-07-13  Ivan Maidanski <ivmai@mail.ru>
+
+       * gc_dlopen.c (disable_gc_for_dlopen): Update the comment.
+       * gc_dlopen.c (dlopen): Ditto.
+       * include/gc.h: Update copyright header.
+       * include/gc.h (GC_enable_incremental): Refine the comment.
+       * include/gc.h (DECLSPEC_NORETURN): Define macro as empty if
+       missing (only for Win32).
+       * include/gc.h (GC_ExitThread): Use DECLSPEC_NORETURN.
+       * win32_threads.c (GC_ExitThread): Ditto.
+       * include/gc.h (GC_endthreadex): Add a comment.
+
+2010-05-31  Ivan Maidanski <ivmai@mail.ru> (really Alexander Belchenko)
+
+       * include/cord.h: Fix typos.
+       * include/cord.h: Expand all tabs to spaces; remove trailing
+       spaces at EOLn.
+
+2010-05-22  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile.in: Regenerate.
+       * configure: Ditto.
+
+2010-05-22  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile.am (EXTRA_DIST): Add "CMakeLists.txt" and
+       "tests/CMakeLists.txt".
+       * doc/doc.am (dist_pkgdata_DATA): Add "doc/README.cmake".
+
+2010-05-21  Ivan Maidanski <ivmai@mail.ru> (really Bradley Smith and
+                                            Stefano Rivera)
+
+       * mach_dep.c (NO_GETCONTEXT): Also define if AVR32.
+       * include/private/gcconfig.h (AVR32): New macro (also define the
+       supplementary macros for the target).
+       * include/private/thread_local_alloc (USE_COMPILER_TLS): Don't
+       define for AVR32.
+
+2010-05-13  Ivan Maidanski <ivmai@mail.ru> (mostly really Uros Bizjak)
+
+       * tests/leak_test.c (main): Explicitly define as returning int
+       (to prevent a spurious test failure on some Linux/alpha targets).
+       * tests/thread_leak_test.c (main): Ditto.
+       * tests/thread_leak_test.c: Initialize GC_find_leak in the main
+       thread (before GC_INIT) only.
+       * tests/leak_test.c (main): Use GC_set_find_leak() instead of
+       accessing GC_find_leak directly.
+       * tests/thread_leak_test.c (main): Ditto.
+
+2010-05-05  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc.h (GC_find_leak, GC_finalize_on_demand,
+       GC_java_finalization, GC_dont_expand, GC_no_dls,
+       GC_dont_precollect): Simplify the comment (remove the information
+       about data races since the value is boolean).
+
+2010-04-16  Ivan Maidanski <ivmai@mail.ru> (mostly really Louis Zhuang)
+
+       * os_dep.c (GC_get_stack_base, GC_get_main_stack_base): New
+       Solaris-specific implementation (based on thr_stksegment).
+       * os_dep.c (stackbase_main_self, stackbase_main_ss_sp): New static
+       variable used by the Solaris-specific GC_get_stack_base().
+
+2010-04-16  Ivan Maidanski <ivmai@mail.ru> (mostly really NIIBE Yutaka)
+
+       * pthread_support.c (GC_mark_thread_local_free_lists,
+       GC_check_tls): Mark (and check) only for live threads (in case of
+       GC_destroy_thread_local() is called already but GC_delete_thread()
+       is not yet).
+       * win32_threads.c (GC_mark_thread_local_free_lists, GC_check_tls):
+       Ditto (matters only if GC_PTHREADS defined).
+
+2010-04-09  Ivan Maidanski <ivmai@mail.ru>
+
+       * NT_MAKEFILE: Remove the comment about DLL and Win32S.
+       * NT_STATIC_THREADS_MAKEFILE: Ditto.
+       * NT_X64_STATIC_THREADS_MAKEFILE: Ditto.
+       * NT_MAKEFILE: Add ".SUFFIXES" directive (to handle gc_cpp.cc
+       properly on VS 2005+).
+       * NT_MAKEFILE: Update GC log file name in comments.
+       * NT_STATIC_THREADS_MAKEFILE: Ditto.
+       * NT_X64_STATIC_THREADS_MAKEFILE: Ditto.
+       * NT_X64_THREADS_MAKEFILE: Ditto.
+       * doc/README.win32: Ditto.
+       * NT_MAKEFILE: Remove ":full" for "-debug" option (since no
+       longer supported by VS).
+       * NT_STATIC_THREADS_MAKEFILE: Ditto.
+       * NT_MAKEFILE: Commented out copying of gc_cpp.cc to gc_cpp.cpp.
+       * NT_STATIC_THREADS_MAKEFILE: Ditto.
+       * NT_X64_STATIC_THREADS_MAKEFILE: Ditto.
+       * NT_X64_THREADS_MAKEFILE: Ditto.
+       * NT_STATIC_THREADS_MAKEFILE: Add -D PARALLEL_MARK option.
+       * NT_STATIC_THREADS_MAKEFILE: Increase stack size for gctest.exe.
+       * NT_X64_STATIC_THREADS_MAKEFILE: Remove "-stack" option (use the
+       default stack size limit).
+       * NT_X64_THREADS_MAKEFILE: Rename "gc64_dll.dll" to "gc64.dll".
+       * win32_threads.c (GC_get_next_stack): Always define (since it is
+       also used for Cygwin now).
+
+2010-03-26  Ivan Maidanski <ivmai@mail.ru> (really Hans Boehm)
+
+       * alloc.c (GC_maybe_gc): Move GC_notify_full_gc() call upper to
+       be just before GC_clear_marks() call.
+       * include/gc_mark.h (GC_start_callback_proc): Refine the comment.
+
+2010-03-23  Ivan Maidanski <ivmai@mail.ru> (really Dave Korn)
+
+       * Makefile.am (check_LTLIBRARIES): Initialize to empty.
+       * tests/tests.am (TESTS, check_PROGRAMS): Add staticrootstest.
+       * tests/tests.am (staticrootstest_SOURCES, staticrootstest_LDADD,
+       libstaticrootslib_la_SOURCES, libstaticrootslib_la_LIBADD,
+       libstaticrootslib_la_LDFLAGS, libstaticrootslib_la_DEPENDENCIES):
+       Define.
+       * tests/tests.am (check_LTLIBRARIES): Add libstaticrootslib.la.
+       * .cvsignore: Ignore libstaticrootslib.la.
+       * Makefile.in: Regenerate.
+
+2010-03-20  Ivan Maidanski <ivmai@mail.ru>
+
+       * m4/libtool.m4: Re-add auto-generated file (for "make dist").
+       * m4/lt~obsolete.m4: Ditto.
+       * m4/ltoptions.m4: Ditto.
+       * m4/ltsugar.m4: Ditto.
+       * m4/ltversion.m4: Ditto.
+
+2010-03-20  Ivan Maidanski <ivmai@mail.ru> (really Dave Korn)
+
+       * tests/staticrootstest.c: New file.
+       * tests/staticrootslib.c: Ditto.
+
+2010-03-19  Ivan Maidanski <ivmai@mail.ru> (really Dave Korn)
+
+       * dyn_load.c (GC_get_next_stack, GC_cond_add_roots): Define for
+       Cygwin as well as other win32 targets.
+       * dyn_load.c (GC_wnt): Define to constant true.
+       * dyn_load.c (GC_register_dynamic_libraries): Define for Cygwin as
+       well as other win32 targets.
+       * mark_rts.c (rt_hash, GC_roots_present, add_roots_to_index):
+       Don't define for Cygwin, as on other win32.
+       * mark_rts.c (GC_add_roots_inner, GC_clear_roots): Handle on
+       Cygwin as for other win32 targets.
+       * mark_rts.c (GC_rebuild_root_index): Don't declare on Cygwin, as
+       other win32.
+       * mark_rts.c (GC_remove_tmp_roots): Do declare on Cygwin as on
+       other win32.
+       * mark_rts.c (GC_remove_roots, GC_remove_roots_inner): Don't
+       declare on Cygwin as on other win32.
+       * mark_rts.c (GC_is_tmp_root): Do declare on Cygwin when
+       !NO_DEBUGGING, as on other win32 targets.
+       * mark_rts.c (GC_cond_register_dynamic_libraries): Handle on
+       Cygwin as for other win32 targets.
+       * os_dep.c (GC_setpagesize): Handle on Cygwin as on other win32.
+       * os_dep.c (GC_get_main_stack_base): Don't declare on Cygwin, as
+       other win32.
+       * os_dep.c (GC_sysinfo): Declare on Cygwin, as other win32.
+       * os_dep.c (GC_win32_get_mem): Declare on Cygwin, as on other
+       Win32, but call GC_unix_get_mem instead of GlobalAlloc.
+       * os_dep.c (GC_win32_free_heap): Declare on Cygwin (as empty).
+       * ptr_chck.c (GC_is_visible): Register dynamic libraries on Cygwin
+       as on other win32 platforms.
+       * win32_threads.c (GC_get_next_stack): Define on Cygwin as well as
+       for dynamic loading targets.
+       * include/private/gc_priv.h (GC_INNER): Don't try to use
+       visibility on Cygwin which does not support it.
+       * include/private/gc_priv.h (struct roots): Don't declare r_next
+       member on Cygwin as on other windows hosts.
+       * include/private/gc_priv.h (LOG_RT_SIZE, RT_SIZE): Don't define
+       likewise.
+       * include/private/gc_priv.h (struct _GC_arrays): Do declare
+       _heap_bases[] member and don't declare _root_index likewise.
+       * include/private/gc_priv.h (GC_heap_bases): Do define likewise.
+       * include/private/gc_priv.h (_SYSTEM_INFO): Do forward-declare
+       likewise.
+       * include/private/gc_priv.h (GC_sysinfo): Do declare extern
+       likewise.
+       * include/private/gcconfig.h (GC_win32_get_mem, GET_MEM): Do
+       prototype on Cygwin as other win32 platforms.
+
+2010-03-13  Ivan Maidanski <ivmai@mail.ru>
+
+       * os_dep.c (GC_get_main_stack_base): Use pthread_getattr_np() and
+       pthread_attr_getstack() instead of GC_get_stack_base() (and check
+       returned stackaddr for NULL); output a warning on failure.
+
+2010-03-12  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_start_call_back): Replace the definition type to
+       GC_start_callback_proc.
+       * alloc.c (GC_set_start_callback, GC_get_start_callback): New
+       setter/getter function.
+       * alloc.c (GC_try_to_collect_inner): Call GC_notify_full_gc()
+       unconditionally (because GC_try_to_collect_inner always does full
+       GC).
+       * include/gc_mark.h (GC_start_callback_proc): New type.
+       * include/gc_mark.h (GC_set_start_callback,
+       GC_get_start_callback): New API function declaration.
+
+2010-03-12  Ivan Maidanski <ivmai@mail.ru>
+
+       * doc/README.macros (USE_GET_STACKBASE_FOR_MAIN): Document.
+       * os_dep.c (GC_get_main_stack_base): Recognize
+       USE_GET_STACKBASE_FOR_MAIN (only if THREADS and LINUX_STACKBOTTOM)
+       and use GC_get_stack_base() in this case.
+
+2010-03-05  Ivan Maidanski <ivmai@mail.ru> (really Burkhard Linke)
+
+       * os_dep.c (GC_get_stack_base): Add LOCK/UNLOCK() (since
+       GC_find_limit_with_bound() should be called with the lock held).
+       * backgraph.c (FOR_EACH_PRED): Fix a typo.
+
+2010-03-05  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_set_stop_func, GC_get_stop_func): Add
+       DCL_LOCK_STATE.
+       * finalize.c (GC_notify_or_invoke_finalizers): Ditto.
+       * gc_dlopen.c (disable_gc_for_dlopen): Ditto.
+       * gcj_mlc.c (maybe_finalize, GC_debug_gcj_malloc): Ditto.
+       * mark.c (GC_print_trace): Ditto.
+       * misc.c (GC_set_warn_proc, GC_get_warn_proc, GC_enable,
+       GC_disable, GC_new_free_list, GC_new_kind, GC_new_proc,
+       GC_set_oom_fn, GC_get_oom_fn, GC_set_finalizer_notifier,
+       GC_get_finalizer_notifier): Ditto.
+       * os_dep.c (GC_get_stack_base, GC_print_callers): Ditto.
+       * pthread_support.c (GC_is_thread_tsd_valid,
+       GC_wait_for_gc_completion, GC_init_parallel, GC_do_blocking_inner,
+       GC_call_with_gc_active, GC_unregister_my_thread, pthread_join,
+       pthread_detach, GC_register_my_thread, GC_inner_start_routine,
+       pthread_create): Ditto.
+       * reclaim.c (GC_print_all_errors): Ditto.
+       * win32_threads.c (GC_is_thread_tsd_valid, GC_register_my_thread,
+       GC_unregister_my_thread, GC_do_blocking_inner,
+       GC_call_with_gc_active, GC_lookup_pthread, GC_pthread_join,
+       GC_pthread_start_inner, GC_thread_exit_proc, GC_pthread_detach,
+       GC_init_parallel): Ditto.
+
+2010-02-25  Ivan Maidanski <ivmai@mail.ru> (really Bruce Mitchener)
+
+       * .cvsignore: New file.
+       * include/private/.cvsignore: Ditto.
+
+2010-02-24  Ivan Maidanski <ivmai@mail.ru>
+
+       * CMakeLists.txt: Change copyright header.
+       * tests/CMakeLists.txt: Ditto.
+
+2010-02-24  Ivan Maidanski <ivmai@mail.ru> (really Bruce Mitchener)
+
+       * doc/README.darwin: Update.
+
+2010-02-24  Ivan Maidanski <ivmai@mail.ru> (really Bruce Mitchener)
+
+       * CMakeLists.txt: Adjust INCLUDE_DIRECTORIES and SRC (to make it
+       usable on Mac OS X).
+       * doc/README.cmake: Update.
+
+2010-02-24  Ivan Maidanski <ivmai@mail.ru> (really Jack Andrews)
+
+       * CMakeLists.txt: New file (adding CMake support).
+       * tests/CMakeLists.txt: Ditto.
+       * doc/README.cmake: Ditto.
+
+2010-02-19  Ivan Maidanski <ivmai@mail.ru> (really Bruce Mitchener)
+
+       * configure.ac (darwin): Don't define HAS_PPC_THREAD_STATE...
+       macros.
+       * include/private/gc_priv.h (THREAD_FLD): Recognize
+       __DARWIN_UNIX03 instead of HAS_PPC_THREAD_STATE... macros.
+       * configure: Regenerate.
+       * include/private/config.h.in: Ditto.
+
+2010-02-15  Ivan Maidanski <ivmai@mail.ru> (really Alexandr Shadchin)
+
+       * pthread_support.c: Include <sys/param.h> and <sys/sysctl.h> for
+       OpenBSD.
+       * pthread_support.c (get_ncpu): Define also for Darwin, NetBSD and
+       OpenBSD.
+       * pthread_support.c (GC_thr_init): Use get_ncpu() for Darwin,
+       NetBSD and OpenBSD.
+
+2010-02-04  Ivan Maidanski <ivmai@mail.ru>
+
+       * mallocx.c (GC_generic_malloc_many, GC_malloc_many): Define even
+       if THREADS is undefined.
+       * include/gc.h (GC_malloc_many): Update the comment.
+
+2010-02-03  Ivan Maidanski <ivmai@mail.ru>
+
+       * ChangeLog: Fix some typos.
+
+2010-01-29  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile.in: Regenerate (by autoreconf -vif using
+       libtool-2.2.6b, automake-1.11.1, autoconf-2.65).
+       * aclocal.m4: Ditto.
+       * compile: Ditto.
+       * config.guess: Ditto.
+       * config.sub: Ditto.
+       * configure: Ditto.
+       * depcomp: Ditto.
+       * install-sh: Ditto.
+       * ltmain.sh: Ditto.
+       * missing: Ditto.
+       * mkinstalldirs: Ditto.
+
+2010-01-15  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc_cpp.h (GC_PLACEMENT_DELETE): Define for Embarcadero
+       (formerly known as Borland) C++ compiler v6.21+.
+       * include/gc_cpp.h (GC_NO_OPERATOR_NEW_ARRAY): Define for ancient
+       VC++ compilers.
+
+2009-12-18  Ivan Maidanski <ivmai@mail.ru>
+
+       * win32_threads.c (GC_register_my_thread_inner,
+       GC_pthread_start_inner): Undo the previous commit changes for
+       the thread flags and DETACHED state (since the state is only
+       tested in GC_thread_exit_proc).
+
+2009-12-18  Ivan Maidanski <ivmai@mail.ru> (with input from
+                                           Jean-Claude Beaudoin)
+
+       * include/gc.h (GC_unregister_my_thread): Fix a typo; update the
+       comment.
+       * pthread_support.c (GC_delete_thread): Allow to delete the main
+       thread (don't call GC_INTERNAL_FREE for it); update the comment.
+       * win32_threads.c (GC_delete_thread): Ditto.
+       * pthread_support.c (GC_unregister_my_thread): Add an assertion
+       for FINISHED flag is unset.
+       * tests/test.c (check_heap_stats): Test the main thread
+       unregistering (only if THREADS).
+       * win32_threads.c (GC_register_my_thread_inner): Set flags to
+       DETACHED (only if GC_PTHREADS).
+       * win32_threads.c (GC_unregister_my_thread): Add FIXME (for
+       GC_wait_for_gc_completion).
+       * win32_threads.c (GC_pthread_start_inner): Clear flags detached
+       state if needed; set pthread_id and flags while holding the lock.
+
+2009-12-17  Ivan Maidanski <ivmai@mail.ru> (with input from Andy Wingo)
+
+       * include/private/gc_priv.h (SIG_SUSPEND): Don't define for
+       OpenBSD and Darwin.
+
+2009-12-17  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc.h: Recognize _M_X64 (as an alias for _AMD64_).
+
+2009-12-10  Hans-J. Boehm <Hans.Boehm@hp.com>
+
+       * test.c (main, WinMain): Consistently don't invoke
+       GC_enable_incremental() if MAKE_BACKGRAPH is defined, but
+       do invoke it even if parallel marking is enabled.
+
+2009-12-08  Ivan Maidanski <ivmai@mail.ru>
+
+       * tests/test.c (reverse_test): Comment out a check for MSWIN32
+       (when determing BIG value) assuming outdated win32S.
+       * tests/test.c (reverse_test): Rename to reverse_test_inner;
+       change the declaration (to be of GC_fn_type); call itself thru
+       GC_call_with_gc_active() if the argument is zero.
+       * tests/test.c (reverse_test): New function added calling
+       reverse_test_inner thru GC_do_blocking (to test GC_do_blocking and
+       GC_call_with_gc_active).
+
+2009-12-08  Ivan Maidanski <ivmai@mail.ru> (with input from Marcos Dione)
+
+       * doc/README.macros (IGNORE_DYNAMIC_LOADING, PLATFORM_ANDROID):
+       Document.
+       * dyn_load.c: Don't include <elf.h> if PLATFORM_ANDROID.
+       * dyn_load.c: Include bionic <linker.h> (instead of <link.h>) if
+       PLATFORM_ANDROID.
+       * include/private/gcconfig.h (LINUX): Define also if
+       PLATFORM_ANDROID (for the windows-based toolkit).
+       * include/private/gcconfig.h (SEARCH_FOR_DATA_START): Explicitly
+       define for Android/x86 platform.
+       * include/private/gcconfig.h (IGNORE_DYNAMIC_LOADING): Recognize
+       new macro (undefine DYNAMIC_LOADING in this case).
+       * include/private/gcconfig.h (CANCEL_SAFE): Don't define if
+       PLATFORM_ANDROID.
+       * include/private/gcconfig.h (IF_CANCEL): Fix definition for the
+       explicitly defined CANCEL_SAFE.
+
+2009-12-08  Ivan Maidanski <ivmai@mail.ru>
+
+       * allchblk.c (GC_allochblk_nth): Don't call GC_remove_protection()
+       if GC_DISABLE_INCREMENTAL.
+       * reclaim.c (GC_reclaim_generic): Ditto.
+       * checksums.c (GC_page_was_ever_dirty): Add prototype.
+       * include/private/gc_locks.h (GC_mark_lock_holder): Don't declare
+       unless PARALLEL_MARK.
+       * include/private/gc_priv.h (GC_dirty_maintained,
+       GC_page_was_dirty, GC_remove_protection, GC_dirty_init): Don't
+       declare if GC_DISABLE_INCREMENTAL.
+       * include/private/gc_priv.h (GC_print_finalization_stats): Don't
+       declare if SMALL_CONFIG.
+       * include/private/gcconfig.h (CHECKSUMS): Explicitly undefine if
+       GC_DISABLE_INCREMENTAL (since nothing to check).
+       * include/private/gcconfig.h (DEFAULT_VDB): Don't define if
+       GC_DISABLE_INCREMENTAL.
+       * os_dep.c (GC_dirty_maintained): Ditto.
+       * mark.c (GC_initiate_gc): Don't call GC_read_dirty() if
+       GC_DISABLE_INCREMENTAL.
+       * os_dep.c (GC_gww_page_was_ever_dirty, GC_page_was_ever_dirty):
+       Uncomment; define only if CHECKSUMS.
+
+2009-12-08  Ivan Maidanski <ivmai@mail.ru>
+
+       * darwin_stop_world.c (GC_push_all_stacks): Fix a bug (call
+       GC_push_all_stack() instead of GC_push_all_stack_frames()).
+       * include/private/gc_priv.h (GC_push_all_stack_frames,
+       GC_push_all_register_frames): Rename to
+       GC_push_all_stack_sections and GC_push_all_register_sections,
+       respectively.
+       * mark_rts.c (GC_push_all_stack_frames,
+       GC_push_all_register_frames, GC_push_all_stack_part_eager_frames,
+       GC_push_current_stack): Ditto.
+       * pthread_stop_world.c (GC_push_all_stacks): Ditto.
+       * win32_threads.c (GC_push_stack_for): Ditto.
+       * misc.c (GC_call_with_gc_active): Rename "frame" local variable
+       to "stacksect".
+       * pthread_support.c (GC_call_with_gc_active): Ditto.
+       * win32_threads.c (GC_call_with_gc_active): Ditto.
+       * pthread_support.c (GC_call_with_gc_active): Update FIXME for
+       Darwin.
+       * win32_threads.c (GC_Thread_Rep): Update the comment for
+       traced_stack_sect.
+
+2009-12-08  Ivan Maidanski <ivmai@mail.ru> (really mostly Hans Boehm)
+
+       * darwin_stop_world.c (GC_push_all_stacks): Rename
+       activation_frame to traced_stack_sect.
+       * include/private/gc_priv.h (GC_push_all_stack_frames,
+       GC_push_all_register_frames): Ditto.
+       * include/private/pthread_support.h (GC_Thread_Rep): Ditto.
+       * mark_rts.c (GC_push_all_register_frames,
+       GC_push_all_stack_frames, GC_push_all_stack_part_eager_frames,
+       GC_push_current_stack): Ditto.
+       * pthread_stop_world.c (GC_push_all_stacks): Ditto.
+       * pthread_support.c (GC_call_with_gc_active): Ditto.
+       * win32_threads.c (GC_Thread_Rep, GC_call_with_gc_active,
+       GC_push_stack_for): Ditto.
+       * include/private/gc_priv.h (GC_activation_frame_s): Rename to
+       GC_traced_stack_sect_s.
+       * include/private/gc_priv.h (GC_activation_frame): Rename to
+       GC_traced_stack_sect.
+       * misc.c (GC_activation_frame, GC_call_with_gc_active): Ditto.
+       * doc/README.macros (UNICODE): Document.
+
+2009-12-07  Ivan Maidanski <ivmai@mail.ru>
+
+       * doc/README.macros (GC_READ_ENV_FILE): Document (new macro).
+       * include/private/gc_priv.h (GETENV): Recognize GC_READ_ENV_FILE;
+       declare and use GC_envfile_getenv().
+       * misc.c (GC_envfile_content, GC_envfile_length): New static
+       variable (only if GC_READ_ENV_FILE).
+       * misc.c (GC_ENVFILE_MAXLEN): New macro (used in GC_envfile_init).
+       * misc.c (GC_envfile_init, GC_envfile_getenv): New function (only
+       if GC_READ_ENV_FILE).
+       * misc.c (GC_init): Call GC_envfile_init() (before using GETENV)
+       if GC_READ_ENV_FILE.
+       * misc.c (GC_init): Move GC_setpagesize() and GC_init_win32()
+       calls to be just before GC_envfile_init() one (since the latter
+       uses GET_MEM).
+       * misc.c (GC_abort): use ExitProcess() (instead of DebugBreak) for
+       WinCE if NO_DEBUGGING; add a comment for DebugBreak() (for WinCE).
+       * mark_rts.c (GC_add_roots_inner): Remove redundant trailing '\n'
+       from the ABORT message.
+       * misc.c (GC_init): Ditto.
+       * os_dep.c (GC_get_main_stack_base, GC_register_data_segments):
+       Ditto.
+       * pthread_stop_world.c (GC_push_all_stacks): Ditto.
+       * pthread_support.c (GC_init_real_syms, start_mark_threads):
+       Ditto.
+
+2009-12-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * win32_threads.c (GC_get_next_stack): Don't define for Cygwin
+       (since unused for now).
+
+2009-12-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * dyn_load.c (HAVE_REGISTER_MAIN_STATIC_DATA): Don't define unless
+       GC_register_main_static_data() is defined.
+       * dyn_load.c (GC_register_dynamic_libraries): Define only if used
+       (if DYNAMIC_LOADING or PCR or Win32/CE).
+       * dyn_load.c (GC_register_main_static_data): Define the default
+       one only if DYNAMIC_LOADING.
+       * include/private/gc_priv.h (GC_register_dynamic_libraries):
+       Declare only if used (to prevent compiler warning).
+
+2009-12-04  Ivan Maidanski <ivmai@mail.ru>
+
+       * mark_rts.c (GC_approx_sp): Add a comment (for GCC).
+
+2009-12-04  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc_version.h, configure.ac, doc/README: Change to
+       version 7.2alpha5.
+       * configure: Regenerate.
+
+[7.2alpha4]
+
+2009-12-01  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc_version.h, configure.ac, doc/README: Change to
+       version 7.2alpha4.
+       * configure: Regenerate.
+
+2009-11-21  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure.ac (AC_CONFIG_COMMANDS): Quote srcdir value.
+       * configure: Regenerate.
+
+2009-11-18  Ivan Maidanski <ivmai@mail.ru> (really mostly Zoltan Varga)
+
+       * include/gc.h (GC_get_suspend_signal): New function declaration.
+       * misc.c (GC_get_suspend_signal): New API function (only if
+       THREADS).
+
+2009-11-16  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (min_bytes_allocd): Multiply GC_free_space_divisor by
+       two if GC_incremental (instead of TRUE_INCREMENTAL).
+
+2009-11-10  Ivan Maidanski <ivmai@mail.ru>
+
+       * sparc_mach_dep.S (GC_push_regs): Remove the reference.
+
+2009-11-09  Ivan Maidanski <ivmai@mail.ru>
+
+       * os_dep.c (SIZE_T, PULONG_PTR): Remove.
+       * os_dep.c (ULONG_PTR): Replace with GC_ULONG_PTR (defined as GC
+       "word"); add the comment.
+       * os_dep.c (GetWriteWatch_type, detect_GetWriteWatch,
+       GC_gww_read_dirty): Prefix ULONG_PTR with "GC_".
+
+2009-11-07  Ivan Maidanski <ivmai@mail.ru>
+
+       * win32_threads.c (THREAD_TABLE_SZ): Change back to a power-of-two
+       const value (for speed).
+       * win32_threads.c (THREAD_TABLE_INDEX): New macro.
+       * win32_threads.c (GC_new_thread, GC_lookup_thread_inner,
+       GC_delete_gc_thread, GC_delete_thread, GC_lookup_pthread): Use
+       THREAD_TABLE_INDEX instead of THREAD_TABLE_SZ.
+       * win32_threads.c (PTHREAD_MAP_HASH): Rename to PTHREAD_MAP_INDEX.
+
+2009-11-07  Ivan Maidanski <ivmai@mail.ru>
+
+       * win32_threads.c (THREAD_TABLE_SZ): Make the const value prime.
+
+2009-11-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * backgraph.c: Remove apostrophe char from "#error".
+
+2009-11-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * doc/README.macros (GC_DISABLE_INCREMENTAL): Document.
+       * include/private/gcconfig.h (GC_DISABLE_INCREMENTAL): Recognize
+       new macro; implicitly define it if SMALL_CONFIG.
+       * alloc.c (GC_incremental, GC_timeout_stop_func): Check for
+       GC_DISABLE_INCREMENTAL instead of SMALL_CONFIG.
+       * include/private/gc_priv.h (GC_incremental, TRUE_INCREMENTAL,
+       GC_push_conditional): Ditto.
+       * mark.c (GC_push_next_marked_dirty, GC_push_selected,
+       GC_push_conditional, GC_block_was_dirty): Ditto.
+       * misc.c (GC_enable_incremental): Ditto.
+       * misc.c (GC_init): Ditto (for "GC_PAUSE_TIME_TARGET" and
+       "GC_ENABLE_INCREMENTAL" environment variables).
+       * misc.c (GC_enable_incremental): Reformat the code.
+
+2009-11-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * dyn_load.c (WIN32_LEAN_AND_MEAN): Guard with ifndef.
+       * misc.c (WIN32_LEAN_AND_MEAN): Ditto.
+       * os_dep.c (WIN32_LEAN_AND_MEAN): Ditto.
+       * allchblk.c (GC_allochblk_nth): Fix a minor typo (don't/doesn't)
+       in a comment.
+       * backgraph.c: Ditto.
+       * dyn_load.c (GC_register_dynamic_libraries): Ditto.
+       * extra/threadlibs.c (main): Ditto.
+       * pthread_support.c (pthread_join): Ditto.
+       * tests/test.c (main): Ditto.
+
+2009-11-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * mach_dep.c (GC_push_regs): Remove STATIC (just to catch
+       a duplicate symbol definition linker error).
+       * misc.c (GC_clear_stack_inner): Ditto.
+       * sparc_mach_dep.S (GC_push_regs): Comment out the reference.
+       * sparc_mach_dep.S: Remove trailing spaces at EOLn; remove
+       multiple trailing blank lines.
+
+2009-11-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gc_priv.h (GC_write_disabled): New variable
+       declaration (only if GC_ASSERTIONS and Win32 threads).
+       * misc.c (GC_write): Add assertion for GC_write_disabled value is
+       not on (only if THREADS).
+       * win32_threads.c (GC_write_disabled): New variable (only if
+       GC_ASSERTIONS and not Cygwin).
+       * win32_threads.c (GC_stop_world): Set and clear GC_write_disabled
+       (while holding GC_write_cs).
+
+2009-11-05  Ivan Maidanski <ivmai@mail.ru>
+
+       * win32_threads.c (GC_please_stop): If DllMain-based thread
+       registration is not compiled in then define GC_please_stop as
+       a non-volatile variable for assertion only.
+       * win32_threads.c (GC_stop_world): Set and clear only if defined.
+       * win32_threads.c (GC_stop_world): Add the comment for GC_printf()
+       usage (while holding GC_write_cs).
+       * win32_threads.c (GC_delete_gc_thread): Ditto.
+       * os_dep.c (GC_remove_protection): Ditto.
+
+2009-11-05  Ivan Maidanski <ivmai@mail.ru>
+
+       * pthread_support.c (GC_inner_start_routine): Join 3 sequential
+       GC_printf() calls into a single one (for DEBUG_THREADS).
+
+2009-11-05  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gc_priv.h (GC_total_stacksize): New variable
+       declaration (only if THREADS).
+       * alloc.c (GC_total_stacksize): New variable (only if THREADS).
+       * alloc.c (min_bytes_allocd): Calculate stack_size using
+       GC_stackbottom only in the single-threaded case; otherwise use
+       GC_total_stacksize; print GC_total_stacksize value if
+       DEBUG_THREADS.
+       * darwin_stop_world.c (GC_push_all_stacks): Use "%p" printf type
+       specifier for lo/hi values (instead of "%lx").
+       * darwin_stop_world.c (GC_push_all_stacks): Use
+       GC_push_all_stack_frames() instead of GC_push_all_stack().
+       * darwin_stop_world.c (GC_push_all_stacks): Recalculate
+       GC_total_stacksize value.
+       * pthread_stop_world.c (GC_push_all_stacks): Ditto.
+       * win32_threads.c (GC_push_all_stacks): Ditto.
+       * win32_threads.c (GC_push_stack_for): Pass "me" argument; return
+       stack size; don't check for non-zero value of thread->stack_base.
+       * win32_threads.c (GC_push_all_stacks): Don't call
+       GC_push_stack_for() and don't check for "t->id == me" if
+       thread->stack_base is zero.
+
+2009-11-05  Ivan Maidanski <ivmai@mail.ru>
+
+       * dyn_load.c (GC_dump_meminfo): Prefix "%lx" printf type specifier
+       with "0x".
+       * os_dep.c (PROTECT): Ditto.
+       * win32_threads.c (GC_mark_thread_local_free_lists): Cast p->id to
+       int (to match printf type specifier).
+
+2009-11-05  Ivan Maidanski <ivmai@mail.ru>
+
+       * tests/test.c (check_heap_stats): Take into account the unmapped
+       memory size when checking for "Unexpected heap growth"; remove
+       FIXME.
+
+2009-11-03  Hans Boehm <Hans.Boehm@hp.com>
+
+       * alloc.c: Revert last change.
+
+2009-11-02  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gcconfig.h (STACKBOTTOM): Add a presence check
+       for eCos/NOSYS.
+       * misc.c (GC_write): Comment out _Jv_diag_write() call (since no
+       longer defined in GCJ).
+
+2009-11-02  Ivan Maidanski <ivmai@mail.ru>
+
+       * os_dep.c (brk): Rename to ecos_gc_brk.
+
+2009-11-01  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (min_bytes_allocd): Use GC_stackbottom value to compute
+       stack_size even if THREADS.
+       * doc/README.macros (DEBUG_THREADS): Document.
+       * pthread_support.c (DEBUG_THREADS): Remove the commented out
+       definition.
+       * win32_threads.c (DEBUG_WIN32_THREADS): Remove duplicate
+       definition.
+       * win32_threads.c: Include errno.h (except for WinCE).
+       * win32_threads.c (GC_win32_start_inner): Copy "start" and "param"
+       to local variables, and free "arg" parameter before "start"
+       invocation.
+       * win32_threads.c (GC_beginthreadex): Set errno to EAGAIN on error
+       (instead of calling SetLastError(ERROR_NOT_ENOUGH_MEMORY)).
+       * win32_threads.c (GC_beginthreadex): Return 0 on error (instead
+       of -1).
+
+2009-10-23  Ivan Maidanski <ivmai@mail.ru>
+
+       * darwin_stop_world.c (GC_darwin_register_mach_handler_thread):
+       Use GC_INNER for the function definition.
+       * include/private/darwin_stop_world.h
+       (GC_darwin_register_mach_handler_thread): Remove the prototype.
+       * include/private/darwin_stop_world.h: Add copyright header.
+       * os_dep.c (GC_darwin_register_mach_handler_thread): Use GC_INNER
+       for the function prototype.
+       * include/private/gc_priv.h (NDEBUG): Explicitly define if
+       NO_DEBUGGING and not GC_ASSERTIONS (before the standard headers
+       inclusion).
+
+2009-10-22  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gcconfig.h: Move DebugBreak() workaround (for
+       x86mingw32ce toolchain) to gc_priv.h (after windows.h inclusion).
+
+2009-10-22  Ivan Maidanski <ivmai@mail.ru>
+
+       * allchblk.c (GC_unmap_old, GC_merge_unmapped, GC_allochblk,
+       GC_freehblk): Use GC_INNER for the function definition.
+       * alloc.c (GC_never_stop_func, GC_should_collect,
+       GC_try_to_collect_inner, GC_collect_a_little_inner,
+       GC_set_fl_marks, GC_add_to_our_memory, GC_add_to_heap,
+       GC_expand_hp_inner, GC_collect_or_expand, GC_allocobj): Ditto.
+       * backgraph.c (GC_build_back_graph, GC_traverse_back_graph):
+       Ditto.
+       * blacklst.c (GC_default_print_heap_obj_proc, GC_bl_init,
+       GC_promote_black_lists, GC_unpromote_black_lists,
+       GC_add_to_black_list_normal, GC_add_to_black_list_stack,
+       GC_is_black_listed): Ditto.
+       * darwin_stop_world.c (GC_push_all_stacks, GC_push_all_stacks,
+       GC_stop_init, GC_stop_world, GC_start_world): Ditto.
+       * dbg_mlc.c (GC_has_other_debug_info, GC_store_back_pointer,
+       GC_marked_for_finalization, GC_generate_random_backtrace_no_gc,
+       GC_store_debug_info, GC_start_debugging,
+       GC_debug_generic_malloc_inner,
+       GC_debug_generic_malloc_inner_ignore_off_page,
+       GC_debug_malloc_uncollectable, GC_debug_free_inner): Ditto.
+       * dyn_load.c (GC_register_dynamic_libraries,
+       GC_register_main_static_data, GC_init_dyld): Ditto.
+       * finalize.c (GC_push_finalizer_structures, GC_finalize,
+       GC_notify_or_invoke_finalizers, GC_print_finalization_stats):
+       Ditto.
+       * gcj_mlc.c (GC_core_gcj_malloc): Ditto.
+       * headers.c (GC_find_header, GC_header_cache_miss,
+       GC_scratch_alloc, GC_init_headers, GC_install_header,
+       GC_install_counts, GC_remove_header, GC_remove_counts,
+       GC_next_used_block, GC_prev_block): Ditto.
+       * mach_dep.c (GC_with_callee_saves_pushed): Ditto.
+       * malloc.c (GC_collect_or_expand, GC_alloc_large,
+       GC_generic_malloc_inner, GC_generic_malloc_inner_ignore_off_page,
+       GC_core_malloc_atomic, GC_core_malloc, GC_free_inner): Ditto.
+       * mallocx.c (GC_generic_malloc_ignore_off_page): Ditto.
+       * mark.c (GC_collection_in_progress, GC_clear_hdr_marks,
+       GC_set_hdr_marks, GC_set_mark_bit, GC_clear_mark_bit,
+       GC_clear_marks, GC_initiate_gc, GC_mark_some,
+       GC_mark_stack_empty, GC_invalidate_mark_state,
+       GC_signal_mark_stack_overflow, GC_mark_from, GC_help_marker,
+       GC_mark_init, GC_push_all, GC_push_conditional,
+       GC_mark_and_push_stack, GC_push_all_eager, GC_push_all_stack):
+       Ditto.
+       * mark_rts.c (GC_is_static_root, GC_roots_present, GC_approx_sp,
+       GC_exclude_static_roots_inner, GC_push_all_register_frames,
+       GC_push_all_stack_frames, GC_cond_register_dynamic_libraries,
+       GC_push_roots): Ditto.
+       * misc.c (GC_extend_size_map, GC_clear_stack, GC_err_write):
+       Ditto.
+       * new_hblk.c (GC_build_fl, GC_new_hblk): Ditto.
+       * obj_map.c (GC_register_displacement_inner, GC_add_map_entry,
+       GC_initialize_offsets): Ditto.
+       * os_dep.c (GC_get_maps, GC_parse_map_entry, GC_text_mapping,
+       GC_init_linux_data_start, GC_init_netbsd_elf, GC_setpagesize,
+       GC_set_and_save_fault_handler, GC_setup_temporary_fault_handler,
+       GC_reset_fault_handler, GC_get_register_stack_base, GC_init_win32,
+       GC_add_current_malloc_heap, GC_is_heap_base, GC_unmap, GC_remap,
+       GC_unmap_gap, GC_push_all_stacks, GC_gww_dirty_init,
+       GC_dirty_init, GC_read_dirty, GC_page_was_dirty,
+       GC_page_was_ever_dirty, GC_remove_protection,
+       GC_write_fault_handler, GC_mprotect_stop, GC_mprotect_resume,
+       GC_save_callers, GC_print_callers): Ditto.
+       * pthread_stop_world.c (GC_push_all_stacks, GC_stop_world,
+       GC_start_world, GC_stop_init): Ditto.
+       * pthread_support.c (GC_mark_thread_local_free_lists,
+       GC_lookup_thread, GC_reset_finalizer_nested,
+       GC_check_finalizer_nested, GC_segment_is_thread_stack,
+       GC_greatest_stack_base_below, GC_thr_init, GC_init_parallel,
+       GC_do_blocking_inner, GC_lock, GC_acquire_mark_lock,
+       GC_release_mark_lock, GC_wait_for_reclaim, GC_notify_all_builder,
+       GC_wait_marker, GC_notify_all_marker): Ditto.
+       * reclaim.c (GC_print_all_errors, GC_block_empty,
+       GC_reclaim_generic, GC_start_reclaim, GC_continue_reclaim,
+       GC_reclaim_all): Ditto.
+       * thread_local_alloc.c (GC_init_thread_local,
+       GC_destroy_thread_local, GC_mark_thread_local_fls_for): Ditto.
+       * win32_threads.c (GC_reset_finalizer_nested,
+       GC_check_finalizer_nested, GC_do_blocking_inner, GC_stop_world,
+       GC_start_world, GC_push_all_stacks, GC_get_next_stack,
+       GC_acquire_mark_lock, GC_release_mark_lock, GC_wait_for_reclaim,
+       GC_notify_all_builder, GC_wait_marker, GC_notify_all_marker,
+       GC_thr_init, GC_init_parallel, GC_lock,
+       GC_mark_thread_local_free_lists): Ditto.
+       * alloc.c (GC_add_current_malloc_heap, GC_build_back_graph,
+       GC_traverse_back_graph): Use GC_INNER for the function prototype.
+       * darwin_stop_world.c (GC_mprotect_stop, GC_mprotect_resume):
+       Ditto.
+       * dbg_mlc.c (GC_default_print_heap_obj_proc): Ditto.
+       * dyn_load.c (GC_parse_map_entry, GC_get_maps,
+       GC_segment_is_thread_stack, GC_roots_present, GC_is_heap_base,
+       GC_get_next_stack): Ditto.
+       * finalize.c (GC_reset_finalizer_nested,
+       GC_check_finalizer_nested): Ditto.
+       * gcj_mlc.c (GC_start_debugging): Ditto.
+       * include/private/dbg_mlc.h (GC_save_callers, GC_print_callers,
+       GC_has_other_debug_info, GC_store_debug_info): Ditto.
+       * include/private/gc_hdrs.h (GC_header_cache_miss): Ditto.
+       * include/private/gc_locks.h (GC_lock): Ditto.
+       * include/private/gc_pmark.h (GC_signal_mark_stack_overflow,
+       GC_mark_from): Ditto.
+       * include/private/pthread_support.h (GC_lookup_thread,
+       GC_stop_init): Ditto.
+       * include/private/thread_local_alloc.h (GC_init_thread_local,
+       GC_destroy_thread_local, GC_mark_thread_local_fls_for): Ditto.
+       * malloc.c (GC_extend_size_map, GC_text_mapping): Ditto.
+       * mark.c (GC_page_was_ever_dirty): Ditto.
+       * mark_rts.c (GC_mark_thread_local_free_lists): Ditto.
+       * misc.c (GC_register_main_static_data, GC_init_win32,
+       GC_setpagesize, GC_init_linux_data_start,
+       GC_set_and_save_fault_handler, GC_init_dyld, GC_init_netbsd_elf,
+       GC_do_blocking_inner): Ditto.
+       * os_dep.c (GC_greatest_stack_base_below): Ditto.
+       * win32_threads.c (GC_write_fault_handler, GC_gww_dirty_init):
+       Ditto.
+       * include/private/gc_priv.h: Ditto (for most prototypes).
+       * include/private/gc_priv.h (GC_INNER): Update the comment.
+       * doc/README.macros (GC_DLL): Update.
+
+2009-10-22  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_collection_in_progress): Move the prototype to
+       gc_priv.h.
+       * gc_dlopen.c (GC_collection_in_progress): Ditto.
+       * pthread_support.c (GC_collection_in_progress): Ditto.
+       * misc.c (GC_init_parallel): Ditto.
+       * pthread_support.c (GC_init_parallel): Ditto.
+       * win32_threads.c (GC_init_parallel): Ditto.
+       * darwin_stop_world.c (GC_thr_init): Ditto.
+       * misc.c (GC_thr_init): Ditto.
+       * pthread_stop_world.c (GC_thr_init): Ditto.
+       * pthread_support.c (GC_thr_init): Ditto.
+       * blacklst.c (GC_clear_bl, GC_copy_bl,
+       GC_number_stack_black_listed): Make STATIC.
+       * dbg_mlc.c (GC_print_obj, GC_make_closure,
+       GC_debug_invoke_finalizer): Ditto.
+       * malloc.c (GC_alloc_large_and_clear): Ditto.
+       * mark.c (GC_push_selected, GC_push_marked1, GC_push_marked2,
+       GC_push_marked4, GC_push_marked, GC_push_next_marked,
+       GC_push_next_marked_dirty, GC_push_next_marked_uncollectable):
+       Ditto.
+       * misc.c (GC_clear_stack_inner): Ditto.
+       * os_dep.c (GC_repeat_read, GC_default_push_other_roots): Ditto.
+       * darwin_stop_world.c (FindTopOfStack): Make static; define only
+       if not DARWIN_DONT_PARSE_STACK.
+       * dbg_mlc.c (GC_debug_free_inner): Define only if DBG_HDRS_ALL.
+       * dyn_load.c (GC_repeat_read): Remove unused prototype.
+       * include/private/gc_pmark.h (GC_find_start): Ditto.
+       * misc.c (GC_read, GC_register_finalizer_no_order): Ditto.
+       * dyn_load.c (GC_segment_is_thread_stack): Add prototype (only if
+       THREADS).
+       * dyn_load.c (GC_register_main_static_data): Define only if
+       DYNAMIC_LOADING.
+       * finalize.c (GC_enqueue_all_finalizers): Remove unnecessary tail
+       "return" statement.
+       * gc_dlopen.c (GC_SOLARIS_THREADS): Don't recognize (since implies
+       GC_PTHREADS).
+       * include/gc.h: Fix a typo.
+       * include/gc_inline.h (GC_ASSERT): Define (if not defined) since
+       the header is public.
+       * include/gc_inline.h (GC_generic_malloc_many): New public
+       function declaration.
+       * mallocx.c (GC_generic_malloc_many): Make public.
+       * include/private/gc_priv.h (GC_INNER): Use visibility attribute
+       (if available).
+       * include/private/gc_priv.h (GC_EXTERN): Define using GC_INNER.
+       * include/private/gc_priv.h: Include atomic_ops.h if THREADS and
+       MPROTECT_VDB.
+       * os_dep.c: Don't include atomic_ops.h
+       * win32_threads.c: Ditto.
+       * include/private/gc_priv.h (GC_push_selected, GC_push_regs,
+       GC_push_marked, GC_number_stack_black_listed,
+       GC_alloc_large_and_clear, GC_reclaim_or_delete_all,
+       GC_generic_malloc_many, GC_make_closure,
+       GC_debug_invoke_finalizer, GC_print_obj, GC_page_was_ever_dirty):
+       Remove the prototype.
+       * mark.c (GC_page_was_ever_dirty): Add prototype (only if
+       PROC_VDB).
+       * include/private/gc_priv.h (GC_push_next_marked_dirty,
+       GC_push_next_marked, GC_push_next_marked_uncollectable): Move
+       the prototype to mark.c.
+       * include/private/gc_priv.h (GC_is_static_root): Declare only if
+       not THREADS.
+       * include/private/gc_priv.h (GC_free_inner): Declare only if
+       THREADS.
+       * include/private/gc_priv.h (GC_debug_free_inner): Declare only if
+       THREADS and DBG_HDRS_ALL.
+       * include/private/gc_priv.h (GC_markers): Declare GC_markers only
+       if PARALLEL_MARK.
+       * include/private/gc_priv.h (GC_register_main_static_data): Move
+       the prototype to misc.c.
+       * mach_dep.c (GC_push_regs): Make STATIC; define only along with
+       HAVE_PUSH_REGS definition.
+       * mach_dep.c (GC_clear_stack_inner): Replace K&R-style function
+       definition with the ANSI C one.
+       * mark.c (GC_started_thread_while_stopped): Declared only if not
+       GNU C.
+       * win32_threads.c (GC_started_thread_while_stopped): Don't define
+       if GNU C.
+       * mark.c (GC_mark_from): Avoid unbalanced brackets in
+       #if-#else-#endif blocks.
+       * mark_rts.c (GC_is_static_root): Define only if not THREADS.
+       * os_dep.c (GC_get_stack_base): Make public (for OpenBSD).
+       * os_dep.c (GC_page_was_ever_dirty): Comment out the function
+       except for PROC_VDB.
+       * tests/test.c (main): Don't reference GC_print_obj,
+       GC_make_closure, GC_debug_invoke_finalizer,
+       GC_page_was_ever_dirty, GC_is_fresh (in GC_noop).
+       * thread_local_alloc.c: Don't include "gc_inline.h".
+       * win32_threads.c (GC_write_fault_handler): Declare only if
+       MPROTECT_VDB.
+
+2009-10-21  Ivan Maidanski <ivmai@mail.ru>
+
+       * allchblk.c (DEBUG): Remove macro (since unused).
+       * allchblk.c: Include private/gc_priv.h before other includes and
+       definitions.
+       * alloc.c: Ditto.
+       * gc_dlopen.c: Ditto.
+       * headers.c: Ditto.
+       * mallocx.c: Ditto.
+       * mark_rts.c: Ditto.
+       * new_hblk.c: Ditto.
+       * reclaim.c: Ditto.
+       * mark.c: Include private/gc_pmark.h before other includes.
+       * misc.c: Ditto.
+       * dyn_load.c (_GNU_SOURCE): Move the definition to gc_priv.h.
+       * pthread_support.c (_USING_POSIX4A_DRAFT10): Ditto.
+       * pthread_support.c (_POSIX4A_DRAFT10_SOURCE): Remove (since
+       already defined in gc_config_macros.h).
+       * dyn_load.c (GC_init_dyld): Remove parameter cast for
+       _dyld_register_func_for_add_image() and
+       _dyld_register_func_for_remove_image(); add the comment about
+       possible warnings; add FIXME for the deprecated
+       _dyld_bind_fully_image_containing_address().
+       * include/private/gc_priv.h: Include gc.h before the standard
+       headers inclusion.
+       * tests/test.c: Ditto.
+       * include/private/gcconfig.h (DebugBreak): Update the comment.
+       * typd_mlc.c (ED_INITIAL_SIZE): Remove ';'.
+       * alloc.c: Reformat the code (partly adjust indentation).
+       * backgraph.c: Ditto.
+       * blacklst.c: Ditto.
+       * checksums.c: Ditto.
+       * finalize.c: Ditto.
+       * gcj_mlc.c: Ditto.
+       * mach_dep.c: Ditto.
+       * mark_rts.c: Ditto.
+       * obj_map.c: Ditto.
+       * os_dep.c: Ditto.
+       * ptr_chck.c: Ditto.
+       * stubborn.c: Ditto.
+       * thread_local_alloc.c: Ditto.
+       * typd_mlc.c: Ditto.
+
+2009-10-20  Ivan Maidanski <ivmai@mail.ru> (really mostly OpenBSD contributors)
+
+       * configure.ac (openbsd): Define GC_OPENBSD_THREADS.
+       * configure.ac: Add AM_CONDITIONAL(OPENBSD_THREADS).
+       * configure.ac: Add sparc-openbsd case.
+       * doc/README.macros (GC_NETBSD_THREADS, GC_OPENBSD_THREADS):
+       Document.
+       * tests/test.c (main): Handle OpenBSD case.
+       * extra/threadlibs.c: Add the copyright header; expand all tabs to
+       spaces; remove trailing spaces at EOLn.
+       * include/private/pthread_stop_world.h: Ditto.
+       * extra/threadlibs.c (main): Replace K&R-style function definition
+       with the ANSI C one.
+       * extra/threadlibs.c (main): Handle GC_OPENBSD_THREADS case.
+       * dyn_load.c (OPENBSD): Recognize (similar to NETBSD).
+       * include/gc_config_macros.h (GC_SOLARIS_THREADS): Recognize;
+       define it for OpenBSD.
+       * include/gc_pthread_redirects.h (GC_pthread_sigmask,
+       pthread_sigmask): Don't declare and redefine for OpenBSD.
+       * include/private/gcconfig.h: Handle OpenBSD (on arm, sh, i386,
+       amd64, powerpc).
+       * mach_dep.c (NO_GETCONTEXT): Ditto.
+       * include/private/pthread_stop_world.h (thread_stop_info): Don't
+       define last_stop_count field if OpenBSD.
+       * misc.c (GC_init_dyld): Add declaration (if NetBSD).
+       * misc.c (GC_init): Don't call GC_init_netbsd_elf() for OpenBSD.
+       * os_dep.c (GC_init_netbsd_elf): Don't define for OpenBSD.
+       * os_dep.c (old_segv_act, GC_jmp_buf_openbsd): New static variable
+       (only if OpenBSD).
+       * os_dep.c (GC_fault_handler_openbsd, GC_find_limit_openbsd,
+       GC_skip_hole_openbsd): New static function (only if OpenBSD).
+       * os_dep.c (GC_get_stack_base, GC_get_main_stack_base,
+       GC_register_data_segments): Define specially for OpenBSD case.
+       * os_dep.c (GC_fault_handler_lock): Initialize to
+       AO_TS_INITIALIZER (instead of 0).
+       * pthread_support.c (GC_allocate_lock): Ditto.
+       * pthread_stop_world.c (NSIG, GC_print_sig_mask,
+       GC_remove_allowed_signals, suspend_handler_mask, GC_stop_count,
+       GC_world_is_stopped, GC_retry_signals, SIG_THR_RESTART,
+       GC_suspend_ack_sem, GC_suspend_handler_inner, GC_suspend_handler,
+       GC_restart_handler): Don't define and use if OpenBSD.
+       * pthread_stop_world.c (GC_suspend_all, GC_stop_world,
+       GC_start_world): Handle OpenBSD case.
+       * pthread_stop_world.c (GC_stop_init): Define as empty if OpenBSD.
+       * pthread_support.c (pthread_sigmask): Don't undefine the macro and
+       don't define the wrapper function if OpenBSD.
+       * pthread_support.c (GC_thr_init): Handle OpenBSD case.
+       * configure: Regenerate.
+       * include/private/config.h.in: Ditto.
+
+2009-10-20  Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
+
+       * dyn_load.c: Move the inclusion of private/gc_priv.h below
+       definition of a feature macro (_GNU_SOURCE).
+
+2009-10-20  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc.h (REVEAL_POINTER): Remove redundant parentheses.
+       * include/gc.h (GC_HIDE_POINTER, GC_REVEAL_POINTER): New macros
+       (only if GC_I_HIDE_POINTERS).
+       * backgraph.c (GET_OH_BG_PTR): Prefix REVEAL_POINTER() with "GC_".
+       * dbg_mlc.c (GC_get_back_ptr_info): Ditto.
+       * finalize.c (GC_grow_table, GC_dump_finalization, GC_finalize,
+       GC_enqueue_all_finalizers): Ditto.
+       * backgraph.c (SET_OH_BG_PTR): Prefix HIDE_POINTER() with "GC_".
+       * finalize.c (GC_general_register_disappearing_link,
+       GC_unregister_disappearing_link, GC_register_finalizer_inner,
+       GC_finalize): Ditto.
+       * include/private/dbg_mlc.h (HIDE_BACK_PTR): Ditto.
+       * include/private/dbg_mlc.h (GC_I_HIDE_POINTERS): Define instead
+       of I_HIDE_POINTERS.
+       * include/private/gc_priv.h (GC_I_HIDE_POINTERS): Ditto.
+       * include/gc.h (_GC_H): Strip leading underscore.
+       * include/gc_backptr.h (_GC_H): Ditto.
+       * include/gc_gcj.h (_GC_H): Ditto.
+       * include/gc_mark.h (_GC_H): Ditto.
+       * include/gc_typed.h (_GC_TYPED_H, _GC_H): Ditto.
+       * include/javaxfc.h (_GC_H): Ditto.
+       * include/new_gc_alloc.h (__GC_SPECIALIZE): Ditto.
+       * include/private/dbg_mlc.h (_GC_H): Ditto.
+       * include/private/gc_priv.h (_GC_H): Ditto.
+       * include/gc_backptr.h: Reformat the code (adjust indentation,
+       comment out function parameter names).
+       * include/gc_gcj.h: Ditto.
+       * include/gc_mark.h: Ditto.
+       * include/gc_typed.h: Ditto.
+       * include/javaxfc.h: Ditto.
+       * include/private/dbg_mlc.h: Ditto.
+       * include/private/gc_priv.h: Ditto.
+
+2009-10-19  Ivan Maidanski <ivmai@mail.ru>
+
+       * gc_cpp.cc: Include "gc_cpp.h" instead of <gc_cpp.h>.
+
+2009-10-19  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gc_priv.h (GC_INNER): New macro (for GC-scope
+       variable definitions).
+       * include/private/gc_priv.h (GC_EXTERN): Update the comment.
+       * allchblk.c (GC_unmap_threshold): Define as GC_INNER.
+       * alloc.c (GC_incremental, GC_world_stopped, GC_n_heap_sects,
+       GC_n_memory, GC_fail_count): Ditto.
+       * blacklst.c (GC_black_list_spacing, GC_print_heap_obj): Ditto.
+       * gcj_mlc.c (GC_gcj_malloc_initialized, GC_gcjobjfreelist): Ditto.
+       * mach_dep.c (GC_save_regs_ret_val): Ditto.
+       * mark.c (GC_n_mark_procs, GC_obj_kinds, GC_n_kinds,
+       GC_mark_stack, GC_mark_stack_limit, GC_mark_stack_size,
+       GC_mark_stack_top, GC_mark_state, GC_mark_stack_too_small,
+       GC_mark_no, GC_markers): Ditto.
+       * mark_rts.c (GC_root_size, GC_push_typed_structures): Ditto.
+       * misc.c (GC_allocate_ml, GC_debugging_started, GC_check_heap,
+       GC_print_all_smashed, GC_print_back_height, GC_dump_regularly,
+       GC_backtraces, GC_force_unmap_on_gcollect,
+       GC_large_alloc_warn_interval, GC_is_initialized, GC_write_cs,
+       GC_current_warn_proc, GC_blocked_sp, GC_activation_frame): Ditto.
+       * os_dep.c (GC_page_size, GC_dont_query_stack_min,
+       GC_no_win32_dlls, GC_wnt, GC_sysinfo, GC_push_other_roots,
+       GC_dirty_maintained, GC_fault_handler_lock): Ditto.
+       * pthread_support.c (GC_allocate_ml, GC_lock_holder,
+       GC_need_to_lock, GC_thr_initialized, GC_threads,
+       GC_in_thread_creation, GC_collecting, GC_allocate_lock,
+       GC_mark_lock_holder): Ditto.
+       * reclaim.c (GC_bytes_found, GC_fl_builder_count, GC_have_errors):
+       Ditto.
+       * win32_threads.c (GC_allocate_ml, GC_lock_holder,
+       GC_need_to_lock, GC_mark_lock_holder, GC_collecting): Ditto.
+       * extra/gc.c (GC_INNER, GC_EXTERN): Define as STATIC.
+       * mach_dep.c (GC_with_callee_saves_pushed): Remove redundant {}.
+       * os_dep.c (GC_init_win32): Reformat the comment.
+
+2009-10-19  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gc_priv.h (GC_bytes_allocd, GC_objfreelist,
+       GC_aobjfreelist): Replace GC_EXTERN to extern for SEPARATE_GLOBALS
+       case (since they are not defined inside GC at present).
+       * include/private/gc_priv.h (GC_objects_are_marked): Remove the
+       declaration (since made static).
+       * mark.c (GC_objects_are_marked): Define as STATIC.
+       * win32_threads.c (GC_thr_initialized, GC_in_thread_creation):
+       Ditto.
+       * mark.c (GC_N_KINDS_INITIAL_VALUE): New macro (defined and used
+       to initialize GC_n_kinds).
+       * win32_threads.c (start_mark_threads): Adjust the comment.
+
+2009-10-19  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_notify_full_gc): Use GC_INLINE for a tiny static
+       function.
+       * backgraph.c (pop_in_progress, GC_apply_to_each_object): Ditto.
+       * mark_rts.c (add_roots_to_index): Ditto.
+
+2009-10-19  Ivan Maidanski <ivmai@mail.ru>
+
+       * extra/gc.c: New file.
+       * Makefile.am (EXTRA_DIST): Add "extra/gc.c".
+       * configure: Regenerate.
+       * Makefile.in: Ditto.
+
+2009-10-19  Ivan Maidanski <ivmai@mail.ru>
+
+       * misc.c (GC_log): Remove the declaration; move the definition (to
+       the place where it is used); make STATIC.
+       * misc.c (GC_init): Use GC_err_printf() instead of GC_log_printf()
+       to print open log failure.
+       * misc.c (GC_write): Don't abort on open log failure if the GC is
+       compiled with GC_PRINT_VERBOSE_STATS (useful for WinCE).
+
+2009-10-19  Ivan Maidanski <ivmai@mail.ru> (really Andreas Tobler)
+
+       * include/private/gcconfig.h (USE_MMAP): Guard with ifndef.
+
+2009-10-18  Ivan Maidanski <ivmai@mail.ru>
+
+       * allchblk.c (GC_fail_count, GC_large_alloc_warn_interval): Move
+       the variable declaration to gc_priv.h.
+       * alloc.c (GC_bytes_found, GC_unmap_threshold,
+       GC_force_unmap_on_gcollect): Ditto.
+       * dyn_load.c (GC_no_win32_dlls, GC_wnt): Ditto.
+       * finalize.c (GC_fail_count): Ditto.
+       * include/private/gc_locks.h (GC_allocate_ml, GC_lock_holder,
+       GC_collecting, GC_mark_lock_holder, GC_need_to_lock): Ditto.
+       * include/private/gc_pmark.h (GC_n_mark_procs, GC_mark_stack_size,
+       GC_mark_stack_limit, GC_mark_stack_top, GC_mark_stack,
+       GC_mark_stack_too_small, GC_mark_state): Ditto.
+       * include/private/pthread_support.h (GC_threads,
+       GC_thr_initialized, GC_in_thread_creation): Ditto.
+       * mallocx.c (GC_bytes_found): Ditto.
+       * mark_rts.c (GC_save_regs_ret_val, GC_world_stopped): Ditto.
+       * misc.c (GC_unmap_threshold): Ditto.
+       * os_dep.c (GC_unmap_threshold): Ditto.
+       * pthread_support.c (GC_markers): Ditto.
+       * thread_local_alloc.c (GC_gcjobjfreelist,
+       GC_gcj_malloc_initialized, GC_gcj_kind): Ditto.
+       * win32_threads.c (GC_fault_handler_lock, GC_write_cs,
+       GC_dont_query_stack_min, GC_markers, GC_wnt): Ditto.
+       * include/private/gc_priv.h (GC_EXTERN): New macro (used mostly as
+       a tag for now); defined after "gcconfig.h" inclusion.
+       * include/private/gc_priv.h: Use GC_EXTERN instead of "extern"
+       keyword for most global variables.
+       * alloc.c (GC_copyright): Add the comment about the symbol
+       visibility.
+       * finalize.c (GC_fo_entries): Ditto.
+       * include/private/gc_priv.h (GC_print_stats): Ditto.
+       * misc.c (GC_quiet): Ditto.
+       * mallocx.c (GC_bytes_allocd_tmp): Make the volatile variable
+       STATIC.
+       * pthread_support.c (GC_threads): Add explicit zero initializer
+       (to make the variable definition differ from the declaration).
+
+2009-10-18  Ivan Maidanski <ivmai@mail.ru>
+
+       * backgraph.c (GC_quiet): Remove the declaration (not needed
+       anymore since gc_priv.h is always included).
+       * checksums.c (GC_quiet): Ditto.
+       * gcj_mlc.c (GC_quiet): Ditto.
+       * headers.c (GC_hdr_cache_hits, GC_hdr_cache_misses): Add the
+       comment.
+       * include/private/gc_hdrs.h (GC_hdr_cache_hits,
+       GC_hdr_cache_misses): Ditto.
+       * mark.c (GC_first_nonempty): Make the volatile variable STATIC.
+       * pthread_stop_world.c (GC_stop_count, GC_world_is_stopped):
+       Ditto.
+       * win32_threads.c (GC_please_stop, GC_max_thread_index,
+       GC_mark_mutex_waitcnt): Ditto.
+
+2009-10-18  Ivan Maidanski <ivmai@mail.ru>
+
+       * pthread_support.c (GC_USE_LD_WRAP): Fix a typo (swapped 'L' and
+       'D') in the name.
+
+2009-10-17  Ivan Maidanski <ivmai@mail.ru>
+
+       * gc_dlopen.c (GC_MUST_RESTORE_REDEFINED_DLOPEN): Define if dlopen
+       redirection is turned off; turn it on later when dlopen real
+       symbol is no longer needed (according to the comment and the same
+       as in dyn_load.c).
+       * gc_dlopen.c (WRAP_FUNC, REAL_FUNC): Rename to WRAP_DLFUNC and
+       REAL_DLFUNC, respectively (to have unique names since the
+       definitions may differ from that of the similar ones in
+       pthread_support.c).
+       * mark.c (source): Undefine the macro when no longer needed.
+       * os_dep.c (handler): Rename the type to GC_fault_handler_t (to
+       have the unique name across the project).
+       * os_dep.c (STAT_BUF_SIZE, STAT_READ); Guard with ifndef; add the
+       comment.
+       * pthread_support.c (STAT_BUF_SIZE, STAT_READ): Ditto.
+       * os_dep.c (sbrk): Undo sbrk() redirection (for ECOS) when no
+       longer needed.
+
+2009-10-17  Ivan Maidanski <ivmai@mail.ru>
+
+       * pthread_stop_world.c (pthread_sigmask): Undefine before using
+       in GC_print_sig_mask() (only if DEBUG_THREADS); add the comment.
+       * win32_threads.c (dlopen, _beginthread): Don't undefine (since
+       neither redirected nor used here).
+       * win32_threads.c (GC_Thread_Rep): Rename "table_management" to
+       "tm" for short; remove "tm_" prefix.
+       * win32_threads.c (in_use, next): Don't define the macros; use
+       tm.in_use and tm.next fields, respectively (to ease debugging).
+       * win32_threads.c (HASH): Rename to PTHREAD_MAP_HASH (to have
+       unique name across the project).
+
+2009-10-17  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gc_priv.h (I_HIDE_POINTERS): Define before gc.h
+       inclusion.
+       * include/private/gc_pmark.h (I_HIDE_POINTERS): Define if gc.h is
+       not included yet.
+       * finalize.c (I_HIDE_POINTERS): Don't define.
+       * include/private/dbg_mlc.h (I_HIDE_POINTERS): Ditto.
+       * misc.c (I_HIDE_POINTERS): Ditto.
+       * include/private/dbg_mlc.h (HIDE_POINTER, REVEAL_POINTER,
+       GC_hidden_pointer): Don't define if HIDE_POINTER is undefined.
+       * include/private/gc_pmark.h: Remove the comment about gc_priv.h
+       inclusion order.
+
+2009-10-17  Ivan Maidanski <ivmai@mail.ru>
+
+       * dyn_load.c: Include gc_priv.h before using configuration
+       information (MACOS).
+       * dyn_load.c (GC_must_restore_redefined_dlopen): Rename to
+       GC_MUST_RESTORE_REDEFINED_DLOPEN.
+
+2009-10-17  Ivan Maidanski <ivmai@mail.ru>
+
+       * backgraph.c (SET_OH_BG_PTR): Place outermost parenthesis
+       properly.
+       * darwin_stop_world.c: Replace "if DEBUG_THREADS" with
+       "ifdef DEBUG_THREADS".
+       * pthread_stop_world.c: Ditto.
+       * pthread_support.c: Ditto.
+       * include/gc_inline.h: Guard with GC_INLINE_H.
+
+2009-10-17  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_copyright): Define as const.
+       * alloc.c (GC_collect_at_heapsize): Replace "static" with "STATIC"
+       (since the name starts with "GC_" prefix).
+       * dbg_mlc.c (GC_describe_type_fns): Ditto.
+       * dyn_load.c (GC_FirstDLOpenedLinkMap,
+       GC_register_dynlib_callback, GC_dyld_sections,
+       GC_dyld_name_for_hdr, GC_dyld_image_add, GC_dyld_image_remove):
+       Ditto.
+       * malloc.c (GC_libpthread_start, GC_libpthread_end,
+       GC_libld_start, GC_libld_end): Ditto.
+       * mark_rts.c (GC_remove_root_at_pos, GC_rebuild_root_index):
+       Ditto.
+       * os_dep.c (GC_gww_read_dirty, GC_gww_page_was_dirty,
+       GC_gww_page_was_ever_dirty, GC_mprotect_thread_notify,
+       GC_mprotect_thread_reply, GC_mprotect_thread, GC_darwin_sigbus,
+       GC_forward_exception): Ditto.
+       * pthread_support.c (GC_syms_initialized): Ditto.
+       * typd_mlc.c (GC_push_typed_structures_proc): Ditto.
+       * win32_threads.c (GC_win32_dll_threads,
+       GC_register_my_thread_inner, GC_lookup_pthread, GC_get_stack_min,
+       GC_waitForSingleObjectInfinite): Ditto.
+       * darwin_stop_world.c (GC_use_mach_handler_thread,
+       GC_use_mach_handler_thread, GC_mach_threads_count): Replace
+       "static" with "STATIC" and add zero initializer.
+       * os_dep.c (GC_task_self, GC_ports, GC_mprotect_state,
+       GC_sigbus_count): Ditto.
+       * headers.c (free_hdr): Replace "static" with GC_INLINE.
+       * misc.c (GC_tmp): Rename static variable to fwrite_gc_res.
+       * os_dep.c (memory): Rename static variable to ecos_gc_memory.
+       * os_dep.c (async_set_pht_entry_from_index): Make static (for
+       MPROTECT_VDB case).
+       * pthread_support.c (GC_real_pthread_create,
+       GC_real_pthread_sigmask, GC_real_pthread_join,
+       GC_real_pthread_detach, GC_init_real_syms): Use REAL_FUNC() macro
+       for static GC_real_XXX symbols.
+       * win32_threads.c (GC_may_be_in_stack): Remove "GC_" prefix.
+
+2009-10-17  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_never_stop_func, GC_check_fl_marks,
+       GC_finish_collection): Reformat the code (make opening bracket
+       style uniform across the file).
+       * allchblk.c (GC_allochblk): Ditto.
+       * backgraph.c (add_edge): Ditto.
+       * dbg_mlc.c (GC_marked_for_finalization): Ditto.
+       * dyn_load.c (GC_register_dynamic_libraries, GC_init_dyld): Ditto.
+       * finalize.c (GC_null_finalize_mark_proc): Ditto.
+       * gc_dlopen.c (GC_dlopen): Ditto.
+       * mark.c (GC_push_marked1, GC_push_marked2, GC_push_marked4):
+       Ditto.
+       * misc.c (looping_handler, GC_call_with_gc_active,
+       GC_do_blocking_inner, GC_do_blocking): Ditto.
+       * os_dep.c (GC_get_main_stack_base, GC_read_dirty): Ditto.
+       * pthread_support.c (GC_pthread_create, GC_pthread_sigmask,
+       GC_pthread_join, GC_pthread_detach, GC_check_tls,
+       GC_do_blocking_inner, GC_call_with_gc_active): Ditto.
+       * reclaim.c (GC_reclaim_clear, GC_reclaim_block,
+       GC_print_free_list): Ditto.
+       * os_dep.c (GC_page_was_dirty, GC_page_was_ever_dirty,
+       GC_remove_protection): Reformat the code (wrap long lines).
+
+2009-10-16  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_finish_collection): Replace getenv() with GETENV().
+       * dyn_load.c (GC_init_dyld): Ditto.
+       * os_dep.c (GC_print_callers): Ditto.
+       * dyn_load.c (GC_dyld_name_for_hdr): Cast _dyld_get_image_name()
+       result (since it's always of "struct mach_header" type).
+       * dyn_load.c (GC_init_dyld): Cast GC_dyld_image_add and
+       GC_dyld_image_remove (to always have the first argument of
+       "struct mach_header" pointer type).
+
+2009-10-16  Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
+
+       * configure.ac: Add threads support for OpenBSD case (threads may
+       not work correctly for it).
+       * configure: Regenerate.
+
+2009-10-15  Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
+
+       * acinclude.m4: Rename to m4/gc_set_version.m4.
+       * aclocal.m4: Regenerate.
+       * configure: Ditto.
+       * Makefile.in: Ditto.
+       * m4/libtool.m4: Delete the file.
+       * m4/lt~obsolete.m4: Ditto.
+       * m4/ltoptions.m4: Ditto.
+       * m4/ltsugar.m4: Ditto.
+       * m4/ltversion.m4: Ditto.
+
+2009-10-15  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gcconfig.h: Define DebugBreak() as _exit(-1) for
+       x86mingw32ce toolchain to workaround the incorrect DebugBreak()
+       declaration in winbase.h (the workaround would turn into a no-op
+       when DebugBreak() will be defined as a macro in the toolchain).
+
+2009-10-15  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gcconfig.h: Recognize __i386__ if WinCE (for
+       x86mingw32ce toolchain).
+       * include/private/gcconfig.h (NO_GETENV): Don't define for CeGCC
+       toolchain (or if already defined).
+       * include/private/gcconfig.h (NO_GETENV_WIN32): New macro (always
+       defined for WinCE or if NO_GETENV is defined).
+       * misc.c (GC_CreateLogFile): Use NO_GETENV_WIN32 macro instead of
+       NO_GETENV one.
+
+2009-10-15  Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
+
+       * configure.ac: Add AC_CONFIG_MACRO_DIR([m4]).
+       * Makefile.am: Add "ACLOCAL_AMFLAGS = -I m4".
+       * libtool.m4: Remove.
+       * aclocal.m4: Regenerate.
+       * configure: Ditto.
+       * Makefile.in: Ditto.
+       * m4/libtool.m4: New file (generated).
+       * m4/lt~obsolete.m4: Ditto.
+       * m4/ltoptions.m4: Ditto.
+       * m4/ltsugar.m4: Ditto.
+       * m4/ltversion.m4: Ditto.
+
+2009-10-10  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc.h (GC_UNDERSCORE_STDCALL): Recognize new macro;
+       prefix GC_CreateThread and GC_ExitThread with '_' if defined.
+       * doc/README.macros (GC_UNDERSCORE_STDCALL): Document.
+
+2009-10-09  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_collect_or_expand): Add "retry" argument; add the
+       comments; don't use "default" stop_func on a retry if
+       GC_dont_expand.
+       * alloc.c (GC_collect_or_expand): Reformat the code (make the
+       indentation style uniform across the function).
+       * alloc.c (GC_allocobj): Pass "retry" argument to
+       GC_collect_or_expand().
+       * malloc.c (GC_alloc_large): Ditto.
+       * include/private/gc_priv.h (GC_collect_or_expand): Move the
+       declaration to malloc.c; add "retry" argument.
+
+2009-10-09  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_start_call_back): Move the variable definition from
+       misc.c.
+       * include/private/gc_priv.h (GC_start_call_back): Remove the
+       declaration.
+       * alloc.c (GC_notify_full_gc): Remove unnecessary cast of 0.
+       * alloc.c (GC_try_to_collect_inner): Also call stop_func at the
+       beginning of the function.
+       * include/gc.h (GC_try_to_collect): Refine the comment about
+       stop_func.
+
+2009-10-08  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_default_stop_func, GC_try_to_collect_general,
+       GC_gcollect): Add the comment.
+       * alloc.c (GC_try_to_collect_general): Move the assertion on
+       stop_func != 0 to GC_try_to_collect().
+       * alloc.c (GC_try_to_collect_general): If stop_func == 0 then use
+       GC_default_stop_func instead (holding the lock).
+       * alloc.c (GC_gcollect): Pass 0 as stop_func instead of
+       GC_default_stop_func (to prevent data races).
+
+2009-10-08  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile.direct: Move "define arguments" documentation to
+       doc/README.macros; add reference to doc/README.macros.
+       * Makefile.dj: Change the documentation reference to
+       doc/README.macros.
+       * README.QUICK: Ditto.
+       * configure.ac: Ditto.
+       * allchblk.c: Remove unnecessary "-D" from the comment.
+       * doc/README.macros: Ditto.
+       * README.environment: Ditto.
+       * include/gc.h: Ditto.
+       * include/gc_inline.h: Ditto.
+       * include/private/gcconfig.h: Ditto.
+       * README.QUICK: Fix a typo.
+       * README.QUICK: Expand all tabs to spaces.
+       * configure: Regenerate.
+       * include/private/config.h.in: Ditto.
+
+2009-10-07  Ivan Maidanski <ivmai@mail.ru>
+
+       * misc.c (GC_CreateLogFile): Use FILE_ATTRIBUTE_NORMAL for
+       CreateFile(); don't immediately flush every write if very verbose.
+
+2009-10-07  Ivan Maidanski <ivmai@mail.ru>
+
+       * doc/README.win32: Replace ".exe.log" to ".gc.log".
+       * doc/README.win64: Ditto.
+       * doc/README.win64: Fix a typo.
+       * misc.c (GC_CreateLogFile): Strip executable file extension for
+       the log file; use ".gc.log" extension (instead of ".log").
+
+2009-10-07  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc_config_macros.h: Avoid the redefinition of
+       GC_xxx_THREADS macros.
+
+2009-10-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_try_to_collect_general): Change the type of "result"
+       local variable to GC_bool.
+
+2009-10-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc_config_macros.h: Use old behavior for FreeBSD and
+       NetBSD platform detection code (check that other GC_xxx_THREADS
+       are undefined); add FIXME.
+
+2009-10-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc_config_macros.h: Rearrange the platform detection
+       code (GC_WIN32_PTHREADS implies GC_WIN32_THREADS; define
+       GC_THREADS first if GC_XXX_THREADS already set; define proper
+       GC_XXX_THREADS if GC_THREADS; define GC_PTHREADS in a single
+       place; define _REENTRANT if posix threads except for Win32).
+       * include/gc_config_macros.h: Reformat the code (make the
+       indentation style uniform across the file).
+
+2009-10-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_try_to_collect_general): New function (move the code
+       from GC_try_to_collect, pass force_unmap argument).
+       * alloc.c (GC_try_to_collect, GC_gcollect): Call
+       GC_try_to_collect_general().
+       * alloc.c (GC_gcollect_and_unmap): New public function.
+       * include/gc.h (GC_gcollect_and_unmap): New function declaration.
+       * tests/test.c (window_proc): Call GC_gcollect_and_unmap() on
+       WM_HIBERNATE event (instead of GC_set_force_unmap_on_gcollect()
+       and GC_gcollect()).
+
+2009-10-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc.h (GC_allow_register_threads, GC_register_my_thread,
+       GC_unregister_my_thread, GC_malloc_many): Refine the comment.
+       * include/gc.h (GC_malloc_many, GC_NEXT): Declare unconditionally
+       (that is, don't depend on GC_THREADS macro).
+       * include/gc.h: Don't check for __CYGWIN32__ and __CYGWIN__ along
+       with a check for GC_PTHREADS (since the former implies the
+       latter).
+
+2009-10-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc.h: Reformat the code (make the indentation style
+       uniform across the file).
+       * include/gc.h (GC_SOLARIS_THREADS): Don't check for.
+       * include/gc.h (GC_MIN, GC_MAX): Don't define.
+       * mallocx.c (GC_malloc_many): Add comment to #endif.
+
+2009-10-02  Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
+
+       * configure.ac: Drop the subdir-objects Automake option, since
+       it's incompatible with picking source files from libatomic_ops.
+       * Makefile.in: Regenerate.
+
+2009-10-01  Ivan Maidanski <ivmai@mail.ru> (really mostly Andreas Tobler)
+
+       * allchblk.c (GC_fail_count, GC_large_alloc_warn_interval): Add
+       "extern" keyword to a global variable declaration (some compilers
+       require it).
+       * alloc.c (GC_bytes_found, GC_unmap_threshold,
+       GC_force_unmap_on_gcollect): Ditto.
+       * dyn_load.c (GC_no_win32_dlls, GC_wnt): Ditto.
+       * finalize.c (GC_fail_count): Ditto.
+       * include/private/gc_hdrs.h (GC_hdr_cache_hits,
+       GC_hdr_cache_misses): Ditto.
+       * mallocx.c (GC_bytes_found): Ditto.
+       * mark_rts.c (GC_save_regs_ret_val, GC_world_stopped): Ditto.
+       * misc.c (GC_unmap_threshold): Ditto.
+       * os_dep.c (GC_unmap_threshold, GC_old_allocator): Ditto.
+       * pthread_support.c (GC_markers): Ditto.
+       * thread_local_alloc.c (GC_gcjobjfreelist,
+       GC_gcj_malloc_initialized, GC_gcj_kind): Ditto.
+       * win32_threads.c (GC_fault_handler_lock, GC_write_cs,
+       GC_dont_query_stack_min, GC_markers, GC_wnt): Ditto.
+
+2009-10-01  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile.in: Regenerate (by autoreconf -vif, deleting libtool.m4
+       first and using libtool-2.2, automake-1.10.2, autoconf-2.64).
+       * aclocal.m4: Ditto.
+       * config.guess: Ditto.
+       * config.sub: Ditto.
+       * configure: Ditto.
+       * depcomp: Ditto.
+       * install-sh: Ditto.
+       * ltmain.sh: Ditto.
+       * missing: Ditto.
+       * mkinstalldirs: Ditto.
+       * include/private/config.h.in: Ditto.
+
+2009-10-01  Ivan Maidanski <ivmai@mail.ru>
+
+       * tests/huge_test.c: Define GC_IGNORE_WARN (if not defined) to
+       suppress misleading GC "Out of Memory!" warning printed on every
+       GC_MALLOC(LONG_MAX) call.
+       * tests/huge_test.c: Include "gc.h" instead of <gc.h>.
+       * tests/huge_test.c (main): Replace K&R-style function definition
+       with the ANSI C one.
+       * tests/huge_test.c: Expand all tabs to spaces.
+
+2009-10-01  Ivan Maidanski <ivmai@mail.ru>
+
+       * dyn_load.c (GC_register_dynamic_libraries): Always use
+       lpMaximumApplicationAddress value for WinCE (even for old
+       versions).
+       * os_dep.c (VER_PLATFORM_WIN32_CE): Define if not in winbase.h.
+       * os_dep.c (GC_dont_query_stack_min): New global variable (only if
+       WinCE and THREADS).
+       * os_dep.c (GC_setpagesize): Adjust lpMaximumApplicationAddress
+       for WinCE (prior to version 6) if not _WIN32_WCE_EMULATION; set
+       GC_dont_query_stack_min for older WinCE (prior to version 5).
+       * win32_threads.c (GC_dont_query_stack_min): Declare.
+       * win32_threads.c (GC_get_stack_min): Rename the macro to
+       GC_wince_evaluate_stack_min for WinCE; update the comment.
+       * win32_threads.c (GC_push_stack_for, GC_get_next_stack): Use
+       GC_wince_evaluate_stack_min() instead of GC_get_stack_min() for
+       WinCE and don't update thread's last_stack_min value (only if
+       GC_dont_query_stack_min).
+       * win32_threads.c (GC_push_stack_for): Skip assertion for WinCE if
+       GC_dont_query_stack_min (since the evaluated stack_min value may
+       be incorrect if the stack is bigger than 64 KiB).
+
+2009-10-01  Ivan Maidanski <ivmai@mail.ru>
+
+       * gc_dlopen.c (GC_dlopen): Add function redirector (only if
+       GC_USE_LD_WRAP).
+       * include/gc.h: Include "gc_pthread_redirects.h" even if
+       GC_USE_LD_WRAP or GC_NO_THREAD_REDIRECTS.
+       * include/gc_pthread_redirects.h (GC_PTHREAD_REDIRECTS_H): Don't
+       define and check for (since included only from gc.h).
+       * include/gc_pthread_redirects.h: Declare "GC_" symbols even if
+       GC_USE_LD_WRAP or GC_NO_THREAD_REDIRECTS.
+       * include/gc_pthread_redirects.h: Include signal.h only to get
+       sigset_t definition.
+
+2009-09-30  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure: Regenerate (by autoreconf -vif, deleting libtool.m4
+       first).
+       * Makefile.in: Ditto.
+       * aclocal.m4: Ditto.
+       * include/private/config.h.in: Ditto.
+
+2009-09-30  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile.direct: Remove trailing spaces at EOLn.
+       * Makefile.direct: Document GC_REGISTER_MEM_PRIVATE.
+       * mark_rts.c (GC_is_tmp_root): Define also for WinCE unless
+       NO_DEBUGGING (that is, replace _WIN32_WCE_EMULATION with MSWINCE).
+       * os_dep.c (GC_sysinfo): Remove explicit global variable
+       initialization to "{0}" (revert back the previous change) since it
+       might produce a warning.
+
+2009-09-30  Ivan Maidanski <ivmai@mail.ru>
+
+       * allchblk.c (GC_large_alloc_warn_interval): Move declaration from
+       gc_priv.h.
+       * allchblk.c (GC_large_alloc_warn_suppressed): Move definition
+       from misc.c; define as STATIC.
+       * include/private/gc_priv.h (GC_large_alloc_warn_interval,
+       GC_large_alloc_warn_suppressed): Remove declaration.
+       * alloc.c (GC_bytes_found): Add "defined in" comment.
+       * mallocx.c (GC_bytes_found): Ditto.
+       * misc.c (GC_unmap_threshold): Ditto.
+       * os_dep.c (GC_old_allocator): Ditto.
+       * pthread_support.c (GC_markers): Ditto.
+       * thread_local_alloc.c (GC_gcjobjfreelist,
+       GC_gcj_malloc_initialized, GC_gcj_kind): Ditto.
+       * win32_threads.c (GC_markers): Ditto.
+       * alloc.c (GC_start_time): Explicitly initialize to 0 or NULL (to
+       be distinctive from a variable declaration).
+       * backgraph.c (GC_max_height, GC_deepest_obj): Ditto.
+       * blacklst.c (GC_old_normal_bl, GC_incomplete_normal_bl,
+       GC_old_stack_bl, GC_incomplete_stack_bl): Ditto.
+       * checksums.c (GC_faulted, GC_n_dirty_errors,
+       GC_n_faulted_dirty_errors, GC_n_changed_errors, GC_n_clean,
+       GC_n_dirty, GC_bytes_in_used_blocks): Ditto.
+       * dbg_mlc.c (GC_smashed): Ditto.
+       * finalize.c (GC_old_dl_entries): Ditto.
+       * gcj_mlc.c (GC_gcj_kind, GC_gcj_debug_kind, GC_gcjobjfreelist,
+       GC_gcjdebugobjfreelist): Ditto.
+       * mach_dep.c (GC_save_regs_ret_val): Ditto.
+       * mark.c (GC_n_rescuing_pages, GC_mark_stack, GC_mark_stack_limit,
+       GC_mark_stack_top): Ditto.
+       * misc.c (GC_min_sp, GC_high_water, GC_bytes_allocd_at_reset):
+       Ditto.
+       * os_dep.c (GC_data_start, GC_page_size, GC_sysinfo,
+       GC_old_segv_handler, GC_old_bus_handler,
+       GC_old_bus_handler_used_si, GC_old_segv_handler_used_si,
+       GC_proc_buf, GC_proc_fd, GC_vd_base): Ditto.
+       * pthread_stop_world.c (GC_stop_count, GC_stopping_pid): Ditto.
+       * reclaim.c (GC_leaked): Ditto.
+       * typd_mlc.c (GC_explicit_kind, GC_array_kind, GC_ext_descriptors,
+       GC_typed_mark_proc_index, GC_array_mark_proc_index,
+       GC_eobjfreelist, GC_arobjfreelist): Ditto.
+       * win32_threads.c (GC_pthread_map_cache, GC_marker_cv,
+       GC_marker_Id): Ditto.
+       * dbg_mlc.c (GC_smashed, GC_n_smashed): Define as STATIC.
+       * gcj_mlc.c (GC_gcjdebugobjfreelist): Ditto.
+       * os_dep.c (GC_vd_base): Ditto.
+       * pthread_support.c (GC_mark_threads): Ditto.
+       * reclaim.c (GC_leaked): Ditto.
+       * typd_mlc.c (GC_bm_table): Ditto.
+       * mark_rts.c (GC_save_regs_ret_val): Change declaration type to
+       that of definition; add "defined in" comment.
+       * mark_rts.c (GC_push_current_stack): Remove unnecessary cast for
+       GC_save_regs_ret_val.
+       * misc.c (GC_check_heap, GC_print_all_smashed,
+       GC_start_call_back): Remove unnecessary cast (of 0).
+       * misc.c (GC_LARGE_ALLOC_WARN_INTERVAL): New tuning macro.
+       * misc.c (GC_large_alloc_warn_interval): Initialize to
+       GC_LARGE_ALLOC_WARN_INTERVAL value.
+       * misc.c (GC_tmp): Change to "static".
+       * os_dep.c (GC_setpagesize): Reformat the code (collapse multiple
+       function definitions).
+       * os_dep.c (GC_mprotect_state): Define as static.
+       * pthread_support.c (dummy_thread_local): Prefix with "GC_".
+       * win32_threads.c (WinMain): Remove FIXME for WinCE.
+
+2009-09-30  Ivan Maidanski <ivmai@mail.ru> (really Hans Boehm)
+
+       * os_dep.c (PROTECT, UNPROTECT): Use distinct ABORT messages.
+
+2009-09-30  Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
+
+       * configure.ac: Rewrite the tests for external or internal
+       libatomic_ops.
+       * configure.ac: In particular, drop the symbolic links. Add option
+       --with-libatomic-ops for forced selection.
+       * Makefile.am: Adjust the path of source files from libatomic_ops
+       to not use the links.
+       * Makefile.am (libgc_la_LIBADD): Add $(ATOMIC_OPS_LIBS). This will
+       be empty if we use the bundled AO sources.
+       * configure: Regenerate.
+       * Makefile.in: Ditto.
+
+2009-09-29  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile.am: Strip version suffix for libatomic_ops directory.
+       * build_atomic_ops.sh: Ditto.
+       * build_atomic_ops.sh.cygwin: Ditto.
+       * configure_atomic_ops.sh: Ditto.
+       * Makefile.direct: Remove AO_VERSION definition; strip version
+       suffix for libatomic_ops directory.
+       * NT_STATIC_THREADS_MAKEFILE: Ditto.
+       * NT_X64_STATIC_THREADS_MAKEFILE: Ditto.
+       * NT_X64_THREADS_MAKEFILE: Ditto.
+       * gc.mak: Ditto.
+       * Makefile.in: Regenerate.
+
+2009-09-29  Ivan Maidanski <ivmai@mail.ru>
+
+       * libatomic_ops: Rename from "libatomic_ops-1.2".
+
+2009-09-28  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_version): Add "const" keyword.
+       * alloc.c (GC_get_version): New public function.
+       * include/gc.h (GC_get_version): New function declaration; update
+       the comment for the GC version.
+
+2009-09-27  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gc_locks.h (GC_allocate_ml, GC_lock_holder,
+       GC_collecting, GC_mark_lock_holder, GC_need_to_lock): Use "extern"
+       (for the global variable declaration) again.
+       * include/private/gc_pmark.h (GC_n_mark_procs, GC_mark_stack_size,
+       GC_mark_stack_limit, GC_mark_stack_top, GC_mark_stack,
+       GC_mark_stack_too_small, GC_mark_state): Ditto.
+       * include/private/gcconfig.h (GC_register_stackbottom): Ditto.
+       * include/private/pthread_support.h (GC_threads,
+       GC_thr_initialized, GC_in_thread_creation): Ditto.
+       * include/private/gc_priv.h: Ditto (for all global variables).
+
+2009-09-27  Ivan Maidanski <ivmai@mail.ru>
+
+       * real_malloc.c: Include private/config.h if HAVE_CONFIG_H.
+
+2009-09-27  Ivan Maidanski <ivmai@mail.ru>
+
+       * allchblk.c (GC_hblkfreelist): Define as STATIC.
+       * blacklst.c (GC_total_stack_black_listed): Ditto.
+       * include/private/gc_priv.h (GC_hblkfreelist, GC_stopped_mark,
+       GC_total_stack_black_listed, GC_push_stubborn_structures): Remove
+       declaration.
+       * mark_rts.c (GC_stopped_mark): Add declaration (only if
+       THREAD_LOCAL_ALLOC).
+       * allchblk.c (GC_fail_count): Move the declaration out of
+       GC_allochblk_nth(); remove "extern".
+       * alloc.c (IF_THREADS): Remove unused macro.
+       * alloc.c (GC_world_stopped): Define only if THREAD_LOCAL_ALLOC.
+       * alloc.c (GC_stopped_mark): Set GC_world_stopped value only if
+       THREAD_LOCAL_ALLOC.
+       * alloc.c (GC_bytes_found, GC_collection_in_progress,
+       GC_check_tls, GC_unmap_threshold, GC_force_unmap_on_gcollect):
+       Remove K&R-style "extern" for the declaration.
+       * dbg_mlc.c (GC_free_inner): Ditto.
+       * dyn_load.c (GC_repeat_read, GC_roots_present, GC_is_heap_base,
+       GC_get_next_stack, GC_no_win32_dlls, GC_wnt): Ditto.
+       * finalize.c (GC_fail_count): Ditto.
+       * include/private/gc_hdrs.h (GC_hdr_cache_hits,
+       GC_hdr_cache_misses): Ditto.
+       * include/private/gc_locks.h (GC_allocate_ml, GC_lock_holder,
+       GC_lock, GC_collecting, GC_mark_lock_holder, GC_need_to_lock):
+       Ditto.
+       * include/private/gc_pmark.h (GC_mark_procs, GC_n_mark_procs,
+       GC_mark_stack_size, GC_mark_stack_limit, GC_mark_stack_top,
+       GC_mark_stack, GC_mark_stack_too_small, GC_mark_state): Ditto.
+       * include/private/gc_priv.h (GC_current_warn_proc, GC_obj_kinds,
+       GC_n_kinds, GC_fo_entries, GC_n_heap_sects, GC_n_memory,
+       GC_page_size, GC_sysinfo, GC_black_list_spacing,
+       GC_objects_are_marked, GC_incremental, GC_dirty_maintained,
+       GC_root_size, GC_debugging_started, GC_large_alloc_warn_interval,
+       GC_large_alloc_warn_suppressed, GC_blocked_sp,
+       GC_activation_frame, GC_push_other_roots,
+       GC_push_finalizer_structures, GC_push_thread_structures,
+       GC_push_typed_structures, GC_start_call_back, GC_is_initialized,
+       GC_check_heap, GC_print_all_smashed, GC_print_all_errors,
+       GC_print_heap_obj, GC_have_errors, GC_print_stats,
+       GC_dump_regularly, GC_backtraces, GC_print_back_height,
+       GC_debug_generic_malloc_inner,
+       GC_debug_generic_malloc_inner_ignore_off_page,
+       GC_fl_builder_count, GC_mark_no, GC_help_marker,
+       GC_setup_temporary_fault_handler, GC_reset_fault_handler): Ditto.
+       * include/private/gcconfig.h (GC_SysVGetDataStart,
+       GC_FreeBSDGetDataStart, GC_register_stackbottom,
+       GC_MacTemporaryNewPtr, GC_amiga_get_mem): Ditto.
+       * include/private/pthread_support.h (GC_threads,
+       GC_thr_initialized, GC_in_thread_creation): Ditto.
+       * malloc.c (GC_text_mapping): Ditto.
+       * mallocx.c (GC_bytes_found): Ditto.
+       * mark.c (GC_check_dirty, GC_started_thread_while_stopped): Ditto.
+       * mark_rts.c (GC_save_regs_ret_val): Ditto.
+       * misc.c (GC_clear_stack_inner, GC_init_parallel, GC_init_win32,
+       GC_setpagesize, GC_init_linux_data_start,
+       GC_set_and_save_fault_handler, GC_unmap_threshold): Ditto.
+       * os_dep.c (GC_unmap_threshold, GC_push_all_stacks,
+       GC_darwin_register_mach_handler_thread): Ditto.
+       * pthread_support.c (GC_markers, GC_collection_in_progress):
+       Ditto.
+       * tests/test.c (GC_amiga_free_all_mem): Ditto.
+       * thread_local_alloc.c (GC_gcjobjfreelist,
+       GC_gcj_malloc_initialized, GC_gcj_kind): Ditto.
+       * win32_threads.c (GC_write_fault_handler, GC_gww_dirty_init,
+       GC_fault_handler_lock, GC_write_cs, GC_markers): Ditto.
+       * misc.c (GC_read, GC_register_finalizer_no_order, GC_init_dyld):
+       Move the declaration out of GC_init(); remove "extern".
+       * os_dep.c (GC_abort): Add the comment; add workaround to suppress
+       compiler "unreachable code" warnings for ABORT callers (where
+       ABORT is followed by a dummy return statement).
+       * os_dep.c (GC_old_allocator): Move the declaration out of
+       GC_default_push_other_roots(); remove "extern".
+       * darwin_stop_world.c (GC_mprotect_stop, GC_mprotect_resume):
+       Move the declaration out of GC_stop_world() and GC_start_world()
+       (only if MPROTECT_VDB); remove "extern".
+
+2009-09-27  Ivan Maidanski <ivmai@mail.ru>
+
+       * win32_threads.c (GC_get_stack_min, GC_push_stack_for,
+       GC_get_next_stack): Recognize _WIN32_WCE_EMULATION macro (used for
+       WinCE emulation and for custom WinCE 6 devices); add the comment.
+       * win32_threads.c (GC_get_stack_min): Cast pointer to word instead
+       of DWORD.
+       * win32_threads.c (GC_get_next_stack): Don't use and maintain the
+       latest known stack_min value for WinCE (if GC_get_stack_min is
+       defined as a macro); update the comments.
+       * win32_threads.c (GC_wnt): Don't declare for WinCE.
+
+2009-09-26  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile.direct: Document EMPTY_GETENV_RESULTS.
+       * gcj_mlc.c (GC_clear_stack): Remove declaration.
+       * malloc.c (GC_clear_stack): Ditto.
+       * mallocx.c (GC_clear_stack): Ditto.
+       * typd_mlc.c (GC_clear_stack): Ditto.
+       * gcj_mlc.c (GENERAL_MALLOC, GENERAL_MALLOC_IOP): Rename to
+       GENERAL_MALLOC_INNER and GENERAL_MALLOC_INNER_IOP, respectively;
+       remove "lb" unnecessary cast to word.
+       * include/private/gc_priv.h (GC_clear_stack): Add declaration.
+       * include/private/gc_priv.h (GENERAL_MALLOC, GENERAL_MALLOC_IOP):
+       Move common declaration from typd_mlc.c and malloc.c; remove
+       unnecessary result and "lb" parameter casts.
+       * include/private/thread_local_alloc.h: Guard against duplicate
+       header file inclusion.
+       * os_dep.c (USE_MUNMAP): Replace "-->" with an error directive for
+       the case when USE_MMAP is not defined.
+       * pthread_support.c (GC_is_thread_tsd_valid): New internal
+       function (only if GC_ASSERTIONS and THREAD_LOCAL_ALLOC); move the
+       code from thread-local GC_malloc(); add FIXME for the condition.
+       * win32_threads.c (GC_is_thread_tsd_valid): Ditto.
+       * thread_local_alloc.c (GC_gcjobjfreelist): Change the type (to
+       match that of its definition).
+       * thread_local_alloc.c (GC_destroy_thread_local): Add a cast for
+       GC_gcjobjfreelist.
+       * thread_local_alloc.c (GC_lookup_thread, GC_lookup_thread_inner):
+       Remove unused declaration; don't include pthread.h.
+       * thread_local_alloc.c (GC_is_thread_tsd_valid): New declaration
+       (only if GC_ASSERTIONS).
+       * thread_local_alloc.c (GC_malloc): Use GC_is_thread_tsd_valid()
+       instead of GC_lookup_thread().
+       * win32_threads.c (GC_lookup_thread_inner): Define as STATIC.
+       * win32_threads.c (UNPROTECT): Rename to UNPROTECT_THREAD (to have
+       id different from that in os_dep.c).
+
+2009-09-26  Ivan Maidanski <ivmai@mail.ru>
+
+       * allchblk.c (GC_enough_large_bytes_left): Replace "inline static"
+       with GC_INLINE.
+       * include/private/gc_priv.h (fixed_getenv): Ditto.
+       * alloc.c (GC_max, GC_min): Replace "static INLINE" with
+       GC_INLINE.
+       * mark_rts.c (rt_hash): Ditto.
+       * win32_threads.c (GC_get_max_thread_index): Ditto.
+       * include/private/gc_priv.h (INLINE): Prefix with "GC_"; include
+       "static"; define for Sun CC; define for VC++ (and other
+       compilers).
+       * pthread_support.c: Don't define __inline__ for non-GNU compilers
+       (not needed anymore).
+
+2009-09-26  Ivan Maidanski <ivmai@mail.ru>
+
+       * NT_THREADS_MAKEFILE: Remove file (since it duplicates gc.mak).
+       * Makefile.in: Remove reference to NT_THREADS_MAKEFILE.
+       * Makefile.am: Ditto.
+       * Makefile.dj: Ditto.
+       * Makefile.direct: Ditto.
+       * doc/README.win32: Add reference to gc.mak.
+       * NT_X64_THREADS_MAKEFILE: Ditto.
+
+2009-09-26  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile.in: Regenerate (by autoreconf -vif).
+       * aclocal.m4: Ditto.
+       * compile: Ditto.
+       * config.guess: Ditto.
+       * config.sub: Ditto.
+       * configure: Ditto.
+       * depcomp: Ditto.
+       * install-sh: Ditto.
+       * ltmain.sh: Ditto.
+       * missing: Ditto.
+       * mkinstalldirs: Ditto.
+       * include/private/config.h.in: New file (generated).
+       * Makefile.direct: Remove references to acinclude.m4, libtool.m4.
+
+2009-09-26  Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
+
+       * autogen.sh: Update.
+
+2009-09-26  Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
+
+       * Makefile.am: Don't add libtool.m4 to EXTRA_DIST.
+       * acinclude.m4: Fix underquoting of GC_SET_VERSION.
+       * README.QUICK: Update information for Makefile.
+       * Makefile.am: Do not distribute the substituted bdw-gc.pc.
+       * configure.ac: Add AM conditional analog to KEEP_BACK_PTRS.
+       * tests/tests.am: Use it here to conditionally enable tracetest
+       when possible.
+
+2009-09-26  Ivan Maidanski <ivmai@mail.ru>
+
+       * dyn_load.c (GC_wnt): Update the comment.
+       * dyn_load.c (GC_register_dynamic_libraries): Add the comment for
+       _WIN32_WCE_EMULATION; recognize GC_REGISTER_MEM_PRIVATE (new
+       macro); call GC_is_heap_base() only if check for Type succeeded.
+
+2009-09-26  Ivan Maidanski <ivmai@mail.ru>
+
+       * mark_rts.c (GC_is_tmp_root): Don't define unless NO_DEBUGGING;
+       update the comment.
+       * include/private/gc_priv.h (GC_is_tmp_root): Remove declaration.
+
+2009-09-26  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c: Expand all tabs to spaces; remove trailing spaces at
+       EOLn; remove multiple trailing blank lines.
+       * misc.c: Ditto.
+       * os_dep.c: Ditto.
+       * pthread_support.c: Ditto.
+       * include/private/gc_priv.h: Ditto.
+       * include/private/gcconfig.h: Ditto.
+
+2009-09-25  Hans Boehm <Hans.Boehm@hp.com>
+
+       * include/private/gcconfig.h (CANCEL_SAFE, IF_CANCEL): new macros.
+       * include/private/gc_priv.h (DISABLE_CANCEL, RESTORE_CANCEL,
+       ASSERT_CANCEL_DISABLED): New macros.
+       * alloc.c (GC_maybe_gc): Assert cancellation disabled.
+       (GC_collect_a_little_inner,GC_try_to_collect, GC_collect_or_expand):
+       Disable cancellation.
+       (GC_add_to_our_memory): Check for overflow.
+       * misc.c (GC_cancel_disable_count): declare.
+       (GC_init, GC_write): Disable cancellation.
+       (GC_init): Remove redundant GC_is_initialized test.
+       * os_dep.c (GC_repeat_read): Assert cancellation disabled.
+       (GC_get_stack_base): Disable cancellation.
+       * pthread_stop_world.c (GC_suspend_handler_inner): Disable
+       cancellation.
+       * pthread_support.c (GC_mark_thread): Permanently disable
+       cancellation.
+       (GC_wait_for_gc_completion, GC_wait_builder, GC_wait_marker):
+       Assert cancellation disabled.
+       (fork handling): Disable cancellation, fix comment.
+       (GC_pthread_create): Disable cancellation.
+       (GC_unregister_my_thread): Disable cancellation.
+       * Makefile.direct: Document NO_CANCEL_SAFE.
+
+2009-09-25  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile: Remove outdated file (Makefile.direct should be used
+       instead).
+
+2009-09-25  Ivan Maidanski <ivmai@mail.ru>
+
+       * win32_threads.c: Reformat the code (make indentation and
+       opening bracket style uniform across the file; wrap long code and
+       comment lines).
+
+2009-09-25  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc.h (GC_use_DllMain): Refine (and reformat) the
+       comment.
+
+2009-09-25  Ivan Maidanski <ivmai@mail.ru> (really mostly Petter Urkedal)
+
+       * configure.ac: Add documentation to AC_DEFINE for GC_THREADS and
+       EMPTY_GETENV_RESULTS.
+       * configure.ac: Fix a typo.
+       * Makefile.am: Ditto.
+
+2009-09-25  Ivan Maidanski <ivmai@mail.ru>
+
+       * checksums.c (GC_checksum, GC_update_check_page): Remove
+       "register" keyword in local variable declarations (for the code
+       used only for debugging or which is not time-critical).
+       * dbg_mlc.c (GC_has_other_debug_info, GC_store_debug_info,
+       GC_store_debug_info_inner, GC_check_annotated_obj, GC_print_obj,
+       GC_print_smashed_obj, GC_debug_end_stubborn_change,
+       GC_debug_invoke_finalizer): Ditto.
+       * dyn_load.c (GC_register_dynamic_libraries): Ditto.
+       * mallocx.c (GC_realloc): Ditto.
+       * mark_rts.c (GC_print_static_roots, GC_is_static_root,
+       GC_clear_roots): Ditto.
+       * misc.c (GC_write): Ditto.
+       * os_dep.c (GC_print_callers): Ditto.
+       * dyn_load.c (GC_register_dynamic_libraries): Rename "i" local
+       variable to "j" for the nested loop (just not to hide the similar
+       variable in the outer one).
+       * mark_rts.c (GC_print_static_roots): Output an error message
+       using GC_err_printf() (instead of GC_printf()).
+
+2009-09-25  Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
+
+       * configure.ac: Move include flag from ${INCLUDE} ...
+       * Makefile.am: ... to AM_CPPFLAGS and also add the build directory.
+       * configure.ac: Call AM_CONFIG_HEADER([include/private/config.h]).
+       * configure.ac: Add documentation to all AC_DEFINE either directly
+       or using AH_TEMPLATE.
+
+2009-09-24  Ivan Maidanski <ivmai@mail.ru>
+
+       * win32_threads.c (GC_waitForSingleObjectInfinite): New static
+       function (only if GC_WINMAIN_REDIRECT).
+       * win32_threads.c (WinMain): Call GC_waitForSingleObjectInfinite()
+       thru GC_do_blocking() instead of calling WaitForSingleObject()
+       directly.
+
+2009-09-24  Ivan Maidanski <ivmai@mail.ru>
+
+       * pthread_support.c (start_mark_threads): Refine printed message.
+       * win32_threads.c (GC_thr_init): Ditto.
+       * win32_threads.c: Reformat some code pieces (wrap too long code
+       lines).
+
+2009-09-24  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai145.diff)
+
+       * Makefile.direct (GC_WINMAIN_REDIRECT): Add the comment for.
+       * Makefile.direct (NO_GETENV): Update the comment.
+       * include/gc.h (GC_WINMAIN_WINCE_LPTSTR): Remove macro.
+       * include/gc.h (GC_WinMain): Remove declaration.
+       * include/gc.h (WinMain): Define (as GC_WinMain) if and only if
+       GC_WINMAIN_REDIRECT.
+       * tests/test.c (GC_COND_INIT): Define as GC_INIT() also in case of
+       WinCE target unless GC_WINMAIN_REDIRECT is defined.
+       * tests/test.c (WINMAIN_LPTSTR): New macro.
+       * tests/test.c (WinMain): Use WINMAIN_LPTSTR instead of LP[W]STR
+       and GC_WINMAIN_WINCE_LPTSTR.
+       * win32_threads.c (start_mark_threads): Add the comment for
+       MARK_THREAD_STACK_SIZE.
+       * win32_threads.c: Recognize new GC_WINMAIN_REDIRECT macro.
+       * win32_threads.c (WINMAIN_LPTSTR, WINMAIN_THREAD_STACK_SIZE): New
+       macro (only if GC_WINMAIN_REDIRECT).
+       * win32_threads.c: Undefine WinMain macro if GC_WINMAIN_REDIRECT.
+       * win32_threads.c (GC_WinMain): Add prototype (only if
+       GC_WINMAIN_REDIRECT).
+       * win32_threads.c (main_thread_args, WinMain): Rename
+       GC_WINMAIN_WINCE_LPTSTR to WINMAIN_LPTSTR.
+       * win32_threads.c (WinMain): Call GC_INIT() instead of GC_init();
+       use WINMAIN_THREAD_STACK_SIZE.
+       * win32_threads.c (WinMain): Call GC_deinit() and
+       DeleteCriticalSection() only if WinCE; add FIXME.
+
+2009-09-24  Ivan Maidanski <ivmai@mail.ru>
+
+       * os_dep.c (GC_get_main_stack_base): add assertion for mem_base
+       value returned by GC_get_stack_base().
+
+2009-09-23  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai150.diff)
+
+       * Makefile.direct (MUNMAP_THRESHOLD, GC_FORCE_UNMAP_ON_GCOLLECT):
+       Add the comment for.
+       * alloc.c (GC_unmap_threshold, GC_force_unmap_on_gcollect):
+       Declare external variable (only if USE_MUNMAP).
+       * alloc.c (GC_try_to_collect): Temporarily set GC_unmap_threshold
+       value to 1 if GC_force_unmap_on_gcollect and restore it before
+       unlocking (only if USE_MUNMAP).
+       * doc/README.environment (GC_FORCE_UNMAP_ON_GCOLLECT): Add
+       information for.
+       * include/gc.h (GC_set_force_unmap_on_gcollect,
+       GC_get_force_unmap_on_gcollect): New public function prototype.
+       * include/gc.h (GC_FORCE_UNMAP_ON_GCOLLECT): New macro is
+       recognized.
+       * misc.c (GC_FORCE_UNMAP_ON_GCOLLECT): Ditto.
+       * include/gc.h (GC_INIT_CONF_FORCE_UNMAP_ON_GCOLLECT): New
+       internal macro (used by GC_INIT only).
+       * misc.c (GC_force_unmap_on_gcollect): New global variable.
+       * misc.c (GC_init): Recognize new "GC_FORCE_UNMAP_ON_GCOLLECT"
+       environment variable (and set GC_force_unmap_on_gcollect).
+       * misc.c (GC_set_force_unmap_on_gcollect,
+       GC_get_force_unmap_on_gcollect): New public function.
+       * tests/test.c (window_proc): Call GC_set_force_unmap_on_gcollect
+       to force the mode on if WM_HIBERNATE; restore the mode after
+       GC_gcollect().
+
+2009-09-23  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile.direct (LARGE_CONFIG): Update information.
+       * include/gc.h (GC_stop_func): Refine the comment.
+
+2009-09-21  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure.ac: Use EMPTY_GETENV_RESULTS instead of NO_GETENV for
+       Win32 (workaround for Wine bug).
+
+2009-09-20  Ivan Maidanski <ivmai@mail.ru>
+
+       * allchblk.c (GC_freehblk): Adjust local variables indentation.
+       * mallocx.c (GC_generic_malloc_many): Ditto.
+       * typd_mlc.c (GC_malloc_explicitly_typed_ignore_off_page,
+       GC_calloc_explicitly_typed): Ditto.
+       * typd_mlc.c (GC_make_array_descriptor): Remove unnecessary
+       brackets.
+
+2009-09-20  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure.ac: Replace GC_WIN32_THREADS with GC_THREADS.
+       * configure.ac: Process enable_parallel_mark option for Cygwin and
+       Win32; define THREAD_LOCAL_ALLOC for Win32.
+
+2009-09-20  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gc_priv.h: Define AO_ASSUME_WINDOWS98 if
+       PARALLEL_MARK (required for VC++ x86).
+
+2009-09-19  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai149.diff)
+
+       * dbg_mlc.c (GC_generate_random_backtrace): Call
+       GC_try_to_collect(GC_never_stop_func) instead of GC_gcollect();
+       if GC is disabled then print error message and return.
+       * include/gc.h (GC_try_to_collect): Refine the comment.
+       * include/private/gc_priv.h (GC_never_stop_func): Fix return type;
+       refine the comment.
+
+2009-09-19  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai147.diff)
+
+       * add_gc_prefix.c: Move the file to the new "extra" directory.
+       * AmigaOS.c: Ditto.
+       * gcname.c: Ditto.
+       * if_mach.c: Ditto.
+       * if_not_there.c: Ditto.
+       * MacOS.c: Ditto.
+       * msvc_dbg.c: Ditto.
+       * setjmp_t.c: Ditto.
+       * threadlibs.c: Ditto.
+       * EMX_MAKEFILE: Prepend setjmp_t.c with "extra" directory.
+       * Makefile: Prepend AmigaOS.c, MacOS.c, add_gc_prefix.c, gcname.c,
+       if_mach.c, if_not_there.c, msvc_dbg.c, setjmp_t.c, threadlibs.c
+       with "extra" directory.
+       * Makefile.am: Ditto.
+       * Makefile.direct: Ditto.
+       * Makefile.dj: Ditto.
+       * Makefile.in: Ditto.
+       * NT_MAKEFILE: Prepend msvc_dbg.obj with "extra" directory.
+       * NT_STATIC_THREADS_MAKEFILE: Ditto.
+       * NT_X64_STATIC_THREADS_MAKEFILE: Ditto.
+       * NT_X64_THREADS_MAKEFILE: Ditto.
+       * NT_THREADS_MAKEFILE: Prepend msvc_dbg.c with "extra" directory.
+       * gc.mak: Ditto.
+       * PCR-Makefile: Prepend if_mach.c, if_not_there.c with "extra"
+       directory.
+       * SMakefile.amiga: Prepend AmigaOS.c, setjmp_t.c with "extra"
+       directory.
+       * doc/simple_example.html: Update for threadlibs.c.
+       * os_dep.c: Prepend included AmigaOS.c with "extra" directory.
+
+2009-09-19  Ivan Maidanski <ivmai@mail.ru>
+
+       * allchblk.c: Expand all tabs to spaces; remove trailing spaces at
+       EOLn; remove multiple trailing blank lines.
+       * mark.c: Ditto.
+       * mark_rts.c: Ditto.
+       * pthread_stop_world.c: Ditto.
+       * win32_threads.c: Ditto.
+       * include/gc.h: Ditto.
+       * include/private/gc_priv.h: Ditto.
+       * pthread_stop_world.c: Add copyright header.
+       * include/gc.h: Reformat some comments.
+
+2009-09-19  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai130a.diff, ivmai130b.diff - superseding diff44, diff69)
+
+       * include/gc.h (GC_do_blocking, GC_call_with_gc_active): New
+       function prototype.
+       * include/private/gc_priv.h (STOP_WORLD): Replace a no-op (for the
+       single-threaded case) with an assertion check for the state to be
+       not a "do-blocking" one.
+       * include/private/gc_priv.h (blocking_data): Move the structure
+       definition from pthread_support.c; change "fn" return type to void
+       pointer.
+       * include/private/gc_priv.h (GC_activation_frame_s): New structure
+       type.
+       * include/private/gc_priv.h (GC_push_all_stack_frames): New
+       function declaration (only if THREADS).
+       * include/private/gc_priv.h (GC_world_stopped): Don't declare
+       unless THREADS.
+       * include/private/gc_priv.h (GC_blocked_sp,
+       GC_activation_frame_s): New declaration (only if not THREADS).
+       * include/private/gc_priv.h (GC_push_all_register_frames): New
+       function declaration (only for IA-64).
+       * include/private/gc_priv.h (NURSERY, GC_push_proc): Remove
+       obsolete (unused) symbols.
+       * include/private/gc_priv.h (GC_push_all_stack_partially_eager):
+       Remove declaration (since it is static now).
+       * mark_rts.c (GC_push_all_stack_partially_eager): Move from mark.c
+       (for code locality) and make STATIC.
+       * mark_rts.c (GC_push_all_register_frames): New function (only for
+       IA-64).
+       * mark_rts.c (GC_push_all_stack_frames): New function (only if
+       THREADS).
+       * mark_rts.c (GC_add_trace_entry): New function prototype (used by
+       GC_push_all_stack_partially_eager(), only if TRACE_BUF).
+       * mark_rts.c (GC_push_all_stack_part_eager_frames): New function.
+       * mar_rts.c (GC_save_regs_ret_val): Move the declaration out of a
+       function body (only for IA-64).
+       * mark_rts.c (GC_push_current_stack): Call
+       GC_push_all_stack_part_eager_frames() instead of
+       GC_push_all_stack_partially_eager().
+       * mark_rts.c (GC_push_current_stack): Call
+       GC_push_all_register_frames() instead of GC_push_all_eager() for
+       IA-64 backing store.
+       * misc.c (GC_do_blocking_inner): Declare function (if THREADS
+       only).
+       * misc.c (GC_blocked_sp, GC_blocked_register_sp,
+       GC_activation_frame): New global variables (only if not THREADS).
+       * misc.c (GC_call_with_gc_active, GC_do_blocking_inner): New API
+       function (only if not THREADS).
+       * misc.c (GC_do_blocking): Move the function from
+       pthread_support.c.
+       * include/private/pthread_support.h (GC_Thread_Rep): Add
+       "activation_frame" field.
+       * pthread_stop_world.c (GC_push_all_stacks): Call
+       GC_push_all_stack_frames() and GC_push_all_register_frames instead
+       of GC_push_all_stack() and/or GC_push_all_eager(); don't check for
+       STACK_GROWS_UP here.
+       * pthread_support.c (GC_do_blocking_inner): Remove "static"; store
+       "fn" result back to "client_data" field.
+       * pthread_support.c (GC_call_with_gc_active): New API function.
+       * win32_threads.c (GC_call_with_gc_active): Ditto.
+       * win32_threads.c (GC_Thread_Rep): Add "thread_blocked_sp" and
+       "activation_frame" fields.
+       * win32_threads.c (GC_new_thread): Add assertion checking for
+       thread_blocked_sp is NULL.
+       * win32_threads.c (GC_do_blocking_inner): New function.
+       * win32_threads.c (GC_stop_world): Don't suspend a thread if its
+       thread_blocked_sp is non-NULL.
+       * win32_threads.c (GC_push_stack_for): Use thread
+       "activation_frame" (if non-NULL); use "thread_blocked_sp" if
+       non-NULL (instead of calling GetThreadContext()); "UNPROTECT" the
+       thread before modifying its last_stack_min; call
+       GC_push_all_stack_frames() instead of GC_push_all_stack(); update
+       the comments.
+
+2009-09-19  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai129.diff - superseding diff47)
+
+       * alloc.c (GC_default_stop_func): New static variable (initialized
+       to GC_never_stop_func).
+       * alloc.c (GC_set_stop_func, GC_get_stop_func): New function.
+       * alloc.c (GC_timeout_stop_func): Define as GC_default_stop_func
+       (instead of GC_never_stop_func) if SMALL_CONFIG (or NO_CLOCK),
+       else call GC_default_stop_func() before getting "current_time".
+       * alloc.c (GC_maybe_gc): Expand GC_gcollect_inner() macro (for
+       FIXME comment).
+       * alloc.c (GC_maybe_gc, GC_collect_a_little_inner): add FIXME for
+       replacing GC_never_stop_func with GC_default_stop_func (if
+       possible).
+       * alloc.c (GC_gcollect): Use GC_default_stop_func.
+       * alloc.c (GC_collect_or_expand): Use GC_default_stop_func
+       (instead of GC_never_stop_func) unless it is trigged due to out of
+       memory; don't increment GC_fail_count and don't output warning
+       (before trying to collect again) in case the collection has been
+       interrupted (by GC_default_stop_func) and the heap expansion has
+       failed too.
+       * include/gc.h (GC_set_stop_func, GC_get_stop_func): New function
+       prototypes.
+
+2009-09-19  Ivan Maidanski <ivmai@mail.ru>
+
+       * os_dep.c (GC_get_stack_base): Add FIXME; add assertion for
+       GC_get_writable_length() result.
+
+2009-09-18  Ivan Maidanski <ivmai@mail.ru> (really Ludovic Courtes)
+
+       * configure.ac: Don't use -lpthread -ldl for Cygwin.
+
+2009-09-18  Ivan Maidanski <ivmai@mail.ru>
+
+       * NT_THREADS_MAKEFILE: Make it back equal to gc.mak.
+
+2009-09-18  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai142.diff)
+
+       * include/private/gcconfig.h (GWW_VDB): Undefine if
+       USE_GLOBAL_ALLOC (since incompatible).
+       * os_dep.c (GetWriteWatch_alloc_flag): Define as 0 unless GWW_VDB
+       is defined.
+       * os_dep.c (GC_unmap_threshold): Declare (for use in
+       GC_init_win32) if USE_MUNMAP.
+       * os_dep.c (GC_init_win32): Turn off memory unmapping if
+       GlobalAlloc() is used.
+       * os_dep.c (GC_win32_get_mem): Define and use new
+       VIRTUAL_ALLOC_PAD macro; don't waste a extra memory page unless
+       MPROTECT_VDB is in use.
+
+2009-09-17  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile: Replace "version.h" with "include/gc_version.h".
+       * include/gc_version.h: Ditto.
+
+2009-09-17  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_collect_or_expand): Output heap size in WARN()
+       (before returning FALSE) for convenience.
+
+2009-09-17  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai139.diff)
+
+       * allchblk.c (GC_allochblk_nth): Use GC_PRIdPTR in WARN() format
+       string.
+       * pthread_support.c (start_mark_threads, GC_thr_init): Ditto.
+       * win32_threads.c (GC_delete_thread): Ditto.
+       * include/private/gc_priv.h (GC_PRIdPTR): New macro.
+       * pthread_stop_world.c (GC_suspend_handler_inner): Remove
+       unnecessary cast for WARN argument.
+       * pthread_support.c (start_mark_threads): if pthread_create()
+       failed then don't try to create other marker threads and (after
+       printing a warning) adjust GC_markers and GC_parallel values; log
+       GC_markers value (possibly adjusted) after that.
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai140.diff)
+
+       * win32_threads.c (start_mark_threads): if pthread_create() is
+       failed then don't try to create other marker threads and (after
+       printing a warning) adjust GC_markers and GC_parallel values.
+       * win32_threads.c (mark_mutex_event, builder_cv, mark_cv): Move
+       the definition upper (to be visible in start_mark_threads()).
+       * win32_threads.c (start_mark_threads): if CreateThread() or
+       _beginthreadex() is failed then don't try to create other marker
+       threads and (after printing a warning) adjust GC_markers,
+       GC_parallel values, and destroy the event objects (either only
+       some for the uncreated threads if DONT_USE_SIGNALANDWAIT or all if
+       not a single thread is created).
+       * win32_threads.c (GC_thr_init): Log GC_markers value (possibly
+       adjusted) after start_mark_threads() call.
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile.am: Back remove "GC_" prefix for PTHREADS,
+       DARWIN_THREADS, WIN32_THREADS (for configure.ac).
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+
+       * ChangeLog: Remove trailing spaces at EOLn; insert blank lines
+       where missed.
+       * doc/README: Expand all tabs to spaces; remove trailing spaces at
+       EOLn; remove multiple trailing blank lines.
+       * doc/README.autoconf: Ditto.
+       * doc/README.DGUX386: Ditto.
+       * doc/README.environment: Ditto.
+       * doc/README.macros: Ditto.
+       * doc/README.win32: Ditto.
+       * tests/test.c: Ditto.
+       * tests/test_cpp.cc: Ditto.
+       * backgraph.c: Ditto.
+       * blacklst.c: Ditto.
+       * checksums.c: Ditto.
+       * darwin_stop_world.c: Ditto.
+       * dbg_mlc.c: Ditto.
+       * dyn_load.c: Ditto.
+       * finalize.c: Ditto.
+       * gc_dlopen.c: Ditto.
+       * gcj_mlc.c: Ditto.
+       * headers.c: Ditto.
+       * mach_dep.c: Ditto.
+       * malloc.c: Ditto.
+       * mallocx.c: Ditto.
+       * new_hblk.c: Ditto.
+       * obj_map.c: Ditto.
+       * ptr_chck.c: Ditto.
+       * real_malloc.c: Ditto.
+       * reclaim.c: Ditto.
+       * stubborn.c: Ditto.
+       * thread_local_alloc.c: Ditto.
+       * typd_mlc.c: Ditto.
+       * gc_cpp.cc: Ditto.
+       * include/gc_allocator.h: Ditto.
+       * include/gc_backptr.h: Ditto.
+       * include/gc_config_macros.h: Ditto.
+       * include/gc_cpp.h: Ditto.
+       * include/gc_gcj.h: Ditto.
+       * include/gc_inline.h: Ditto.
+       * include/gc_mark.h: Ditto.
+       * include/gc_pthread_redirects.h: Ditto.
+       * include/gc_typed.h: Ditto.
+       * include/gc_version.h: Ditto.
+       * include/javaxfc.h: Ditto.
+       * include/new_gc_alloc.h: Ditto.
+       * include/private/darwin_semaphore.h: Ditto.
+       * include/private/dbg_mlc.h: Ditto.
+       * include/private/gc_hdrs.h: Ditto.
+       * include/private/gc_locks.h: Ditto.
+       * include/private/gc_pmark.h: Ditto.
+       * include/private/gcconfig.h: Ditto.
+       * include/private/pthread_support.h: Ditto.
+       * include/private/thread_local_alloc.h: Ditto.
+       * darwin_stop_world.c: Add copyright header.
+       * include/gc_backptr.h: Ditto.
+       * include/gc_config_macros.h: Ditto.
+       * include/gc_pthread_redirects.h: Ditto.
+       * include/gc_version.h: Ditto.
+       * include/javaxfc.h: Ditto.
+       * include/private/darwin_semaphore.h: Ditto.
+       * include/private/pthread_support.h: Ditto.
+       * gc_cpp.cc: Make copyright header uniform across the package.
+       * include/gc_cpp.h: Ditto.
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
+       (gc_config_h_6a.patch with a minor correction)
+
+       * include/private/gc_priv.h: Change include of config.h to
+       private/config.h.
+       * include/private/gc_pmark.h: Ditto.
+       * gc_cpp.cc: Ditto.
+       * tests/test.c: Ditto.
+       * tests/test_cpp.cc: Include private/config.h (if HAVE_CONFIG_H);
+       undefine GC_BUILD.
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai128.diff - superseding diff62, diff66 partly)
+
+       * finalize.c (GC_general_register_disappearing_link): Return
+       GC_SUCCESS, GC_DUPLICATE, GC_NO_MEMORY (instead of 0, 1 and 2,
+       respectively).
+       * include/gc.h (GC_NO_MEMORY): New macro (defined as 2).
+       * include/gc.h (GC_register_disappearing_link,
+       GC_general_register_disappearing_link): Update the comment.
+       * typd_mlc.c (GC_calloc_explicitly_typed): Use GC_NO_MEMORY macro.
+       * finalize.c (GC_general_register_disappearing_link,
+       GC_register_finalizer_inner): Recalculate the hash table index
+       after GC_oom_fn succeeded (since the table may grow while not
+       holding the lock) and check again that the entry is still not in
+       the table (free the unused entry otherwise unless DBG_HDRS_ALL).
+       * finalize.c (GC_register_finalizer_inner): Initialize "hhdr"
+       local variable (to prevent a compiler warning).
+       * finalize.c (GC_register_finalizer_inner): Don't modify the data
+       pointed by "ocd" and "ofn" in GC_register_finalizer_inner() failed
+       (due to out of memory).
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai124.diff - superseding diff67 partly)
+
+       * alloc.c (GC_set_fl_marks, GC_clear_fl_marks): Transform loop to
+       suppress compiler "variable might be uninitialized" warnings.
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai138.diff)
+
+       * Makefile.direct (DONT_USE_SIGNALANDWAIT): Add the comment for.
+       * win32_threads.c (DONT_USE_SIGNALANDWAIT): Always define for
+       WinCE.
+       * win32_threads.c (THREAD_HANDLE): Cast Id (of DWORD type) to
+       HANDLE thru word type (to avoid a compiler warning) for WinCE.
+       * win32_threads.c (GC_marker_cv, GC_marker_Id): New static array
+       (only if DONT_USE_SIGNALANDWAIT).
+       * win32_threads.c (start_mark_threads): Initialize GC_marker_Id
+       and GC_marker_cv for each helper thread (only if
+       DONT_USE_SIGNALANDWAIT).
+       * win32_threads.c (GC_mark_mutex_state): New static variable (only
+       if DONT_USE_SIGNALANDWAIT).
+       * win32_threads.c (GC_mark_mutex_waitcnt,
+       signalObjectAndWait_func): Don't define if DONT_USE_SIGNALANDWAIT.
+       * win32_threads.c (GC_acquire_mark_lock, GC_release_mark_lock):
+       Use InterlockedExchange() over GC_mark_mutex_state (instead of
+       AO_fetch_and_add()) if DONT_USE_SIGNALANDWAIT.
+       * win32_threads.c (GC_wait_marker, GC_notify_all_marker):
+       Implement wait/broadcast primitives using Win32 multiple events
+       (one for each marker thread) if DONT_USE_SIGNALANDWAIT (instead of
+       using Win32 SignalObjectAndWait).
+       * win32_threads.c (GC_thr_init): Don't declare hK32 local
+       variable, don't check for GC_wnt, and don't initialize
+       signalObjectAndWait_func if DONT_USE_SIGNALANDWAIT.
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai127.diff - superseding diff49)
+
+       * alloc.c (GC_finish_collection): Call GC_print_finalization_stats
+       if GC_print_stats (after getting "done_time").
+       * finalize.c (GC_old_dl_entries): New static variable (only if not
+       SMALL_CONFIG).
+       * finalize.c (GC_finalize): Save current GC_dl_entries value (only
+       if not SMALL_CONFIG).
+       * finalize.c (GC_print_finalization_stats): Define if and only if
+       not SMALL_CONFIG; use GC_old_dl_entries value; use GC_log_printf()
+       instead of GC_printf(); use "%lu" (instead of "%u") print format
+       specifier; use unsigned long type for "ready" counter (for LP64
+       targets).
+       * misc.c (GC_dump): No longer call GC_print_finalization_stats()
+       here (since it is called from GC_finish_collection()).
+       * misc.c (STACKBASE): Remove unused macro undef (for NOSYS and
+       ECOS).
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai134.diff)
+
+       * alloc.c (GC_expand_hp): Replace GC_init_inner() call with
+       GC_init() one.
+       * malloc.c (GC_alloc_large, GC_generic_malloc_inner): Ditto.
+       * mallocx.c (GC_generic_malloc_many): Ditto.
+       * misc.c (GC_enable_incremental): Ditto.
+       * alloc.c (GC_expand_hp): Update the comment.
+       * mark.c (GC_obj_kinds): Ditto.
+       * win32_threads.c (GC_allow_register_threads): Ditto.
+       * private/gc_priv.h (GC_init_inner): Remove function declaration.
+       * misc.c (GC_init_inner): Replace with public GC_init().
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai126.diff)
+
+       * gcj_mlc.c (GC_gcj_fake_mark_proc): New static function.
+       * gcj_mlc.c (GC_init_gcj_malloc): If mp is 0 then supply
+       GC_gcj_fake_mark_proc (aborting with the appropriate message)
+       instead.
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai125.diff)
+
+       * os_dep.c (GC_wince_get_mem): If VirtualAlloc() returns NULL (due
+       to out of memory) then don't increment GC_n_heap_bases and don't
+       call VirtualAlloc() again (with MEM_COMMIT).
+       * os_dep.c (GC_remap): Abort with a more informatory message if
+       VirtualAlloc() fails due to out of memory; update FIXME.
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai132.diff - superseding diff41a, diff64, diff84 partly)
+
+       * Makefile: Fix typo for msvc_dbg.c.
+       * Makefile.direct: Ditto.
+       * Makefile.am: Prefix PTHREADS, DARWIN_THREADS, WIN32_THREADS with
+       "GC_".
+       * Makefile.dj: Don't reference remove files (nursery.c,
+       gc_nursery.h, gc_copy_descr.h).
+       * NT_MAKEFILE: Don't define __STDC__ macro (no longer used).
+       * NT_STATIC_THREADS_MAKEFILE: Ditto.
+       * NT_THREADS_MAKEFILE: Ditto.
+       * NT_X64_STATIC_THREADS_MAKEFILE: Ditto.
+       * NT_X64_THREADS_MAKEFILE: Ditto.
+       * gc.mak: Ditto.
+       * NT_MAKEFILE: Remove unnecessary -DGC_BUILD (since it is always
+       defined in the source files).
+       * NT_THREADS_MAKEFILE: Ditto.
+       * NT_X64_THREADS_MAKEFILE: Ditto.
+       * gc.mak: Ditto.
+       * NT_X64_THREADS_MAKEFILE: Fix typo for -DGC_NOT_DLL.
+       * NT_STATIC_THREADS_MAKEFILE: Replace GC_WIN32_THREADS with
+       GC_THREADS.
+       * NT_THREADS_MAKEFILE: Ditto.
+       * NT_X64_STATIC_THREADS_MAKEFILE: Ditto.
+       * NT_X64_THREADS_MAKEFILE: Ditto.
+       * gc.mak: Ditto.
+       * NT_MAKEFILE: Define _CRT_SECURE_NO_DEPRECATE to suppress the
+       compiler warnings.
+       * NT_STATIC_THREADS_MAKEFILE: Ditto.
+       * NT_X64_STATIC_THREADS_MAKEFILE: Place -D_CRT_SECURE_NO_DEPRECATE
+       before "$*.C" (and "$*.CPP").
+       * NT_X64_THREADS_MAKEFILE: Ditto.
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai131.diff - superseding diff83, diff84 partly)
+
+       * doc/README.solaris2: Replace GC_SOLARIS_THREADS with GC_THREADS.
+       * doc/README.win32: Replace GC_WIN32_THREADS with GC_THREADS.
+       * doc/README.win64: Add info about mingw-w64; add note for VC++
+       warnings suppression.
+
+2009-09-15  Hans Boehm <Hans.Boehm@hp.com> (Mostly Juan Jose Garcia-Ripoll)
+       (Also similar to, but not the same as, Ivan's diff104_cvs)
+
+       * os_dep.c (GC_forward_exception): Fix logic in several places.
+       (OSX-specific)
+
+2009-09-15  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai137v2.diff)
+
+       * include/private/gc_priv.h (MAX_HEAP_SECTS): Guard with ifndef.
+
+2009-09-14  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai136v2.diff)
+
+       * Makefile.direct: Copy missing information for -DSHORT_DBG_HDRS
+       from Makefile.
+       * Makefile: Remove the information about "define arguments" (which
+       is incomplete and outdated compared to that in Makefile.direct);
+       add help reference to Makefile.direct.
+       * Makefile.dj: Ditto.
+
+2009-09-14  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai135.diff)
+
+       * alloc.c (world_stopped_total_time, world_stopped_total_divisor):
+       Replace "STATIC" with "static" in the definition (since the
+       symbols aren't prefixed with "GC_").
+       * win32_threads.c (marker_sp, marker_bsp, marker_last_stack_min,
+       start_mark_threads, mark_mutex, builder_cv, mark_cv,
+       mark_mutex_event, signalObjectAndWait_func, main_thread_start):
+       Ditto.
+       * pthread_support.c (GC_wait_builder): Define as STATIC.
+       * win32_threads.c (GC_wait_builder): Ditto.
+
+2009-09-14  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai133.diff)
+
+       * misc.c (GC_get_heap_size_inner, GC_get_free_bytes_inner): New
+       API function.
+       * include/gc_pmark.h (GC_get_heap_size_inner,
+       GC_get_free_bytes_inner): New function declaration.
+
+2009-09-10  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai121.diff)
+
+       * include/gc.h: Recognize __CEGCC__ (as a synonym for _WIN32_WCE).
+       * include/gc_config_macros.h: Ditto.
+       * include/gc.h (GC_MAXIMUM_HEAP_SIZE): Recognize new macro.
+       * include/gc.h (GC_INIT_CONF_MAXIMUM_HEAP_SIZE): New macro (for
+       internal use).
+       * include/gc_config_macros.h: Always include stddef.h if GCC.
+       * include/gc_config_macros.h (GC_API): Define for CeGCC in the
+       same way as for MinGW.
+       * include/gc_config_macros.h (GC_API): Group the definition for
+       all cases together (check for GC_DLL only once).
+       * include/gc_pthread_redirects.h: Group non-Darwin code together.
+       * tests/test.c: Recognize GC_PRINT_VERBOSE_STATS (only if GC_DLL).
+
+2009-09-10  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai120a.diff, ivmai120b.diff)
+
+       * Makefile.direct (GC_PTHREADS_PARAMARK, GC_IGNORE_GCJ_INFO,
+       GC_PRINT_VERBOSE_STATS, GC_DONT_EXPAND, GC_INITIAL_HEAP_SIZE,
+       GC_FREE_SPACE_DIVISOR, GC_TIME_LIMIT, GC_FULL_FREQ): Add the
+       comment for.
+       * misc.c (GC_init_inner): Recognize GC_PRINT_VERBOSE_STATS (new
+       macro).
+       * dyn_load.c (GC_wnt): Change definition to TRUE for WinCE; add
+       FIXME and the comment for WinCE.
+       * gcj_mlc.c (GC_init_gcj_malloc): Recognize GC_IGNORE_GCJ_INFO
+       (new macro).
+       * include/gc.h (GC_HAVE_BUILTIN_BACKTRACE): Don't define for VC++
+       WinCE (since backtrace() is unimplemented).
+       * include/private/gc_priv.h (GC_n_heap_bases): Remove declaration
+       (since static).
+       * os_dep.c (GC_n_heap_bases): Define as STATIC; move the
+       definition to be above GC_is_heap_base().
+       * include/private/gcconfig.h: Don't define NOSYS for WinCE on ARM
+       (both for MinGW and CeGCC toolchains).
+       * include/private/gcconfig.h: Recognize __CEGCC__ and
+       __MINGW32CE__ (as synonyms for __WIN32_WCE).
+       * include/private/gcconfig.h: If SH4 then don't set config
+       parameters for SH.
+       * include/private/thread_local_alloc.h (GC_key_create): Don't
+       abort on failures, just return -1 in these cases (this also
+       prevents compilation error for targets where ABORT is defined
+       indirectly as an inline assembler sequence).
+       * mark.c (WRAP_MARK_SOME): Also define for WinCE; add FIXME for
+       the GCC-based cross-compiler.
+       * mark.c (ext_ex_regn, mark_ex_handler): Don't define unless
+       WRAP_MARK_SOME is defined; define also for WinCE case; don't
+       check for _WIN64 (since WRAP_MARK_SOME is undefined for it).
+       * mark.c (GC_mark_some): Use __try/__except also for WinCE; update
+       the comment.
+       * misc.c: Include signal.h after gc_pmark.h included; check for
+       MSWINCE instead of _WIN32_WCE.
+       * misc.c (GC_init_inner): Remove duplicate GC_setpagesize() call.
+       * misc.c: Don't include <crtdbg.h> for WinCE targets.
+       * misc.c (GC_write): Define _MAX_PATH if undefined (workaround for
+       CeGCC toolchain).
+       * misc.c (GC_write): Use OutputDebugStringW() instead of
+       _CrtDbgReport() for WinCE targets.
+       * os_dep.c (GC_least_described_address): Define as STATIC.
+       * os_dep.c (GC_register_data_segments): Fix code indentation.
+       * os_dep.c (GC_wince_get_mem): Initialize "result" local variable
+       (to prevent a compiler warning).
+       * os_dep.c (GC_dirty_init): Add comment for WinCE target.
+       * tests/test.c: Don't include winbase.h directly if GCC for WinCE,
+       include assert.h instead.
+       * tests/test.c (tiny_reverse_test): Define and use
+       TINY_REVERSE_UPPER_VALUE macro (4 if VERY_SMALL_CONFIG else 10);
+       useful for WinCE.
+       * win32_threads.c (GC_Thread_Rep): Don't declare "handle" field
+       for WinCE (since thread Id is used as a "real" thread handle).
+       * win32_threads.c (THREAD_HANDLE): New macro.
+       * win32_threads.c (GC_register_my_thread_inner): Don't recognize
+       DONT_IMPORT_GETCURTHREAD anymore; don't record thread handle on
+       WinCE.
+       * Makefile.direct (DONT_IMPORT_GETCURTHREAD): Remove comment for.
+       * win32_threads.c (UNPROTECT, GC_fault_handler_lock): Don't check
+       for MSWINCE.
+       * win32_threads.c (GC_delete_gc_thread, GC_delete_thread): Don't
+       close thread handle on WinCE (since it's a thread Id).
+       * win32_threads.c (GC_suspend): Don't check for MSWINCE in the
+       MPROTECT-related code (for the case if MPROTECT_VDB would be
+       implemented for WinCE).
+       * win32_threads.c (GC_suspend, GC_start_world, GC_push_stack_for):
+       Use THREAD_HANDLE(t) to obtain thread handle.
+       * win32_threads.c (GC_PTHREADS_PARAMARK): New macro recognized;
+       implicitly define GC_PTHREADS_PARAMARK if GC_PTHREADS; include
+       pthread.h; define NUMERIC_THREAD_ID(id) if undefined yet; replace
+       GC_PTHREADS with GC_PTHREADS_PARAMARK where appropriate (for the
+       parallel mark support).
+       * win32_threads.c (start_mark_threads): Use int type for "i" local
+       variable (instead of "unsigned") to prevent a compiler warning.
+       * win32_threads.c (start_mark_threads): Don't check CreateThread()
+       result for -1; call CloseHandle() for the handle created by
+       CreateThread() (on WinCE); don't use errno (since errno.h is
+       missing on some targets like WinCE) when printing warning on a
+       marker thread creation failure.
+       * win32_threads.c (signalObjectAndWait_func): Define for WinCE.
+       * win32_threads.c (GC_wait_marker): Remove unnecessary assertion
+       for non-zero signalObjectAndWait_func (to make the code compilable
+       for WinCE).
+       * win32_threads.c (GC_thr_init): Allow PARALLEL_MARK for WinCE;
+       use GC_sysinfo to get processors count if WinCE; don't check for
+       SignalObjectAndWait() if WinCE; replace GC_PTHREADS with
+       GC_PTHREADS_PARAMARK.
+       * win32_threads.c (GC_thr_init): Recognize GC_MIN_MARKERS new
+       macro (useful for testing parallel marking on WinCE).
+       * win32_threads.c (GC_win32_start, main_thread_start): Define as
+       STATIC.
+       * win32_threads.c: Don't define main_thread_args,
+       main_thread_start(), WinMain() for WinCE if GC_DLL.
+       * win32_threads.c (WINCE_MAIN_STACK_SIZE): Remove useless macro
+       (since the stack size parameter is ignored on WinCE).
+       * win32_threads.c (main_thread_start): Remove forward declaration;
+       place its definition before WinMain() one.
+       * win32_threads.c (WinMain): Abort if GC_CreateThread() or
+       WaitForSingleObject() failed (for the main thread).
+
+2009-09-10  Ivan Maidanski <ivmai@mail.ru>
+       (diff118_cvs - superseding diff53)
+
+       * allchblk.c (MUNMAP_THRESHOLD): Move macro definition out of
+       a function.
+       * allchblk.c (GC_unmap_threshold): New global variable definition
+       (initialized to MUNMAP_THRESHOLD).
+       * allchblk.c (GC_unmap_old): Use GC_unmap_threshold instead of
+       MUNMAP_THRESHOLD; skip unmapping if GC_unmap_threshold is 0.
+       * doc/README.environment (GC_UNMAP_THRESHOLD): Add information.
+       * misc.c (GC_unmap_threshold): New variable declaration.
+       * misc.c (GC_init_inner): Recognize "GC_UNMAP_THRESHOLD"
+       environment variable to set GC_unmap_threshold value (only if
+       USE_MUNMAP).
+
+2009-09-10  Ivan Maidanski <ivmai@mail.ru>
+       (diff117)
+
+       * dbg_mlc.c (OFN_UNSET): New macro (to detect
+       GC_register_finalizer() failures).
+       * dbg_mlc.c (store_old): Add a check for register_finalizer()
+       failure caused by an out-of-memory event (leave *ofn and *ocd
+       unmodified in that case).
+       * dbg_mlc.c (GC_debug_register_finalizer,
+       GC_debug_register_finalizer_no_order,
+       GC_debug_register_finalizer_unreachable,
+       GC_debug_register_finalizer_ignore_self): Initialize my_old_fn
+       to OFN_UNSET; clear *ocd and *ofn for non-heap objects (the same
+       as in GC_register_finalizer_inner()).
+
+2009-09-10  Ivan Maidanski <ivmai@mail.ru>
+       (diff116a, diff116b, diff116c)
+
+       * Makefile.direct (GC_DLL): Add the comment for.
+       * doc/README.macros: Fix a typo.
+       * doc/README.macros (_DLL, GC_DLL, GC_NOT_DLL): Update info.
+       * doc/README.macros (__STDC__): Remove info.
+       * dbg_mlc.c (GC_get_back_ptr_info, GC_generate_random_heap_address,
+       GC_generate_random_valid_address, GC_print_backtrace,
+       GC_generate_random_backtrace, GC_register_describe_type_fn): Add
+       GC_API and GC_CALL to function definition.
+       * malloc.c (GC_generic_malloc): Ditto.
+       * mallocx.c (GC_incr_bytes_allocd, GC_incr_bytes_freed): Ditto.
+       * mark.c (GC_mark_and_push): Ditto.
+       * misc.c (GC_new_free_list_inner, GC_new_free_list,
+       GC_new_kind_inner, GC_new_kind, GC_new_proc_inner, GC_new_proc):
+       Ditto.
+       * include/gc_backptr.h (GC_get_back_ptr_info,
+       GC_generate_random_heap_address, GC_generate_random_valid_address,
+       GC_generate_random_backtrace, GC_print_backtrace): Add GC_API and
+       GC_CALL to function prototype.
+       * include/gc_mark.h (GC_mark_and_push, GC_new_free_list,
+       GC_new_free_list_inner, GC_new_kind, GC_new_kind_inner,
+       GC_new_proc, GC_new_proc_inner, GC_generic_malloc,
+       GC_register_describe_type_fn): Ditto.
+       * include/new_gc_alloc.h (GC_incr_bytes_allocd, GC_incr_mem_freed,
+       GC_generic_malloc_words_small): Ditto.
+       * gc_cpp.cc: Include "config.h" (if HAVE_CONFIG_H defined).
+       * include/private/gc_pmark.h: Ditto.
+       * include/private/gc_priv.h: Ditto.
+       * tests/test.c: Ditto.
+       * gc_cpp.cc: Define GC_BUILD.
+       * include/private/gc_pmark.h: Ditto.
+       * include/private/gc_priv.h: Ditto.
+       * gc_dlopen.c (WRAP_FUNC, REAL_FUNC): New macro.
+       * gc_dlopen.c (dlopen): Add GC_API to the wrapper function
+       definition.
+       * pthread_support.c (GC_pthread_create, GC_pthread_sigmask,
+       GC_pthread_join, GC_pthread_detach, pthread_sigmask, pthread_join,
+       pthread_detach, pthread_create): Ditto.
+       * win32_threads.c (GC_pthread_join, GC_pthread_create,
+       GC_pthread_sigmask, GC_pthread_detach): Ditto.
+       * gc_dlopen.c (dlopen): Use WRAP_FUNC and REAL_FUNC macros.
+       * include/gc_backptr.h: Include "gc.h".
+       * include/gc_backptr.h: Use extern "C" for the exported functions.
+       * include/gc_mark.h: Ditto.
+       * include/gc_config_macros.h (GC_THREADS): Define the macro if any
+       GC_XXX_THREADS is defined.
+       * include/gc_config_macros.h (_PTHREADS, _POSIX4A_DRAFT10_SOURCE):
+       Move the definitions below the place where GC_NETBSD_THREADS and
+       GC_DGUX386_THREADS are defined.
+       * include/gc_config_macros.h (GC_DLL): Don't define (even if _DLL
+       is defined) for GCC.
+       * include/gc_config_macros.h (GC_API): Define for Cygwin (in the
+       same way as for VC++); define for GCC v4+ (other than already
+       recognized MinGW/Cygwin) as a "default" visibility attribute if
+       GC_DLL is defined.
+       * include/gc_config_macros.h (GC_ATTR_MALLOC, GC_ATTR_ALLOC_SIZE):
+       New macro.
+       * include/gc.h (GC_malloc, GC_malloc_atomic, GC_strdup,
+       GC_malloc_uncollectable, GC_malloc_stubborn, GC_memalign,
+       GC_malloc_atomic_uncollectable, GC_malloc_ignore_off_page,
+       GC_malloc_atomic_ignore_off_page, GC_debug_malloc,
+       GC_debug_malloc_atomic, GC_debug_strdup,
+       GC_debug_malloc_uncollectable, GC_debug_malloc_stubborn,
+       GC_debug_malloc_ignore_off_page,
+       GC_debug_malloc_atomic_ignore_off_page,
+       GC_debug_malloc_replacement): Add GC_ATTR_MALLOC attribute.
+       * include/gc_gcj.h (GC_gcj_malloc, GC_debug_gcj_malloc,
+       GC_gcj_malloc_ignore_off_page): Ditto.
+       * include/gc.h (GC_malloc, GC_malloc_atomic,
+       GC_malloc_uncollectable, GC_malloc_stubborn,
+       GC_malloc_atomic_uncollectable, GC_malloc_ignore_off_page,
+       GC_malloc_atomic_ignore_off_page, GC_debug_malloc,
+       GC_debug_malloc_atomic, GC_debug_malloc_uncollectable,
+       GC_debug_malloc_stubborn, GC_debug_malloc_ignore_off_page,
+       GC_debug_malloc_atomic_ignore_off_page,
+       GC_debug_malloc_replacement: Add GC_ATTR_ALLOC_SIZE attribute
+       (for the first argument).
+       * include/gc_gcj.h (GC_gcj_malloc, GC_debug_gcj_malloc,
+       GC_gcj_malloc_ignore_off_page): Ditto.
+       * include/gc.h (GC_memalign, GC_realloc, GC_debug_realloc,
+       GC_debug_realloc_replacement): Add GC_ATTR_ALLOC_SIZE attribute
+       (for the second argument).
+       * include/gc.h (GC_malloc, GC_malloc_atomic, GC_strdup,
+       GC_malloc_uncollectable, GC_malloc_stubborn, GC_memalign,
+       GC_malloc_atomic_uncollectable, GC_free, GC_base, GC_size,
+       GC_realloc, GC_expand_hp, GC_set_max_heap_size,
+       GC_exclude_static_roots, GC_add_roots, GC_remove_roots,
+       GC_register_displacement, GC_debug_register_displacement,
+       GC_try_to_collect, GC_malloc_ignore_off_page,
+       GC_malloc_atomic_ignore_off_page, GC_debug_malloc,
+       GC_debug_malloc_atomic, GC_debug_strdup,
+       GC_debug_malloc_uncollectable, GC_debug_malloc_stubborn,
+       GC_debug_malloc_ignore_off_page,
+       GC_debug_malloc_atomic_ignore_off_page, GC_debug_free,
+       GC_debug_realloc, GC_debug_malloc_replacement,
+       GC_debug_realloc_replacement, GC_finalization_proc,
+       GC_register_finalizer, GC_debug_register_finalizer,
+       GC_register_finalizer_ignore_self,
+       GC_debug_register_finalizer_ignore_self,
+       GC_register_finalizer_no_order,
+       GC_debug_register_finalizer_no_order,
+       GC_register_finalizer_unreachable,
+       GC_debug_register_finalizer_unreachable,
+       GC_register_disappearing_link,
+       GC_general_register_disappearing_link,
+       GC_unregister_disappearing_link, GC_noop1, GC_warn_proc,
+       GC_set_warn_proc, GC_ignore_warn_proc, GC_fn_type,
+       GC_call_with_alloc_lock, GC_stack_base_func,
+       GC_call_with_stack_base, GC_same_obj, GC_pre_incr, GC_post_incr,
+       GC_is_visible, GC_is_valid_displacement, GC_same_obj_print_proc,
+       GC_is_valid_displacement_print_proc, GC_is_visible_print_proc,
+       GC_malloc_many, GC_CreateThread, GC_beginthreadex,
+       GC_endthreadex): Comment out (or remove if single and meaningless)
+       function argument names (to avoid identifiers out of the name
+       space).
+       * include/gc_gcj.h (GC_init_gcj_malloc, GC_gcj_malloc,
+       GC_debug_gcj_malloc, GC_gcj_malloc_ignore_off_page): Ditto.
+       * include/gc.h (GC_try_to_collect): Update the comment.
+       * include/gc.h (GC_size, GC_register_my_thread): Add const
+       qualifier for the argument referent.
+       * misc.c (GC_size): Ditto.
+       * pthread_support.c (GC_register_my_thread_inner,
+       GC_register_my_thread): Ditto.
+       * win32_threads.c (GC_register_my_thread_inner,
+       GC_register_my_thread): Ditto.
+       * include/gc.h (GC_INIT_CONF_ROOTS): New macro for internal use
+       (define instead of GC_INIT() for Cygwin and AIX).
+       * include/gc.h (GC_DONT_EXPAND, GC_MAX_RETRIES,
+       GC_FREE_SPACE_DIVISOR, GC_FULL_FREQ, GC_TIME_LIMIT, GC_IGNORE_WARN,
+       GC_INITIAL_HEAP_SIZE): Recognize new macro.
+       * include/gc.h (GC_INIT_CONF_DONT_EXPAND, GC_INIT_CONF_MAX_RETRIES,
+       GC_INIT_CONF_FREE_SPACE_DIVISOR, GC_INIT_CONF_FULL_FREQ,
+       GC_INIT_CONF_TIME_LIMIT, GC_INIT_CONF_IGNORE_WARN,
+       GC_INIT_CONF_INITIAL_HEAP_SIZE): New macro for internal use.
+       * include/gc.h (GC_INIT): Use GC_INIT_CONF_XXX macros.
+       * include/gc_mark.h: Prefix GC_H with '_'.
+       * include/gc_mark.h (GC_least_plausible_heap_addr,
+       GC_greatest_plausible_heap_addr, GC_debug_header_size): Use GC_API
+       for the public variable declaration.
+       * include/new_gc_alloc.h (GC_objfreelist_ptr, GC_aobjfreelist_ptr,
+       GC_uobjfreelist_ptr, GC_auobjfreelist_ptr): Ditto.
+       * include/gc_pthread_redirects.h (GC_pthread_create,
+       GC_pthread_sigmask, GC_dlopen, GC_pthread_join, GC_pthread_detach):
+       Use GC_API for the wrapper prototype.
+       * include/gc_pthread_redirects.h (pthread_create, pthread_join,
+       pthread_detach, pthread_sigmask, dlopen): Undefine unconditionally
+       before redirecting.
+       * include/new_gc_alloc.h: Replace GC_incr_mem_freed() with
+       GC_incr_bytes_freed(); remove FIXME.
+       * include/private/gc_priv.h (GC_make_closure,
+       GC_debug_invoke_finalizer, GC_noop): Remove GC_API for the private
+       function.
+       * tests/test.c (GC_print_stats): Handle GC_DLL case regardless of
+       the target.
+
+2009-09-10  Ivan Maidanski <ivmai@mail.ru>
+       (diff115)
+
+       * finalize.c (GC_general_register_disappearing_link,
+       GC_register_finalizer_inner): Remove unnecessary "ifdef THREADS"
+       guard for LOCK/UNLOCK().
+       * finalize.c (GC_general_register_disappearing_link,
+       GC_register_finalizer_inner): Get GC_oom_fn value before releasing
+       the lock (to prevent data races).
+       * gcj_mlc.c (GC_gcj_malloc, GC_debug_gcj_malloc,
+       GC_gcj_malloc_ignore_off_page): Ditto.
+       * mallocx.c (GC_generic_malloc_ignore_off_page): Ditto.
+       * include/gc_inline.h (GC_FAST_MALLOC_GRANS): Use GC_get_oom_fn()
+       instead of GC_oom_fn (to prevent data races).
+       * malloc.c (GC_generic_malloc): Ditto.
+       * mallocx.c (GC_memalign): Ditto.
+       * pthread_support.c (pthread_create): Ditto.
+       * gcj_mlc.c (maybe_finalize): Acquire the lock before setting
+       last_finalized_no value to prevent data races.
+       * include/gc.h (GC_gc_no, GC_get_gc_no, GC_oom_fn, GC_set_oom_fn,
+       GC_set_find_leak, GC_set_finalize_on_demand,
+       GC_set_java_finalization, GC_set_finalizer_notifier,
+       GC_set_dont_expand, GC_set_full_freq, GC_set_non_gc_bytes,
+       GC_set_no_dls, GC_set_free_space_divisor, GC_set_max_retries,
+       GC_set_dont_precollect, GC_set_time_limit, GC_warn_proc): Refine
+       the comment.
+       * misc.c (GC_set_oom_fn): Ditto.
+       * include/gc.h (GC_general_register_disappearing_link): Refine the
+       comment (replace "soft" word with "weak").
+       * misc.c (GC_oom_fn, GC_get_gc_no, GC_get_parallel,
+       GC_set_finalizer_notifier, GC_set_find_leak): Add the comment.
+       * misc.c (GC_set_oom_fn, GC_get_oom_fn, GC_set_finalizer_notifier,
+       GC_get_finalizer_notifier): Use LOCK/UNLOCK to prevent data races.
+
+2009-09-10  Ivan Maidanski <ivmai@mail.ru>
+       (diff114a, diff114b, diff114c)
+
+       * dbg_mlc.c: Guard include <errno.h> with ifndef MSWINCE; include
+       "private/dbg_mlc.h" before it.
+       * malloc.c: Ditto.
+       * dbg_mlc.c (GC_debug_strdup): Use memcpy() instead of strcpy()
+       for WinCE (since deprecated); evaluate strlen() only once; don't
+       set errno for WinCE.
+       * malloc.c (GC_strdup): Ditto.
+       * dyn_load.c (GC_wnt): Define as macro (FALSE) for WinCE.
+       * include/gc.h (GC_unregister_my_thread): Refine the comment.
+       * include/gc.h (GC_uintptr_t, GC_beginthreadex, GC_endthreadex):
+       Don't declare for WinCE.
+       * include/gc.h (GC_WINMAIN_WINCE_LPTSTR): New macro (WinCE only).
+       * include/gc.h (GC_WinMain): Remove GC_API.
+       * include/gc.h (GC_WinMain): Use GC_WINMAIN_WINCE_LPTSTR for
+       lpCmdLine.
+       * tests/test.c (GC_WinMain): Ditto.
+       * win32_threads.c (main_thread_args, GC_WinMain): Ditto.
+       * include/gc_config_macros.h (ptrdiff_t): Guard with
+       ifndef _PTRDIFF_T_DEFINED; define _PTRDIFF_T_DEFINED macro.
+       * include/private/gc_locks.h: Guard include "atomic_ops.h" with
+       ifdef GC_PTHREADS (and not GC_WIN32_THREADS).
+       * mark.c: Include "atomic_ops.h" if PARALLEL_MARK.
+       * thread_local_alloc.c: Include "atomic_ops.h" if GC_GCJ_SUPPORT.
+       * win32_threads.c: Include "atomic_ops.h" if MPROTECT_VDB.
+       * include/private/gc_locks.h: Use include "atomic_ops.h" instead
+       of include <atomic_ops.h>.
+       * include/private/gc_priv.h: Ditto.
+       * include/private/gc_locks.h (GC_allocate_ml, GC_need_to_lock):
+       Don't export (replace GC_API to "extern").
+       * win32_threads.c (GC_allocate_ml): Don't export.
+       * include/private/gc_priv.h (DebugBreak): Define as macro for
+       WinCE (if not UNDER_CE and DebugBreak is not defined yet).
+       * include/private/gc_priv.h (UNALIGNED): Rename to UNALIGNED_PTRS
+       (since "UNALIGNED" is defined in winnt.h of WinCE).
+       * mark.c (UNALIGNED): Ditto.
+       * include/private/gcconfig.h (ARM32): Recognize _M_ARM and _ARM_.
+       * include/private/gcconfig.h (ALIGNMENT): Check always defined.
+       * include/private/gcconfig.h: Allow GC_WIN32_THREADS for WinCE.
+       * include/private/thread_local_alloc.h: Define USE_WIN32_SPECIFIC
+       for WinCE (since __declspec(thread) is unsupported).
+       * include/private/thread_local_alloc.h (TLS_OUT_OF_INDEXES):
+       Define for WinCE (if undefined).
+       * malloc.c (GC_malloc): Remove outdated comment about disabling
+       signals.
+       * misc.c: Don't include <tchar.h> (since not used anymore and may
+       break TEXT() macro defined in winnt.h).
+       * misc.c (GC_init_inner): Don't use GetModuleHandle() and
+       InitializeCriticalSectionAndSpinCount() for WinCE.
+       * misc.c (GC_init_inner): Replace GetModuleHandleA() with
+       GetModuleHandle() (and use TEXT() macro controlled by UNICODE).
+       * misc.c (LOG_FILE): Remove unused macro; don't use _T() macro.
+       * misc.c (GC_CreateLogFile): New static function (Win32/WinCE
+       only); move the code from GC_write(); replace GETENV() with
+       GetEnvironmentVariable(); replace CreateFileA() with
+       CreateFile(); use TEXT() macro (for Unicode support); replace
+       strcat() with memcpy() (since deprecated in WinCE).
+       * misc.c (GC_write): Define as STATIC.
+       * win32_threads.c (GC_attached_thread): Ditto.
+       * misc.c (GC_write): Use GC_CreateLogFile().
+       * misc.c: Define vsnprintf macro as StringCchVPrintfA for WinCE.
+       * misc.c (GC_abort): Try to invoke MessageBoxA() dynamically
+       (Win32 only) if DONT_USE_USER32_DLL is defined.
+       * misc.c (GC_abort): Duplicate msg to GC log file (for Win32 and
+       WinCE).
+       * misc.c (GC_abort): Use a more user-friendly abort if
+       NO_DEBUGGING (Win32 only).
+       * os_dep.c: Include "atomic_ops.h" only if MPROTECT_VDB (and
+       THREADS).
+       * os_dep.c (detect_GetWriteWatch): Use TEXT() for GetModuleHandle
+       (for Unicode support); check GetModuleHandle() result.
+       * tests/test.c: Don't define assert for WinCE (since may be
+       redefined by "assert.h" included from libatomic_ops).
+       * tests/test.c (FAIL): Define as ABORT for all targets (except
+       for PCR).
+       * tests/test.c (n_tests): Don't use AO_t.
+       * tests/test.c (check_heap_stats): Don't cast n_tests.
+       * tests/test.c (inc_int_counter): New function (for n_tests atomic
+       incrementation).
+       * tests/test.c (run_one_test): Test GC_memalign() for all targets.
+       * tests/test.c (run_one_test): Avoid unbalanced brackets in
+       #if-#else-#endif blocks.
+       * tests/test.c (run_one_test): Replace AO_fetch_and_add1() and
+       private LOCK/UNLOCK with GC_call_with_alloc_lock(inc_int_counter).
+       * tests/test.c (check_heap_stats): Replace
+       "if (sizeof(char *) > 4)" with "#if CPP_WORDSZ == 64" to suppress
+       "unreachable code" compiler warning.
+       * tests/test.c (WinMain): Set cmd type to LPWSTR (for WinCE
+       "UNDER_CE" mode); else use LPSTR type (for Win32 and WinCE).
+       * tests/test.c (thr_window): Replace "L" string prefix with
+       TEXT().
+       * thread_local_alloc.c: Check THREADS is defined (to prevent other
+       compiler errors and warnings otherwise).
+       * tests/test.c (WinMain): Recognize GC_NO_DLLMAIN macro (for
+       GC_use_DllMain()).
+       * Makefile.direct (GC_NO_DLLMAIN, DONT_IMPORT_GETCURTHREAD): Add
+       the comments for.
+       * win32_threads.c (GC_register_my_thread_inner): Recognize
+       DONT_IMPORT_GETCURTHREAD macro.
+       * win32_threads.c: Recognize GC_NO_DLLMAIN macro (to exclude
+       DllMain support if needed).
+       * win32_threads.c (GC_NO_DLLMAIN): Define implicitly if DllMain
+       thread registration is unsupported for a given configuration.
+       * win32_threads.c (GC_use_DllMain): Update the comment; refine
+       ABORT message.
+       * win32_threads.c (GC_use_DllMain,
+       GC_started_thread_while_stopped, GC_register_my_thread_inner,
+       GC_lookup_thread_inner, GC_delete_gc_thread,
+       GC_allow_register_threads, GC_lookup_pthread,
+       GC_push_thread_structures, GC_stop_world, GC_push_all_stacks):
+       Check for GC_NO_DLLMAIN.
+       * win32_threads.c (GC_Thread_Rep.tm_in_use, GC_attached_thread,
+       DllMain): Don't define if GC_NO_DLLMAIN.
+       * win32_threads.c (GC_stop_world): Declare "i" and "max" local
+       variables only if not GC_NO_DLLMAIN (to suppress compiler
+       warning).
+       * win32_threads.c (GC_mark_thread, start_mark_threads): Use
+       CreateThread() instead of _beginthreadex() for WinCE.
+       * win32_threads.c (MARK_THREAD_STACK_SIZE, WINCE_MAIN_STACK_SIZE):
+       New macros defined (used by start_mark_threads(), WinMain()).
+       * win32_threads.c (GC_thr_init): Exclude parallel-specific code on
+       WinCE for now (since getenv(), GetProcessAffinityMask() and
+       SignalObjectAndWait() are missing on WinCE).
+       * win32_threads.c (GC_thr_init): replace GetModuleHandleA() with
+       GetModuleHandle(); replace CreateEventA() with CreateEvent(); use
+       TEXT() macro (for Unicode support).
+
+2009-09-10  Ivan Maidanski <ivmai@mail.ru>
+       (diff113)
+
+       * include/gc.h (GC_has_static_roots_func): New typedef (user filter
+       callback).
+       * include/gc.h (GC_register_has_static_roots_callback): Use
+       GC_has_static_roots_func type.
+       * dyn_load.c (GC_has_static_roots,
+       GC_register_has_static_roots_callback): Ditto.
+       * dyn_load.c (GC_has_static_roots,
+       GC_register_has_static_roots_callback): Define on all platforms.
+       * dyn_load.c (GC_register_dynlib_callback,
+       GC_register_dynamic_libraries, GC_init_dyld): Replace K&R-style
+       functions definition with the ANSI C one.
+       * dyn_load.c (GC_register_dynlib_callback): Use new local variable
+       "callback" (initialized from GC_has_static_roots) to minimize data
+       races.
+       * dyn_load.c (GC_register_dynamic_libraries_dl_iterate_phdr,
+       GC_cond_add_roots): Define as STATIC.
+       * mark_rts.c (GC_remove_roots_inner): Ditto.
+       * dyn_load.c (GC_dyld_image_add): Don't call GC_add_roots() for
+       sections smaller than pointer size (just to avoid acquiring the
+       lock unnecessarily).
+       * dyn_load.c (GC_dyld_name_for_hdr): Define unconditionally (not
+       only for DARWIN_DEBUG).
+       * dyn_load.c (GC_dyld_image_add): Replace GC_add_roots() call with
+       LOCK + GC_add_roots_inner() + UNLOCK.
+       * dyn_load.c (GC_dyld_image_add): Call GC_has_static_roots() user
+       callback (if set) holding the lock; if it returns 0 then don't call
+       GC_add_roots_inner() for that region.
+       * dyn_load.c (GC_register_has_static_roots_callback): Put
+       "callback" value to GC_has_static_roots on all platforms.
+       * dyn_load.c (GC_has_static_roots): Update the comments.
+       * include/gc.h (GC_exclude_static_roots, GC_add_roots,
+       GC_remove_roots, GC_register_has_static_roots_callback): Ditto.
+       * include/private/gc_priv.h (struct roots): Ditto.
+       * include/private/gc_priv.h (GC_remove_roots_inner): Move prototype
+       to mark_rts.c and declare it as STATIC.
+       * include/private/gc_priv.h (GC_exclude_static_roots_inner): New
+       prototype.
+       * dyn_load.c (GC_register_dynamic_libraries_dl_iterate_phdr): Use
+       GC_exclude_static_roots_inner() instead of GC_exclude_static_roots.
+       * misc.c (GC_init_inner): Ditto.
+       * mark_rts.c (GC_exclude_static_roots_inner): New function (move
+       all the code from GC_exclude_static_roots(); add the comment.
+       * mark_rts.c (GC_add_roots_inner, GC_exclude_static_roots_inner):
+       add alignment assertion for the lower bound; add assertion for the
+       lower bound to be less than the upper one.
+       * mark_rts.c (GC_add_roots_inner, GC_exclude_static_roots): Adjust
+       the upper bound (round down to be of a pointer-aligned value);
+       return in case of an empty range.
+       * mark_rts.c (GC_exclude_static_roots): Acquire the lock and call
+       GC_exclude_static_roots_inner().
+       * mark_rts.c (GC_remove_roots): Quickly check the bounds and return
+       in case of a do-nothing case (before acquiring the lock).
+
+2009-09-10  Ivan Maidanski <ivmai@mail.ru>
+       (diff112)
+
+       * finalize.c (GC_fail_count): New external variable declaration.
+       * finalize.c (GC_reset_finalizer_nested,
+       GC_check_finalizer_nested): New function declarations (if THREADS
+       only).
+       * finalize.c (GC_finalizer_nested, GC_finalizer_skipped): New
+       static global variables (used internally by GC_finalize() and
+       GC_check_finalizer_nested()).
+       * finalize.c (GC_check_finalizer_nested): New static function
+       definition (only if not THREADS, used internally by
+       GC_notify_or_invoke_finalizers() to minimize the probability of
+       a deep recursion when a client finalizer tries to allocate GC
+       memory).
+       * finalize.c (GC_finalize): Reset GC_finalizer_nested value (or
+       call GC_reset_finalizer_nested()) if last heap expansion failed.
+       * finalize.c (GC_notify_or_invoke_finalizers): Access GC_gc_no,
+       GC_finalizer_now, GC_finalize_on_demand, GC_finalizer_notifier,
+       last_finalizer_notification variables holding the lock (to avoid
+       data races).
+       * finalize.c (GC_finalizer_notifier): Add comment.
+       * finalize.c (GC_notify_or_invoke_finalizers): Add "quick" check
+       for an empty finalization queue (only if THREADS and not
+       KEEP_BACK_PTRS/MAKE_BACK_GRAPH).
+       * finalize.c (GC_notify_or_invoke_finalizers): Call
+       GC_check_finalizer_nested() and skip GC_invoke_finalizers() call
+       if appropriate.
+       * include/private/pthread_support.h (GC_Thread_Rep): Add unsigned
+       finalizer_nested and finalizer_skipped fields (for internal use
+       by the multi-threaded GC_check_finalizer_nested()).
+       * win32_threads.c (GC_Thread_Rep): Ditto.
+       * pthread_support.c (GC_reset_finalizer_nested,
+       GC_check_finalizer_nested): New function definitions (the
+       multi-threaded variants of that in finalize.c).
+       * win32_threads.c (GC_reset_finalizer_nested,
+       GC_check_finalizer_nested): Ditto.
+
+2009-09-10  Ivan Maidanski <ivmai@mail.ru>
+       (diff103_cvs - resembling diff78, diff88_cvs, diff99_cvs,
+       diff100_cvs, diff101_cvs, diff102_cvs)
+
+       * alloc.c (GC_stopped_mark): Remove GC_log_printf("") (not needed
+       anymore and GCC produces a warning for it).
+       * alloc.c (GC_stopped_mark): Adjust printf argument type
+       specifier.
+       * backgraph.c: Include dbg_mlc.h before ifdef MAKE_BACK_GRAPH (for
+       the case when the configuration information comes from aconfig
+       file).
+       * checksums.c: Ditto (for gc_priv.h and CHECKSUMS, respectively).
+       * include/gc_allocator.h (GC_ATTR_UNUSED): Use "__unused__"
+       keyword instead of "unused".
+       * include/gc_allocator.h: Fix typos in comments.
+       * thread_local_alloc.c: Ditto.
+       * include/javaxfc.h (GC_finalize_all): Update comment.
+       * include/private/gc_priv.h (GC_API_PRIV): New macro (defined as
+       GC_API and serves only as a marker for the private but exported
+       symbols used by test.c only).
+       * include/private/gc_priv.h (GC_abort, GC_arrays, GC_is_marked,
+       GC_printf, GC_err_printf, GC_log_printf): Replace GC_API decl with
+       GC_API_PRIV one.
+       * include/private/gc_priv.h (GC_fo_entries): Don't export it
+       outside a DLL.
+       * include/private/gc_priv.h (GC_ATTR_FORMAT_PRINTF): New macro
+       designated to check the arguments correctness of printf-like
+       functions (currently works only for GCC v3+).
+       * include/private/gc_priv.h (GC_printf, GC_err_printf,
+       GC_log_printf): Use GC_ATTR_FORMAT_PRINTF attribute.
+
+2009-09-03  Hans Boehm <Hans.Boehm@hp.com> (really Loren J. Rittle)
+
+       * dyn_load.c (HAVE_DL_ITERATE_PHDR): Break definition from use.
+       Define for FreeBSD 7.0+.
+
+2009-09-02  Hans Boehm <Hans.Boehm@hp.com> (with help from Victor Ivrii and
+                                           others)
+
+       * mach_dep.c: Don't include ucontext.h with NO_GETCONTEXT.
+
+2009-08-19  Hans Boehm <Hans.Boehm@hp.com>
+
+       * include/gc_gcj.h (GC_init_gcj_malloc): Improve descriptive
+       comment.
+
+2009-08-11  Hans Boehm <Hans.Boehm@hp.com>
+       (Replacement for Ivan Maidanski's diff99_cvs.  Hopefully fixes
+       the same bugs, and then some.)
+
+       * allchblk.c (GC_merge_unmapped): Don't assume that adjacent
+       free blocks have different mapping status.  Correctly handle gap
+       between blocks.
+       (GC_split_block): Remove dead code setting hb_flags.  Add comment.
+       (GC_allochblk): Split blocks also in generational-only mode.
+       * os_dep.c (GC_unmap_gap): Don't really use munmap.
+
+2009-08-08  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+       (Mistakenly omitted from last check-in)
+
+       * include/private/gc_priv.h (GC_unmapped_bytes): Define as 0 for
+       not USE_MUNMAP case.
+
+2009-08-07  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+       diff111 (supersedes diff101_cvs which, in turn, resembles diff52,
+       diff75, diff83 partly)
+
+       * Makefile.direct (MARK_BIT_PER_OBJ, PRINT_BLACK_LIST,
+       USE_PROC_FOR_LIBRARIES): Fix typo in the comments.
+       * Makefile.direct (USE_MMAP, USE_MUNMAP, THREAD_LOCAL_ALLOC,
+       PARALLEL_MARK, STATIC): Update the comments.
+       * include/private/gcconfig.h (GC_PREFER_MPROTECT_VDB): New macro
+       recognized (only if MPROTECT_VDB).
+       * Makefile.direct (DONT_USE_USER32_DLL, GC_PREFER_MPROTECT_VDB):
+       Add the comments for.
+       * os_dep.c (detect_GetWriteWatch): Recognize "GC_USE_GETWRITEWATCH"
+       environment variable (only if MPROTECT_VDB, if the variable is
+       unset when GC_PREFER_MPROTECT_VDB macro controls the strategy).
+       * doc/README.environment (GC_USE_GETWRITEWATCH): New variable.
+       * include/private/gcconfig.h (MPROTECT_VDB): Add FIXME for
+       USE_MUNMAP and PARALLEL_MARK cases (to relax the conditions in
+       the future).
+       * misc.c (GC_get_heap_size, GC_get_free_bytes): Ignore the memory
+       space returned to OS (GC_unmapped_bytes).
+       * include/gc.h (GC_get_heap_size, GC_get_free_bytes): Update the
+       comments.
+       * misc.c (GC_get_unmapped_bytes): New API function.
+       * include/gc.h (GC_get_unmapped_bytes): New API prototype.
+       * os_dep.c (GC_dirty_init): Move "ifdef GWW_VDB" block out of
+       "ifdef MSWIN32" one (for Cygwin).
+
+2009-08-01  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+       diff100_cvs (diff51 and diff55, partly)
+
+       * pthread_support.c (GC_allow_register_threads): New API function.
+       * win32_threads.c (GC_allow_register_threads): Ditto.
+       * include/gc.h (GC_allow_register_threads): New API prototype.
+       * include/gc.h (GC_register_my_thread, GC_unregister_my_thread):
+       Update the comments.
+       * pthread_support.c (GC_register_my_thread): Check the collector
+       is in the multi-threaded mode.
+       * win32_threads.c (GC_register_my_thread): Ditto.
+
+2009-07-10  Hans Boehm <Hans.Boehm@hp.com>
+
+       * finalize.c (GC_finalize_all): Always call GC_invoke_finalizers
+       instead, following Ivan's original patch.
+
+2009-06-20  Hans Boehm <Hans.Boehm@hp.com>
+
+       * allchblk.c (GC_allochblk_nth): Add assertion.
+       * checksums.c: Add GC_record_fault, GC_was_faulted,
+       CC_n_faulted_dirty_errors.
+       (GC_check_dirty): Remove register declarations, print
+       dirty bit errors on faulted pages.
+       * os_dep.c (GC_write_fault_handler): Call GC_record_fault().
+       * os_dep.c (GC_remove_protection): Compute index correctly.
+
+2009-06-12  Hans Boehm <Hans.Boehm@hp.com>
+
+       * include/gc_version.h, configure.ac, doc/README:
+       Change to version 7.2alpha3.
+       * configure: Regenerate.
+
+[7.2alpha2]
+
+2009-06-12  Hans Boehm <Hans.Boehm@hp.com>
+
+       * include/gc_version.h, configure.ac, doc/README:
+       Change to version 7.2alpha2.
+       * configure: Regenerate.
+
+2009-06-12  Hans Boehm <Hans.Boehm@hp.com> (Really mostly Ivan Maidanski)
+       diff98_cvs(resembling diff3, diff27, diff59, diff61, diff66,
+       diff73 partly)
+
+       * dbg_mlc.c (GC_print_smashed_obj): Convert a group of printf()
+       calls into a single one (for output atomicity).
+       * typd_mlc.c (GC_calloc_explicitly_typed): Don't declare and use
+       GC_finalization_failures variable; check the result of
+       GC_general_register_disappearing_link() (for lack of memory)
+       instead.
+       * finalize.c (GC_finalization_failures): Remove unused global
+       variable.
+       * finalize.c (GC_general_register_disappearing_link,
+       GC_general_register_disappearing_link): Don't update the value of
+       GC_finalization_failures (since unused).
+       * include/private/gc_pmark.h (PUSH_ONE_CHECKED_STACK,
+       GC_PUSH_ONE_STACK, GC_PUSH_ONE_HEAP): The first parameter is of
+       word type now (as FIXUP_POINTER requires numeric argument).
+       * finalize.c (GC_ignore_self_finalize_mark_proc): GC_PUSH_ONE_HEAP
+       requires the first parameter of word type.
+       * mark.c (PUSH_GRANULE): Ditto.
+       * mark.c (GC_push_one, GC_push_all_eager): Ditto (for
+       GC_PUSH_ONE_STACK).
+       * finalize.c (GC_finalize_all): Call GC_invoke_finalizers() or
+       GC_finalizer_notifier directly, instead
+       of GC_INVOKE_FINALIZERS() to prevent infinite looping.
+       * include/javaxfc.h: Clarify GC_finalize_all comment.
+       * gcj_mlc.c: Include gc_pmark.h before "ifdef GC_GCJ_SUPPORT" (not
+       after) for configuration information.
+       * gcj_mlc.c (GC_gcj_malloc_ignore_off_page): Add comment.
+       * gcj_mlc.c (GC_gcj_malloc_ignore_off_page): Check "op" local
+       variable for NULL before dereferencing it, return GC_oom_fn() in
+       this case.
+       * typd_mlc.c (GC_malloc_explicitly_typed,
+       GC_malloc_explicitly_typed_ignore_off_page): Transform the code to
+       suppress compiler warning (for uninitialized "lg" variable).
+
+2009-06-12  Hans Boehm <Hans.Boehm@hp.com>
+
+       * win32_threads.c (GC_unregister_my_thread): add false assertion
+       in unreachable code.
+
+2009-06-12  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+       diff97_cvs (resembling diff43, diff51, diff67, diff76, diff83 partly)
+
+       * pthread_support.c (GC_inner_start_routine): Don't release the
+       GC lock between GC_register_my_thread_inner() and
+       GC_init_thread_local() calls (post the "registered" even after
+       calling GC_init_thread_local()).
+       * win32_threads.c (GC_register_my_thread, GC_unregister_my_thread):
+       Use GC_lookup_thread_inner() instead of GC_lookup_thread() and
+       acquire the GC lock only once.
+       * win32_threads.c (GC_thr_init): Call GC_register_my_thread_inner()
+       directly instead of GC_register_my_thread() since I_HOLD_LOCK
+       and our (main) thread is not registered yet (add assertion for it).
+       * win32_threads.c (GC_init_parallel): Call GC_lookup_thread_inner()
+       directly instead of GC_lookup_thread() (since I_HOLD_LOCK).
+       * win32_threads.c (GC_lookup_thread): Remove unused function.
+       * win32_threads.c: Remove "#error GC_DLL untested with Cygwin".
+       * win32_threads.c (GC_win32_dll_threads): Define as FALSE macro
+       also if THREAD_LOCAL_ALLOC or GC_PTHREADS.
+       * win32_threads.c (GC_use_DllMain): Call ABORT also if GC_PTHREADS
+       (for Cygwin).
+       * win32_threads.c (GC_push_stack_for): Add parentheses around "&&"
+       (inside GC_ASSERT) to prevent compiler warning.
+       * win32_threads.c (GC_push_all_stacks): Remove FIXME for
+       PARALLEL_MARK.
+       * win32_threads.c (MAX_MARKERS, GC_markers): Move the definitions
+       to a place before GC_get_next_stack().
+       * win32_threads.c (marker_sp, marker_bsp): New static arrays (same
+       as in pthread_support.c).
+       * win32_threads.c (marker_last_stack_min): New static arrays (the
+       same semantics as for last_stack_min of GC_Thread_Rep).
+       * win32_threads.c (GC_get_next_stack): Handle marker threads.
+       * win32_threads.c (GC_mark_thread): Save the current stack pointer
+       to marker_[b]sp.
+       * win32_threads.c (start_mark_threads): Initialize
+       marker_last_stack_min elements (to "unset" value).
+
+2009-06-12  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+       (diff96_cvs, partly from diff45 and diff75)
+
+       * misc.c (GC_set_oom_fn, GC_set_all_interior_pointers,
+       GC_set_finalize_on_demand, GC_set_java_finalization,
+       GC_set_finalizer_notifier, GC_set_dont_expand, GC_set_full_freq,
+       GC_set_no_dls, GC_set_free_space_divisor, GC_set_max_retries,
+       GC_set_dont_precollect, GC_set_time_limit, GC_set_warn_proc):
+       Change return type to void (these API functions no longer return
+       the old value).
+       * include/gc.h: Ditto (for prototypes).
+       * tests/test.c (main, WinMain, test): Remove explicit cast to void
+       for GC_set_warn_proc().
+       * misc.c (GC_get_oom_fn, GC_get_all_interior_pointers,
+       GC_get_finalize_on_demand, GC_get_java_finalization,
+       GC_get_finalizer_notifier, GC_get_dont_expand, GC_get_full_freq,
+       GC_get_no_dls, GC_get_free_space_divisor, GC_get_max_retries,
+       GC_get_dont_precollect, GC_get_time_limit, GC_get_warn_proc): New
+       API functions (to get the current value of the corresponding R/W
+       public variables).
+       * include/gc.h: Ditto (for prototypes).
+       * include/gc.h (GC_set_warn_proc, GC_set_free_space_divisor):
+       Update the comment.
+       * misc.c (GC_ignore_warn_proc): New API call-back function.
+       * include/gc.h (GC_ignore_warn_proc): Ditto (for the prototype).
+       * misc.c (GC_set_find_leak, GC_get_find_leak, GC_set_non_gc_bytes,
+       GC_get_non_gc_bytes): New API setter and getter functions (for the
+       public GC_find_leak and GC_non_gc_bytes variables, respectively).
+       * include/gc.h: Ditto (for prototypes).
+       * include/gc.h (GC_memalign): Add proto to GC API.
+       * mallocx.c (GC_memalign): Use GC_API, GC_CALL for the definition.
+       * tests/test.c (run_one_test): Test GC_memalign() on Win32 too,
+       remove GC_memalign() proto.
+       * misc.c (GC_write): Use multi-byte (A) variants of Win32
+       GetModuleFileName() and CreateFile().
+       * tests/test.c (main): Replace K&R-style function definition with the
+       ANSI C one.
+
+2009-06-12  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski and
+                                           George Talbot)
+       (diff95_cvs)
+
+       * include/private/gcconfig.h (PLATFORM_ANDROID): New macro
+       recognized (for Linux on ARM32 without glibc).
+       * include/private/gcconfig.h (STRTOULL): Define for all targets
+       (define as "strtoul" for most targets except for LLP64/Win64).
+       * misc.c (GC_init_inner): Use STRTOULL instead of atoi/atol()
+       (cast the result to word type) to decode values of "GC_TRACE",
+       "GC_INITIAL_HEAP_SIZE", "GC_MAXIMUM_HEAP_SIZE" environment
+       variables.
+
+2009-06-12  Hans Boehm <Hans.Boehm@hp.com> (Really mostly George Talbot)
+
+       * include/gc_allocator.h: Add gc_allocator_ignore_off_page.
+       * tests/test_cpp.cc: Add call to gc_allocator_ignore_off_page.
+
+2009-06-11  Hans Boehm <Hans.Boehm@hp.com>
+
+       * win32_threads.c (GC_release_mark_lock): Correct misspelling of
+       AO_load in assertion.
+
+2009-06-11  Hans Boehm <Hans.Boehm@hp.com> (Really mostly Ivan Maidanski)
+       (diff93_cvs: resembling diff27, diff30, diff43, diff44, diff66,
+       diff76, diff79, diff83 partly)
+
+       * win32_threads.c (MAX_THREADS): Define as 1 if GC_win32_dll_threads
+       is defined as FALSE (otherwise the size of dll_thread_table is near
+       200 KiB for 32-bit).
+       * win32_threads.c (GC_use_DllMain): Optimize for THREAD_LOCAL_ALLOC.
+       * win32_threads.c (GC_Thread_Rep): Add backing_store_end and
+       backing_store_ptr fields for IA64 support.
+       * win32_threads.c (GC_register_my_thread_inner): Set
+       backing_store_end field to reg_base value for IA64 (same as in
+       pthread_support.c).
+       * win32_threads.c (SET_PTHREAD_MAP_CACHE): Put parentheses in the
+       "right" places, remove ';'.
+       * win32_threads.c (GC_fault_handler_lock): Declare only
+       if MPROTECT_VDB (and not WinCE).
+       * win32_threads.c (GC_suspend): Acquire and release
+       GC_fault_handler_lock only if MPROTECT_VDB (and not WinCE).
+       * win32_threads.c (GC_suspend): Define as STATIC.
+       * win32_threads.c (GC_push_stack_for): Fix WARN() format specifier
+       (should be word-compliant, "%p" is used w/o "0x"), don't cast sp.
+       * win32_threads.c (GC_push_all_stacks): Convert a group of printf()
+       calls into a single one (for output atomicity).
+       * win32_threads.c (GC_get_next_stack): Unprotect thread descriptor
+       before altering its last_stack_min ("thread" variable is added).
+       * win32_threads.c (GC_get_next_stack): Remove unnecessary checks for
+       "s" is non-NULL.
+       * win32_threads.c (GC_get_next_stack): Don't call GC_may_be_in_stack
+       if WinCE.
+       * win32_threads.c (GC_get_next_stack): Pass current_min value to
+       GC_get_stack_min as-is (without -1).
+       * win32_threads.c (GC_wait_marker): Remove FIXME and use "release"
+       version of AO_fetch_and_sub1().
+       * win32_threads.c (GC_win32_start_inner, GC_win32_start): convert int
+       to pointer (and vice versa) thru word type to suppress warnings.
+       * win32_threads.c (GC_mark_mutex_waitcnt): Fix comment, always
+       access atomically.
+       * misc.c: Change GC_THREADS tests back to THREADS.
+
+
+2009-06-11  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+       (diff92_cvs: resembling diff20, diff27, diff34, diff38, diff43, diff45,
+       diff46, diff56, diff60, diff62, diff74, diff75, diff81 partly)
+
+       * allchblk.c (GC_print_hblkfreelist, GC_dump_regions): Convert
+       a group of printf() calls into a single one (for output atomicity).
+       * include/gc.h (GC_set_all_interior_pointers, GC_set_full_freq,
+       GC_set_time_limit): New prototypes.
+       * misc.c (GC_set_all_interior_pointers, GC_set_full_freq,
+       GC_set_time_limit): New public setter/getter functions.
+       * include/gc.h: Fix (and remove outdated) comments for thread-local
+       allocation.
+       * include/gc.h: Fix typos in comments.
+       * misc.c (GC_init_inner, GC_printf): Ditto.
+       * include/gc.h (GC_unregister_disappearing_link): Refine comment.
+       * include/gc.h (GC_stack_base): Recognize _M_IA64 macro.
+       * misc.c (GC_stack_last_cleared, GC_min_sp, GC_high_water,
+       GC_bytes_allocd_at_reset, DEGRADE_RATE): Define only if THREADS.
+       * misc.c (GC_stack_last_cleared, GC_min_sp, GC_high_water,
+       GC_bytes_allocd_at_reset): Define as STATIC.
+       * misc.c (GC_get_heap_size, GC_get_free_bytes,
+       GC_get_bytes_since_gc, GC_get_total_bytes): Acquire the GC lock to
+       avoid data races.
+       * misc.c (GC_write_cs): Define only if THREADS (Win32/WinCE only).
+       * misc.c (GC_init_inner): Initialize GC_write_cs only if THREADS.
+       * misc.c (GC_init_inner): Use GC_INITIAL_HEAP_SIZE (if available) to
+       set the default initial value of initial_heap_sz.
+       * misc.c (GC_deinit): Destroy GC_write_cs only if THREADS.
+       * misc.c (GC_init_inner): Fix WARN() format specifier (should be
+       word-compliant, "%p" is used w/o "0x").
+       * misc.c (GC_init_inner): Don't recognize "GC_PAUSE_TIME_TARGET"
+       environment variable if SMALL_CONFIG.
+       * misc.c (GC_init_inner): Recognize "GC_FULL_FREQUENCY" environment
+       variable to set initial GC_full_freq value (if not SMALL_CONFIG).
+       * doc/README.environment (GC_FULL_FREQUENCY): Add information.
+       * doc/README.environment (GC_MARKERS): Refine information.
+       * misc.c (GC_init_inner): Change GC_ASSERT to GC_STATIC_ASSERT where
+       possible.
+       * misc.c (IF_NEED_TO_LOCK): New macro (instead of GC_need_to_lock).
+       * misc.c (GC_write): Use IF_NEED_TO_LOCK for handling GC_write_cs.
+       * misc.c (GC_abort): Don't define if SMALL_CONFIG.
+       * misc.c (GC_abort): Directly use WRITE() instead of GC_err_printf()
+       (to prevent possible infinite recursion).
+
+2009-06-09  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+       diff90_cvs (resembling diff28, diff30, diff32, diff34, diff47,
+       diff49, diff60, diff62, diff66, diff67, diff68, diff72 partly)
+
+       * finalize.c (finalization_mark_proc): Replace K&R-style declaration
+       with ANSI C one.
+       * finalize.c (GC_grow_table, GC_register_finalizer_inner,
+       GC_enqueue_all_finalizers): Remove outdated comments about disabling
+       signals.
+       * finalize.c (GC_general_register_disappearing_link): Fix assertion
+       to catch NULL "obj" value.
+       * finalize.c (GC_unregister_disappearing_link): Check "link"
+       alignment before gaining the lock.
+       * finalize.c (GC_finalize): Refine comment.
+       * finalize.c (GC_finalize): Fix WARN() format specifier (should be
+       word-compliant, "%p" is used w/o "0x").
+       * finalize.c (GC_invoke_finalizers): Initialize "bytes_freed_before"
+       variable (to 0) to suppress compiler warning.
+       * include/gc_gcj.h (MARK_DESCR_OFFSET): Move to private/gc_pmark.h.
+       * include/gc_gcj.h: add "extern C" header and tail.
+       * include/private/gc_pmark.h: Remove GC_do_parallel_mark(),
+       GC_help_wanted, GC_helper_count, GC_active_count declarations (move
+       the comments to the place where these symbols are defined in mark.c).
+       * mark.c: Add STATIC GC_do_parallel_mark() declaration (for use by
+       GC_mark_some_inner, if PARALLEL_MARK only).
+       * mark.c (GC_mark_some_inner, GC_help_wanted, GC_helper_count,
+       GC_active_count, GC_do_parallel_mark): Define as STATIC.
+       * pthread_support.c (GC_mark_thread): Ditto.
+       * typd_mlc.c (GC_explicit_typing_initialized, GC_explicit_kind,
+       GC_array_kind, GC_ext_descriptors, GC_ed_size, GC_avail_descr,
+       GC_typed_mark_proc_index, GC_array_mark_proc_index, GC_eobjfreelist,
+       GC_arobjfreelist): Ditto.
+       * include/private/gc_pmark.h (PUSH_CONTENTS_HDR): Change GC_ASSERT
+       for HBLKSIZE to GC_STATIC_ASSERT.
+       * mark.c (GC_noop): Define for Borland C the same as for Watcom.
+       * mark.c (GC_noop, GC_mark_and_push): Add ARGSUSED tag.
+       * pthread_support.c (GC_do_blocking_inner): Ditto.
+       * mark.c (GC_mark_from): Initialize "limit" (to 0) in the default
+       switch branch to suppress compiler warning.
+       * mark.c (GC_return_mark_stack): Append new-line to printf message.
+       * mark.c: Remove unused GC_true_func(), GC_PUSH_ALL().
+       * pthread_support.c (GC_mark_thread): Add dummy "return 0" to
+       suppress compiler warning.
+       * pthread_support.c (start_mark_threads): Move the code limiting
+       "GC_markers" value (and printing a warning) to GC_thr_init().
+       * pthread_support.c (GC_thr_init): Silently limit "GC_markers" value
+       if based on the number of CPUs.
+       * pthread_support.c (GC_thr_init): Treat incorrect "GC_markers"
+       values as one.
+       * pthread_support.c (GC_register_my_thread_inner): Add a check for
+       "stack_end" is non-NULL (the same as in win32_threads.c).
+       * pthread_support.c (pthread_create): Call GC_oom_fn before giving up
+       with ENOMEM.
+       * thread_local_alloc.c (return_single_freelist): Convert "for" loop
+       to "while" one to suppress "possible extraneous ';'" warning.
+
+2009-06-08  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski
+                                           and Zoltan Varga)
+
+       * darwin_stop_world.c (GC_push_all_stacks): Recognize ARM32.
+       * include/private/gc_priv.h (GC_THREAD_STATE_T): Define for ARM32
+       (Darwin only).
+       * include/private/gcconfig.h: Add machine-specific part for DARWIN.
+       * include/private/gcconfig.h (ARM32): Define config parameters for
+       DARWIN (iPhone).
+
+2009-06-08  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+       (diff91_cvs: resembling diff3, diff27, diff33, diff45, diff47, diff49,
+       diff60, diff67, diff68 partly)
+
+       * alloc.c (GC_FULL_FREQ, GC_DONT_EXPAND, GC_FREE_SPACE_DIVISOR,
+       GC_TIME_LIMIT): New macros (used to control the default initial
+       values of GC_full_freq variable, GC_dont_expand,
+       GC_free_space_divisor, GC_time_limit respectively).
+       * include/private/gc_priv.h (TIME_LIMIT): Remove macro (replaced
+       with GC_TIME_LIMIT in alloc.c).
+       * alloc.c (GC_need_full_gc, GC_stopped_mark, GC_finish_collection):
+       Define as STATIC.
+       * mark_rts.c (GC_push_current_stack, GC_push_gc_structures): Ditto.
+       * include/private/gc_priv.h (GC_stopped_mark, GC_finish_collection):
+       Move the prototypes to alloc.c, make STATIC.
+       * include/private/gc_priv.h (GC_push_current_stack,
+       GC_push_gc_structures, GC_push_regs_and_stack): Remove prototypes
+       (move the comments to the places where these functions are defined).
+       * mach_dep.c (GC_push_regs_and_stack): Move to mark_rts.c and define
+       as STATIC.
+       * alloc.c (GC_timeout_stop_func, GC_stopped_mark,
+       GC_print_heap_sects): Convert a group of printf() calls into
+       a single one (for output atomicity).
+       * mark_rts.c (GC_print_static_roots): Ditto.
+       * alloc.c (GC_stopped_mark): Output blank line (when logging) for
+       convenience to delimit collections.
+       * alloc.c (GC_clear_a_few_frames): Rename NWORDS to CLEAR_NWORDS;
+       make "frames" local variable volatile (to prevent optimization).
+       * alloc.c (GC_try_to_collect_inner, GC_stopped_mark,
+       GC_finish_collection, GC_allocobj): Remove outdated comments about
+       disabling signals.
+       * include/private/gc_priv.h (GC_register_displacement_inner,
+       GC_gcollect_inner): Ditto.
+       * alloc.c (GC_try_to_collect_inner, GC_stopped_mark,
+       GC_finish_collection): Initialize "start_time" local variable (to 0)
+       to suppress compiler warning.
+       * mark_rts.c (GC_add_roots_inner): Ditto (for "old" variable).
+       * alloc.c (GC_RATE, MAX_PRIOR_ATTEMPTS): Guard with "ifndef".
+       * include/private/gc_priv.h (clock, GC_stop_world, GC_start_world,
+       GC_acquire_mark_lock, GC_release_mark_lock, GC_notify_all_builder,
+       GC_wait_for_reclaim, GC_notify_all_marker, GC_wait_marker): Replace
+       K&R-style function prototypes with ANSI C one.
+       * include/private/gc_priv.h (ABORT): Define as DebugBreak() for
+       Win32/WinCE if SMALL_CONFIG (the same as in GC_abort()).
+       * include/private/gc_priv.h (ROUNDED_UP_WORDS, abs): Remove unused
+       macros.
+       * include/private/gc_priv.h (GC_noop): Declare for Borland C the
+       same as for Watcom.
+       * mark_rts.c (GC_push_conditional_with_exclusions): Add ARGSUSED tag.
+
+2009-06-04  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+       (diff89_cvs, resembling diff3, diff27, diff34, diff38, diff47, diff49,
+       diff59, diff60, diff66, diff67, diff68, diff69a, diff70, diff81
+       partly)
+
+       * dbg_mlc.c (GC_store_debug_info, GC_store_debug_info_inner): Remove
+       outdated comment about disabling signals.
+       * mallocx.c (GC_malloc_uncollectable,
+       GC_malloc_atomic_uncollectable): Ditto.
+       * os_dep.c: Ditto.
+       * dbg_mlc.c (GC_debug_change_stubborn, GC_debug_end_stubborn_change):
+       Add ARGSUSED tag.
+       * pthread_stop_world.c (GC_suspend_handler,
+       GC_suspend_handler_inner): Ditto.
+       * dbg_mlc.c (GC_debug_free, GC_debug_realloc): Fix printf message.
+       * dbg_mlc.c (GC_debug_realloc): Set "result" to NULL in the default
+       switch branch to suppress compiler warning.
+       * dyn_load.c (GC_init_dyld): Use ABORT() instead of GC_abort().
+       * include/private/darwin_semaphore.h (sem_init): Ditto.
+       * include/javaxfc.h: Replace "GC_H" with "_GC_H".
+       * include/private/dbg_mlc.h (GC_has_other_debug_info,
+       GC_store_debug_info): Replace K&R-style function prototypes with ANSI
+       C one.
+       * include/private/gcconfig.h (GC_FreeBSDGetDataStart, real_malloc,
+       GC_win32_get_mem, GC_wince_get_mem, GC_unix_get_mem): Ditto.
+       * include/private/pthread_support.h (GC_stop_init): Ditto.
+       * include/private/gcconfig.h: Refine comment about setting
+       GC_stackbottom.
+       * include/private/gcconfig.h (FIXUP_POINTER): Put parentheses in the
+       "right" places.
+       * include/private/pthread_support.h (GC_Thread_Rep): Refine comment
+       for "stack_end" field.
+       * mallocx.c (GC_malloc_uncollectable,
+       GC_malloc_atomic_uncollectable): Remove cast to undefined "hbklk".
+       * os_dep.c (GC_USE_MEM_TOP_DOWN): New macro (for setting
+       GC_mem_top_down to MEM_TOP_DOWN for debug purposes).
+       * os_dep.c (GC_gww_read_dirty, catch_exception_raise): Fix WARN()
+       format specifier (should be word-compliant, "%p" is used w/o "0x").
+       * pthread_stop_world.c (GC_suspend_handler_inner): Ditto.
+       * os_dep.c (GC_dirty_init): Append new-line to printf messages.
+       * os_dep.c (GC_mprotect_thread): Fix GC_err_printf message.
+       * os_dep.c (GC_save_callers): Change GC_ASSERT to GC_STATIC_ASSERT.
+       * pthread_stop_world.c (GC_retry_signals, GC_suspend_ack_sem): Define
+       as STATIC.
+       * pthread_stop_world.c (GC_push_all_stacks): Add assertion for that
+       "thread_blocked" is not set for the current thread.
+       * real_malloc.c: Add "extern GC_quiet" to suppress compiler warning.
+       * reclaim.c (GC_reclaim_all): Initialize "start_time" (to 0) to
+       suppress compiler warning.
+
+2009-06-02  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+       (adding last bit of diff86_cvs)
+
+       * tests/test.c (check_heap_stats): Avoid unbalanced brackets in ifdef.
+
+2009-05-27  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+       (diff26)
+
+       * win32_threads.c: restructure parallel marking mutex initialization.
+       * win32_threads.c, alloc.c, darwin_stop_world.c, mallocx.c, mark.c,
+       pthread_stop_world.c, pthread_support.c: Add runtime conditions
+       on GC_parallel were appropriate.
+       * pthread_support.c: Condition marker_bsp on ia64.
+       (GC_segment_is_thread_stack): Fix loop upper bound.
+       * reclaim.c: Limit some assertions to PARALLEL_MARK.
+       * pthread_support.c: Don't acquire mark lock for thread-local
+       allocation.
+       * include/private/gc_priv.h: Don't define parallel mark sync
+       support just for THREAD_LOCAL_ALLOC.
+
+2009-05-27  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+       (diff39)
+
+       * include/private/gcconfig.h: refine MINGW32 test.
+       * mark.c: Add win64/gcc tests.
+
+2009-05-27  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+       (diff86_cvs, resembling diff28, diff32, diff33, diff38, diff68 partly)
+
+       * test.c (fork_a_thread, reverse_test, alloc8bytes, tree_test,
+       typed_test, run_one_test, check_heap_stats, main, test): Replace
+       all K&R-style function definitions with ANSI C ones.
+       * trace_test.c (main): Ditto.
+       * test.c (GC_COND_INIT): Define as GC_INIT() also in case of
+       THREAD_LOCAL_ALLOC.
+       * test.c (reverse_test): Call fork_a_thread() only if GC_PTHREADS
+       or GC_WIN32_THREADS; remove fork_a_thread() macros definition.
+       * test.c (reverse_test): Use "volatile" when clearing "b" and "c"
+       local variables (to suppress "assigned value is never used"
+       compiler warning).
+       * test.c (tree_test): Use public GC_noop1() instead of private
+       GC_noop().
+       * test.c (typed_test): Ditto.
+       * test.c (check_heap_stats): Define and assign value to
+       "late_finalize_count" local variable only if its value is used
+       (if FINALIZE_ON_DEMAND defined).
+       * test.c (main): Remove DJGPP-specific initialization of
+       GC_stackbottom (not needed anymore, handled in gcconfig.h).
+       * trace_test.c: Guard #define GC_DEBUG with #ifndef.
+       * trace_test.c: Include "gc_backptr.h".
+       * trace_test.c (main): Call GC_INIT().
+       * trace_test.c (main): Add "return 0" statement.
+
+2009-05-25  Hans Boehm <Hans.Boehm@hp.com> (Really Petter Urkedal)
+
+       * dyn_load.c (GC_register_dynlib_callback): Use new index j
+       instead of i in the inner loop.
+
+2009-05-24  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+       (diff85)
+
+       * tests/test.c: Increment n_tests with fetch_and_add when possible,
+       avoiding need to export lock.
+
+2009-05-22  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+       (diff63,diff65)
+
+       * include/gc_pthread_redirects.h:
+               - dlfcn.h is included for dlopen() proto before undefining
+               "dlopen" (so, it's possible now to include dlfcn.h after
+               gc.h from user code);
+               - GC_dlopen() proto is added (except for Darwin as
+               it's missing there);
+               - "dlopen" is explicitly undefined (before its redefinition).
+       * include/gc.h:
+               - "process.h" is included besides "windows.h"
+               (for _beginthreadex/_endthreadex); win32 only.
+               - GC_NO_THREAD_DECLS is moved to the right place
+               (before closing "extern C").
+       * pthread_support.c: Fix out of memory handling for Thread_Reps.
+       * win32_threads.c: Don't include process.h on winCE,
+       improve out of memory handling for thread structures, don't
+       define GC_beginthreadex and GC_endthreadex for winCE.
+
+2009-05-22  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski
+       (diff71)
+
+       * tests/test.c: Change gcj vtable decriptor type from size_t to
+       GC_word.
+
+2009-05-22  Hans Boehm <Hans.Boehm@hp.com>
+
+       * gcj_mlc.c: Add comment.
+       * tests/test.c: Change NTEST to NTHREADS.  Fork 5 threads by default.
+       Run reverse_test a second time in each thread.Add comments.
+       Don't rely on AO_fetch_and_add.
+
+2009-05-22  Hans Boehm <Hans.Boehm@hp.com> (Largely from Ludovic Cortes)
+
+       * dyn_load.c (GC_register_dynlib_callback,
+       GC_register_dynamic_libraries_dl_iterate_phdr): Add support
+       for GNU_PT_RELRO relocations.
+
+2009-05-22  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+       (diff61)
+
+       * Makefile, Makefile.direct: GC_SOLARIS_PTHREADS was replaced
+       by GC_SOLARIS_THREADS.
+       * include/gc.h: Improve finalizer documentation.
+       * mips_sgi_mach_dep.s: Replace _MIPS_SIM_ABI32 with _ABIO32.
+       * pthread_stop_world.c, Makefile.dj: Fix typos.
+
+2009-05-21  Hans Boehm <Hans.Boehm@hp.com>
+
+       * win32_threads.c (GC_new_thread): Make first_thread
+       visible to the whole file.
+       (UNPROTECT): New macro.
+       (GC_push_stack_for, GC_suspend, GC_start_world): unprotect
+       thread structures before writing.
+       (GC_suspend): Acquire GC_fault_handler_lock before suspending
+       thread.
+       * os_dep.c: export GC_fault_handler_lock.
+       (GC_remove_protection): Check if already unprotected.
+
+2009-05-20  Hans Boehm <Hans.Boehm@hp.com> (really Ivan Maidanski)
+
+       * doc/README.win32: Add OpenWatcom warning.
+       * include/private/gcconfig.h: Really check it in.
+
+2009-05-19  Hans Boehm <Hans.Boehm@hp.com> (Mostly Ivan Maidanski, Dave Korn)
+
+       * os_dep.c (GC_get_stack_base, windows): Replace with Dave Korn's
+       code from gcc version.
+       * os_dep.c: make gc compilable (optionally) for Cygwin with
+       GetWriteWatch-based virtual dirty bit implementation ("os_dep.c" file).
+       * os_dep.c: Make non-win32 GC_write_fault_handler STATIC.
+       * mark.c (GC_noop): fix declaration definition mismatch for DMC.
+       * include/private/gcconfig.h: Enable MPROTECT_VDB and GWW_VDB for
+       Watcom (Win32 only).  It works.
+
+2009-05-07  Hans Boehm <Hans.Boehm@hp.com> (and Mark Sibly)
+
+       * mach_dep.c: Don't use __builtin_unwind_init for register
+       state on PowerPC/Darwin.
+
+2009-04-24  Hans Boehm <Hans.Boehm@hp.com>
+
+       * doc/gcdescr.html: Improve description of object freelist
+       structure.
+       * include/private/gc_priv.h: Fix comment for _size_map.
+
+2009-03-16  Hans Boehm <Hans.Boehm@hp.com>
+
+       * os_dep.c (GC_linux_stack_base): Relax sanity test.
+
+2009-03-11  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+
+       * include/private/gc_pmark.h (PUSH_CONTENTS_HDR for
+       MARK_BIT_PER_OBJ): Add missing backslash before eoln.
+
+2009-02-28  Hans Boehm <Hans.Boehm@hp.com>
+
+       * misc.c (GC_set_warn_proc): Implicitly intialize GC on
+       non-Cygwin win32.
+
+2009-02-28  Hans Boehm <Hans.Boehm@hp.com> (Really Petr Krajca)
+
+       * configure.ac: Enable thread-local allocation for sparc-linux.
+       * configure: Regenerate.
+
+2009-02-28  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidansky)
+
+       * alloc.c (GC_try_to_collect): Remove duplicate initialization
+       check.
+       * malloc.c (GC_generic_malloc): Remove lw to eliminate single-
+       threaded warnings.
+       * mallocx.c (GC_generic_malloc_ignore_off_page): Ditto.
+
+2009-02-28  Hans Boehm <Hans.Boehm@hp.com> (Mostly Ivan Maidansky)
+
+       * allchblk.c, backgraph.c, dbg_mlc.c, dyn_load.c,
+       finalize.c, include/private/gc_pmark.h, malloc.c, mark.c,
+       os_dep.c, pthread_stop_world.c, pthread_support.c, reclaim.c,
+       thread_local_alloc.c.
+       * misc.c: Refine comment.
+
+2009-02-28  Hans Boehm <Hans.Boehm@hp.com>
+
+       * os_dep.c: Define GC_GWW_BUF_LEN more intelligently.  Add FIXME
+       comment.
+
+2009-02-28  Hans Boehm <Hans.Boehm@hp.com> (With input from Ivan Maidansky)
+
+       * win32_threads.c (GC_push_stack_for): Yet another attempt
+       at the stack_min finding logic.  Try to clean up the existing code
+       while minimizing VirtualQuery calls.
+       (GC_win32_start_inner): Register thread before GC_printf.
+       Produce more output with DEBUG_THREADS.
+       *include/gc.h: Update obsolete comments.
+
+2009-02-24  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidansky)
+
+       * tests/test.c:
+       (gcj_class_struct2): Use cast instead of l suffix.
+       Cast GetLastError to int in various places.
+       Avoid unused result warning from incr/decr macros.
+       Add cast for fake_gcj_mark_proc.
+       Cast GC_gc_no to unsigned in printf.
+
+2009-02-24  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidansky)
+
+       * include/gc.h: Fix two typos in comments.
+
+2009-02-24  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidansky)
+
+       * finalize.c: Fix typo in comment.
+
+2008-12-03  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidansky)
+
+       * blacklst.c (GC_print_source_pointer): Don't call GC_print_heap_obj
+       with lock.
+
+2008-12-01  Hans Boehm <Hans.Boehm@hp.com>
+
+       * reclaim.c: (GC_reclaim_block): Scan even nearly full blocks
+       if we are checking for leaks.
+
+2008-11-12  Hans Boehm <Hans.Boehm@hp.com> (Really mostly Ivan Maidansky)
+
+       * win32_threads.c: Remove mark lock spinning.
+       * win32_threads.c, pthread_support.c: Update GC_unlocked_count,
+       GC_spin_count, and GC_block_count using atomic operations.
+       * tests/test.c: Declare n_tests as AO_t only if we have threads.
+
+2008-11-11  Hans Boehm <Hans.Boehm@hp.com>
+       (Really almost entirely Ivan Maidansky)
+
+       * win32_threads.c: Support PARALLEL_MARK.  Make printf arg
+       types agree with format specifiers.  Add missing copyright header.
+       Add STATIC for GC_threads.
+       * include/private/gcconfig.h: Add FIXME comment.
+       * tests/test.c (run_ine_test): Replace LOCK/UNLOCK use with
+       AO_fetch_and_add1_full.  Declare n_tests as AO_t.
+       (WinMain): Don't call GC_use_DllMain.
+       with PARALLEL_MARK or THREAD_LOCAL_ALLOC.
+
+2008-11-10  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidansky)
+
+       * alloc.c (GC_try_to_collect_inner): Don't print redundant
+       GC_bytes_allocd and GC_gc_no.
+       (GC_stopped_mark): Print average world stop time.
+       * include/private/gc_priv.h (MS_TIME_DIFF): Add cast.
+
+2008-11-10  Hans Boehm <Hans.Boehm@hp.com> (Really mostly Ivan Maidansky)
+
+       * misc.c, doc/README.environment: Add support  for
+       GC_FREE_SPACE_DIVISOR and GC-disable-incremental.
+       * include/gc.h: Make GC_set_free_space_divisor correspond to
+       (somewhat unfortunate) reality.
+
+2008-11-07  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidansky)
+
+       (Mostly improves LLP64 support.)
+       * backgraph.c, checksums.c, dbg_mlc.c, finalize.c, mark.c,
+       misc.c, reclaim.c: Changed some int and long type to word or size_t
+       (and vice versa where appropriate)
+       * gcj_mlc.c, include/private/dbg_mlc.h, include/private/gcconfig.h,
+       include/private/thread_local_alloc.h, mark.c,
+       misc.c, thread_local_alloc.c, win32_threads.c: Added intermediate
+       casts to word type when casting from int to pointer (or pointer
+       to int, or data pointer to code pointer) - just to remove the
+       corresponding compiler warning.
+       * ptr_chck.c (GC_is_visible): cast int const to word type to
+       prevent left shift overflow.
+       * os_dep.c: change the type of GC_mem_top_down global variable
+       (containing a flag) to DWORD.
+       * include/gc_config_macros.h: define GC_SOLARIS_THREADS if GC_THREADS
+       is defined on SunOS x86_64.
+       * misc.c (GC_init_size_map): Ifdef out GC_ASSERT as a workaround
+       for VC++ 2008 amd64 (v15.00.21022.08 for x64) compiler bug
+       (the compiler gets hung if invoked with -Ox -D
+       ALL_INTERIOR_POINTERS -D GC_ASSERTIONS)
+       * backgraph.c: cast GC_gc_no value to unsigned short when
+       assigned/compared to height_gc_no field of back_edges.
+       * os_dep.c (GC_remove_protection): Add ARGSUSED.
+       * win32_threads.c (GC_thread_exit_proc): Remove unused local
+       variable.
+       * mark.c (GC_check_dirty): Move declaration out of func body.
+
+2008-11-06  Hans Boehm <Hans.Boehm@hp.com>
+
+       * doc/gcinterface.html: Improve REDIRECT_MALLOC documentation.
+       * include/gc.h (GC_register_my_thread): Improve comment.
+
+2008-11-04  Hans Boehm <Hans.Boehm@hp.com>
+
+       * Makefile.direct: Add comment for -DCHECKSUMS.
+
+2008-10-27  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidansky)
+
+       * thread_local_alloc.c, include/private/thread_local_alloc.h:
+       Fix typos in comments.
+       * finalize.c: Declare mark_procs and GC_register_finalizer_inner
+       STATIC.
+       * malloc.c (GC_free): Move size calculation below assertion.
+
+2008-10-27  Hans Boehm <Hans.Boehm@hp.com>
+
+       * win32_threads.c (GC_get_stack_min, GC_may_be_in_stack):
+       Add one entry VirtualQuery cache, I_HOLD_LOCK assertions.
+       (GC_push_stack_for, GC_get_next_stack) : Hopefully fix WINCE support.
+
+2008-10-27  Hans Boehm <Hans.Boehm@hp.com> (Thanks to Klaus Treichel)
+
+       * finalize.c (GC_general_register_disappearing_link): Add
+       assertion.
+       * malloc.c (GC_generic_malloc): Round lb to granules, not words.
+       * mallocx.c (GC_generic_malloc_ignore_off_page): Round lb to
+       granules, not words.
+
+2008-10-27  Hans Boehm <Hans.Boehm@hp.com> (Really Rex Dieter and
+                                           Petr Krajca)
+
+       * mach_dep.c (NO_GETCONTEXT): Define for sparc linux.
+       * configure.ac: Define mach_dep for sparc-linux.
+       * configure: Regenerate.
+
+2008-10-25  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidansky)
+
+       * mark_rts.c (GC_approx_sp): Use volatile to avoid common
+       warning.
+
+2008-10-25  Hans Boehm <Hans.Boehm@hp.com>
+
+       * dyn_load.c (GC_cond_add_roots): Fix GC_get_next_stack argument
+       order.
+
+2008-10-24  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+
+       * alloc.c, dbg_mlc.c, dyn_load.c, finalize.c, gcj_mlc.c,
+       include/gc.h, include/gc_config_macros.h, include/gc_cpp.h,
+       include/gc_gcj.h, include/gc_mark.h, include/gc_typed.h,
+       include/javaxfc.h, include/private/gc_locks.h,
+       include/private/gc_priv.h, malloc.c, mallocx.c, mark.c, mark_rts.c,
+       misc.c, obj_map.c, os_dep.c, pthread_support.c, ptr_chck.c,
+       stubborn.c, tests/test.c, thread_local_alloc.c, typd_mlc.c
+       win32_threads.c: Add GC_CALL and GC_CALLBACK macro invocations.
+       * test.c: Remove some old K&R code.
+
+2008-10-24  Hans Boehm <Hans.Boehm@hp.com>
+       (Partially based loosely on patch from Ivan Maidanski)
+
+       * win32_threads.c (GC_may_be_in_stack): New.  (GC_Thread_Rep):
+       Add last_stack_min.  (GC_push_stack_for): Use last_stack_min.
+       (GC_get_next_stack): Add limit argument, use_last_stack_min.
+       (GC_suspend): make stack_base assignment conditional.
+       * dyn_load.c (win32 GC_cod_add_roots): Pass limit to
+       GC_get_next_stack.
+       * configure_atomic_ops.sh: Remove.
+       * build_atomic_ops.sh, build_atomic_ops.sh.cygwin, doc/README.win32,
+       Makefile.direct: Partially support build directories whose path
+       name contains blanks.
+       * Makefile.am: Support new files (build_atomic_ops.sh,
+       build_atomic_ops.sh.cygwin)
+       * Makefile.in: Regenerate.
+
+2008-10-21  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+
+       * include/private/gc_locks.h, include/private/gc_pmark.h,
+       include/private/gc_priv.h, include/private/gcconfig.h,
+       mach_dep.c, mark_rts.c, misc.c, os_dep.c, pthread_stop_world.c,
+       pthread_support.c, thread_local_alloc.c, typd_mlc.c, win32_threads.c:
+       Fix comments.
+
+2008-10-21  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+
+       * pthread_support.c: Comment out LOCK_STATS.
+       * include/gc.h: Fix comments.
+
+2008-10-20  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+
+       * misc.c (GC_init_inner): Enable GC_LOG_FILE on Cygwin.
+       * include/private/gcconfig.h: Consider USE_MMAP for Cygwin.
+       * os_dep.c (GC_get_main_stack_base): Use alternate definition
+       with USE_MMAP.
+       * include/private/gc_priv.h: Sometimes define SETJMP on Cygwin.
+
+2008-10-20  Hans Boehm <Hans.Boehm@hp.com>
+
+       * doc/README: Make it clearer when Makefile.direct is assumed.
+       * cord/cord.am: install include/cord.h.
+       * Makefile.in: Regenerate.
+
+2008-09-24  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+
+       * win32_threads.c (GC_pthread_join, GC_pthread_start_inner):
+       Remove unused variables.
+       * darwin_stop_world.c: Always declare GC_thr_init().
+       * dbg_mlc.c (GC_debug_free_inner): Don't touch oh_sz if
+       SHORT_DBG_HDRS is defined.
+       * include/private/gc_pmark.h (OR_WORD_EXIT_IF_SET, parallel
+       mark, USE_MARK_BITS version): Refer to correct parameter name.
+
+2008-09-24  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+
+       * finalize.c (GC_general_register_disappearing_link): Remove
+       redundant code.
+       * gcj_mlc.c (GC_init_gcj_malloc): Add cast to signed.
+       * os_dep.c: (GC_write_fault_handler): Remove remaining
+       references to deleted variable "code".  Remove redundant
+       FREEBSD definitions.
+       * include/private/gcconfig.h (GWW_VDB): Define for X86_64 when
+       defined for X86. (STATIC): Define as "static" with NO_DEBUGGING.
+
+2008-09-24  Hans Boehm <Hans.Boehm@hp.com>
+
+       * include/private/gc_priv.h: Update MAX_HEAP_SECTS.
+
+2008-09-10  Hans Boehm <Hans.Boehm@hp.com>
+
+       * dbg_mlc.c (GC_print_smashed_obj): Increase robustness with
+       smashed string, (GC_debug_free_inner): Mark as free.
+       * mallocx.c (GC_malloc_many): Always clear new block if
+       GC_debugging_started.
+       * reclaim.c: Move GC_debugging_started from
+       GC_reclaim_small_nonempty_block() to GC_reclaim_generic(),
+       which is also called directly.
+       * doc/README: Fix spelling error.  Update license summary.
+       * include/gc.h (GC_PRE_INCR3, GC_POST_INCR3): add (void **) casts.
+       * tests/test.c: Don't define GC_DEBUG if already defined.
+
+2008-08-27  Hans Boehm <Hans.Boehm@hp.com>
+
+       * doc/simple_example.html: update --enable-full-debug reference,
+       Make HTML formatting standards compliant.
+       * doc/debugging.html, doc/leak.html: Fix HTML formatting bugs.
+       * doc/gcinterface.html: specify encoding.
+
+2008-08-27  Hans Boehm <Hans.Boehm@hp.com> (with help from Marco Maggi)
+
+       * doc/simple_example.html: Update thread-local allocation
+       description.
+
+2008-08-26  Hans Boehm <Hans.Boehm@hp.com> (with help from Marco Maggi)
+
+       * configure.ac: Check for gc-debug earlier; replace remaining
+       full-debug tests.
+       * configure: Regenerate.
+       * include/gc.h, ptr_chck.c (GC_pre_incr, GC_post_incr):
+       Use signed offset type.  Use ptr_t internally.
+       * doc/gcinterface.html: Update LOCAL_MALLOC description.
+       * doc/README.autoconf, doc/leak.html, doc/README.DGUX386:
+       Fix full-debug reference.
+       * include/gc.h: Rewrite GC_..._INCR and friends.
+       * tests/test.c: Minimally test GC_..._INCR and friends.
+
+2008-08-21  Hans Boehm <Hans.Boehm@hp.com>
+
+       * mark.c: (GC_push_next_marked, GC_push_next_marked_dirty,
+       GC_push_next_marked_uncollectable): Never invoke GC_push_marked
+       on free hblk.
+       * headers.c: Test COUNT_HDR_CACHE_HITS not USE_HDR_CACHE.
+       (GC_header_cache_miss): Always blacklist pointers for free
+       hblks.  Add assertion and comment.
+       * pthread_support.c (GC_register_my_thread): Fix #if indentation.
+       * include/private/gc_hdrs.h: USE_HDR_CACHE is no longer tested.
+       Delete it.
+       * include/private/gc_pmark.h: (PUSH_OBJ): Add assertion.
+
+2008-08-21  Hans Boehm <Hans.Boehm@hp.com>
+
+       * alloc.c, include/gc_mark.h, Makefile.direct: Improve comments.
+
+2008-08-01  Hans Boehm <Hans.Boehm@hp.com> (Really Klaus Treichel)
+
+       * configure.ac: Set win32_threads on MinGW.
+       * configure: Regenerate.
+
+2008-07-25  Hans Boehm <Hans.Boehm@hp.com> (Really mostly Ivan Maidanski)
+
+       Ivan's description of the patch follows. Note that a few pieces like
+       the GC_malloc(0) patch, were not applied since an alternate had been
+       previously applied.  A few differed stylistically from the rest of
+       the code (mostly casts to void * instead of target type),
+       or were classified as too minor to bother.  Note that
+       all of Ivan's static declarations which did not correct outright
+       naming bugs (as a few did), where replaced by STATIC, which is
+       ignored by default.
+
+       - minor bug fixing (for FreeBSD, for THREAD_LOCAL_ALLOC and for
+       GC_malloc(0));
+       - addition of missing getter/setter functions for public variables
+       (may be useful if compiled as Win32 DLL);
+       - addition of missing GC_API for some exported functions;
+       - addition of missing "static" declarator for internal functions
+       and variables (where possible);
+       - replacement of all remaining K&R-style definitions with ANSI
+       C ones (__STDC__ macro is not used anymore);
+       - addition of some Win32 macro definitions (that may be missing in
+       the standard headers supplied with a compiler) for GWW_VDB mode;
+       - elimination of most compiler warnings (except for
+       "uninitialized data" warning);
+       - several typos correction;
+       - missing parenthesis addition in macros in some header files of
+       "libatomic_ops" module.
+
+       My highlights based on reading the patch:
+
+       * allchblk.c: Remove GC_freehblk_ptr decl.
+       Make free_list_index_of() static.
+       * include/gc.h: Use __int64 on win64, define GC_oom_func,
+       GC_finalizer_notifier_proc, GC_finalizer_notifier_proc,
+       add getter and setters: GC_get_gc_no, GC_get_parallel,
+       GC_set_oom_fn, GC_set_finalize_on_demand,
+       GC_set_java_finalization, GC_set_dont_expand,
+       GC_set_no_dls, GC_set_max_retries, GC_set_dont_precollect,
+       GC_set_finalizer_notifier.  Always define GC_win32_free_heap.
+       gc_config_macros.h: Define _REENTRANT after processing
+       GC_THREADS.
+       * include/gc_cpp.h: Improve GC_PLACEMENT_DELETE test,
+       handling of operator new[] for old Windows compilers.
+       * include/gc_inline.h (GC_MALLOC_FAST_GRANS): Add parentheses
+       around arguments.
+       * dbg_mlc.c, malloc.c, misc.c: Add many GC_API specs.
+       * mark.c (GC_mark_and_push_stack): Fix source argument for
+       blacklist printing.
+       * misc.c: Fix log file naming based on environment variable
+       for Windows.  Make GC_set_warn_proc and GC_set_free_space_divisor
+       just return current value with 0 argument.  Add DONT_USE_USER32_DLL.
+       Add various getters and setters as in gc.h.
+       * os_dep.c: Remove no longer used GC_disable/enable_signals
+       implementations.  (GC_get_stack_base): Add pthread_attr_destroy
+       call.  No longer set GC_old_bus_handler in DARWIN workaround.
+       * pthread_support.c: GC_register_my_thread must also
+       call GC_init_thread_local.
+
+2008-07-21  Hans Boehm <Hans.Boehm@hp.com>
+
+       * Makefile.direct, mach_dep.c: Add support for NO_GETCONTEXT.
+       * mach_dep.c: Include signal.h.
+       * gc_priv.h: Factor out INLINE declaration.
+
+2008-07-03  Hans Boehm <Hans.Boehm@hp.com> (Really mostly Thiemo Seufer)
+
+       * include/private/gcconfig.h: Update MIPS/LINUX config.
+       * doc/gcdescr.html: Fix typo.
+       * mach_dep.c (GC_with_callee_saves_pushed): Don't rely on getcontext
+       for MIPS/LINUX.
+
+2008-05-30  Hans Boehm <Hans.Boehm@hp.com> (some really dmcmahill)
+
+       * configure.ac: SPARC fixes.
+       * configure: Regenerate.
+       * thread_local_alloc.c(GC_mark_thread_local_fls_for): Include
+       size 0, except for gcj.
+       * doc/gc.man: Expand C++ cautions.
+       * include/gc_inline.h: Fix comments.
+
+2008-05-03  Hans Boehm <Hans.Boehm@hp.com>
+
+       * include/gc_version.h, configure.ac, doc/README:
+       Change to version 7.2alpha1.
+       * configure: Regenerate.
+
+[7.1]
+
+2008-05-03  Hans Boehm <Hans.Boehm@hp.com>
+
+       * include/gc_version.h, configure.ac, doc/README:
+       Change to version 7.1.
+       * configure: Regenerate.
+
+2008-05-03  Hans Boehm <Hans.Boehm@hp.com>
+
+       * doc/gcinterface.html: Improve C++ interface documentation.
+
+2008-03-10  Hans Boehm <Hans.Boehm@hp.com>
+
+       * allchblk.c (GC_allochblk): Check for overflow during size
+       rounding.
+       * tests/huge_test.c: New.
+       * Makefile.direct, tests/tests.am: Add huge_test.c
+       * Makefile.in: Regenerate.
+
+2008-02-29  Hans Boehm <Hans.Boehm@hp.com>
+
+       * pthread_support.c: Fix typo in comment.
+       * os_dep.c (GC_win32_get_mem): Add heap section only if
+       allocation succeeded.
+
+2008-02-28  Hans Boehm <Hans.Boehm@hp.com>
+
+       * malloc.c: (free replacement) Fix caller address space check.
+
+2008-02-25  Hans Boehm <Hans.Boehm@hp.com>
+
+       * finalize.c (GC_grow_table): Dereference table in null-check.
+
+2008-02-24  Hans Boehm <Hans.Boehm@hp.com>
+
+       * win32_threads.c (GC_delete_gc_thread, GC_delete_thread):
+       Consistently call CloseHandle. (GC_suspend): Call
+       GC_delete_gc_thread.
+       * tests/test.c: Don't reference GC_print_stats if not exported.
+
+2008-02-20  Hans Boehm <Hans.Boehm@hp.com>
+
+       * tests/test.c (run_one_test): Don't mention pthread_self().
+       * misc.c: Declare GC_thr_init().
+
+2008-02-20  Hans Boehm <Hans.Boehm@hp.com>
+
+       * allchblk.c (add_to_fl): disable assertions with USE_MUNMAP,
+       and refine assertions to handle huge unmergable blocks.
+       (GC_allochblk_nth): Add comment.
+
+2008-02-20  Hans Boehm <Hans.Boehm@hp.com>
+
+       * include/private/gcconfig.h: Add missing FREEBSD macro
+       consistency test.
+
+2008-02-20  Hans Boehm <Hans.Boehm@hp.com>
+
+       * 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.
+       * tests/test.c: Remove (void) casts.  Optionally print some
+       timing information.
+
+2008-02-15  Hans Boehm <Hans.Boehm@hp.com>
+
+       * windows-untested/gc.def: Remove CreateThread line.
+       * windows-untested/README: New file.
+       * win32_threads.c (GC_use_DllMain): Force collector initialization.
+       (GC_init_parallel): Reformat comment.
+       * include/gc.h (GC_use_DllMain): Clarify usage rules in comment.
+       * mark.c (GC_mark_from): Slightly simplify GC_DS_PER_OBJECT code.
+       * include/gc_cpp.h: Add matching placement delete overloads
+       everywhere.
+       * include/private/gc_locks.h (NO_THREAD): Add cast.
+       * include/private/gcconfig.h: Add test for __HP_aCC.
+       * configure.ac, tests/tests.am:  Avoid libgccpp on HP/UX.
+       * Makefile.in, configure: Regenerate.
+
+2008-02-11  Hans Boehm <Hans.Boehm@hp.com> (partly David Leonard)
+
+       * doc/README.win32: Fix typo.
+       * configure.ac: Fix printing of enable-shared result.
+       * configure: Regenerate.
+
+2008-02-08  Hans Boehm <Hans.Boehm@hp.com>
+
+       * 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_pmark.h: Fix comments.
+
+2008-02-06  Hans Boehm <Hans.Boehm@hp.com> (mostly from Henning Makholm)
+
+       * include/private/gc_priv.h, mark_rts.c, typd_mlc.c:
+       Add GC_push_typed_structures() to push GC_ext_descriptors.
+
+2008-01-31  Hans Boehm <Hans.Boehm@hp.com> (mostly from Andreas Tobler)
+
+       * tests/test.c: Call GC_INIT for DARWIN; test system type using
+       gcconfig.h-defined macros.
+
+2008-01-29  Hans Boehm <Hans.Boehm@hp.com>
+
+       * 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: Comment hb_sz range limit.
+
+2008-01-29  Hans Boehm <Hans.Boehm@hp.com>  (with help from Manuel Serrano)
+
+       * mark.c (GC_push_next_marked): correct comment.
+       * Makefile.direct: document NO_PROC_STAT.
+       * include/private/gcconfig.h: Accomodate NO_PROC_STAT.
+
+2008-01-10  Hans Boehm <Hans.Boehm@hp.com>
+
+       * include/gc_version.h, configure.ac, doc/README:
+       Change to version 7.1alpha3.
+       * configure: Regenerate.
+
+[7.1alpha2]
+
+2008-01-10  Hans Boehm <Hans.Boehm@hp.com>
+
+       * include/gc_version.h, configure.ac, doc/README:
+       Change to version 7.1alpha2.
+       * configure: Regenerate.
+
+2008-01-10  Hans Boehm <Hans.Boehm@hp.com>
+
+       * Makefile.am: Mention atomic_ops.c and atomic_ops_sysdeps.S
+       again.  Refer to build directory as ".".
+       * Makefile.in: Regenerate.
+
+2008-01-10  Hans Boehm <Hans.Boehm@hp.com>
+
+       * configure.ac: Ignore --enable-parallel-mark on Darwin for now.
+       * configure: Regenerate.
+       * darwin_stop_world.c: Add FIXME comment for parallel marker.
+
+2008-01-09  Hans Boehm <Hans.Boehm@hp.com>
+
+       * include/private/gc_priv.h: Update MAX_ROOT_SETS
+       and LOG_PHT_ENTRIES to handle larger heaps.
+
+2008-01-03  Hans Boehm <Hans.Boehm@hp.com>
+
+       * include/gc.h (GC_INIT,GC_init): Update comments.
+
+2008-01-03  Hans Boehm <Hans.Boehm@hp.com> (based on a patch from
+       John Bowman, and an ancient patch from Fergus Henderson)
+
+       * 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.
+
+2008-01-02  Hans Boehm <Hans.Boehm@hp.com>
+
+       * alloc.c (GC_add_to_heap): Call GC_install_header(p) AFTER
+       adjusting p.
+
+2007-12-23  Hans Boehm <Hans.Boehm@hp.com>
+
+       * Makefile.am: Add NT_X64_THREADS_MAKEFILE.
+
+2007-12-23  Hans Boehm <Hans.Boehm@hp.com> (Really mostly Friedrich Dominicus)
+
+       * NT_X64_STATIC_THREADS_MAKEFILE: Clean up obsolete comment.
+       * alloc.c: Add declaration for GC_add_current_malloc_heap.
+       * win32_threads.c (GC_beginthreadex): Clean up error
+       return code.
+       * doc/README.win64, NT_X64_THREADS_MAKEFILE, Makefile.direct:
+       Add NT_X64_THREADS_MAKEFILE.
+
+2007-12-21  Hans Boehm <Hans.Boehm@hp.com>
+
+       * 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: Include gc_version.h.
+       * gcname.c, add_gc_prefix.c: include gc.h instead of version.h.
+       * Makefile.direct, Makefile.dj, Makefile.am, include/include.am:
+       Adjust for version.h rename.
+       * Makefile.in: Regenerate.
+
+2007-12-21  Hans Boehm <Hans.Boehm@hp.com> (Really mostly russ sludge dot net)
+
+       * configure.ac: Put libatomic_ops links in build directory.
+       * configure: Regenerate.
+       * Makefile.am: Don't mention atomic_ops.c and atomic_ops_sysdeps.S
+       as nodist sources.
+
+2007-12-20  Hans Boehm <Hans.Boehm@hp.com>
+
+       * include/gc.h, doc/README.macros: Add GC_NO_THREAD_REDIRECTS,
+       GC_NO_THREAD_DECLS, don't test explicitly for GC_SOLARIS_THREADS.
+
+2007-12-20  Hans Boehm <Hans.Boehm@hp.com>
+
+       * 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.
+       * include/private/gc_pmark.h: Fix comment spelling.
+
+2007-12-18  Hans Boehm <Hans.Boehm@hp.com> (really mainly Peter Wang)
+
+       * include/gc_inline.h, include/gc_tiny_fl.h: cleanups to make usable
+       in other contexts.
+
+2007-12-18  Hans Boehm <Hans.Boehm@hp.com> (really Radek Polak)
+
+       * include/gc.h: Don't define GC_HAVE_BUILTIN_BACKTRACE for uclibc.
+
+2007-12-18  Hans Boehm <Hans.Boehm@hp.com>
+
+       * gc_cpp.cc: Don't include gc_cpp.h from local directory.
+
+2007-12-18  Hans Boehm <Hans.Boehm@hp.com> (really Adam Megacz)
+
+       * allchblk.c, configure.ac (add --enable-munmap)
+       * configure: Regenerate.
+
+2007-12-10  Andreas Tobler <a.tobler@schweiz.org>
+
+       * 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).
+
+2007-10-24  Hans Boehm <Hans.Boehm@hp.com>
+
+       * reclaim.c (GC_bytes_found): Expand comment.
+       * 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.
+       * tests/test.c: Add size zero allocation tests.
+
+2007-10-23  Hans Boehm <Hans.Boehm@hp.com>
+
+       * malloc.c: Update GC_large_allocd_bytes on explicit deallocation.
+       * allchblk.c: Sanity check GC_max_large_allocd_bytes.
+
+2007-10-23  Hans Boehm <Hans.Boehm@hp.com> (Really Manuel Serrano)
+
+       * Makefile.direct: Invoke $(MAKE) instead of make.
+
+2007-10-23  Hans Boehm <Hans.Boehm@hp.com>
+
+       * doc/scale.html: Reflect gc7 thread local allocation behavior.
+
+2007-10-23  Hans Boehm <Hans.Boehm@hp.com> (really Petter Urkedal)
+
+       * include/extra/gc.h, include/extra/gc_cpp.h: New.
+       * include/include.am: Install gc.h and gc_cpp.h in $(prefix)/include
+       again.
+       * Makefile.in: Regenerate.
+
+2007-08-15  Hans Boehm <Hans.Boehm@hp.com> (really Samuel Thibault)
+
+       * pthread_support.c (GC_thr_init): Use sysconf(_SC_NPROCESSORS_ONLN)
+       for HURD.
+
+2007-08-14  Hans Boehm <Hans.Boehm@hp.com> (really David Daney)
+
+       * include/private/gcconfig.h: Add Linux/mips-64 support.
+
+2007-08-14  Hans Boehm <Hans.Boehm@hp.com> (really mostly Samuel Thibault)
+
+       * 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.
+
+2007-08-14  Hans Boehm <Hans.Boehm@hp.com> (partly really Henrik Theiling)
+
+       * include/gc.h (GC_PTR_STORE): Fix non-DEBUG parentheses.
+       * tests/test.c (run_one_test): Add GC_PTR_STORE test.
+       No longer test for RS6000.
+
+2007-08-03  Hans Boehm <Hans.Boehm@hp.com>
+
+       * 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.
+       * tests/test.c: Call GC_INIT only when required.
+
+2007-08-03  Hans Boehm <Hans.Boehm@hp.com>
+
+       * Makefile.direct: Remove comment fragment.
+       * tests/tests.am: Add smashtest.
+       * Makefile.in: Regenerate.
+       * configure.ac: Define GC_USE_DLOPEN_WRAP with redirect-malloc.
+       * configure: Regenerate.
+       * pthread_support.c: Fix comment spelling.
+       * include/private/gcconfig.h: Define USE_PROC_FOR_LIBRARIES with
+       GC_LINUX_THREADS and REDIRECT_MALLOC.
+       * tests/smash_test.c: Initial check-in.
+       * obj_map.c: Print log entry to correct file.
+       * include/private/thread_local_alloc.h: Add TlsAlloc error check.
+
+2007-07-23  Hans Boehm <Hans.Boehm@hp.com>
+
+       * 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.
+       * Makefile.direct: Expand -DUSE_MUNMAP comment.
+
+2007-07-23  Hans Boehm <Hans.Boehm@hp.com> (really Jim Marshall)
+
+       * include/gc.h: Define uintptr_t explicitly for VC++6.
+       * msvc_dbg.c (GetModuleBase): Revert to strcat if strcat_s doesn't
+       exist.
+
+2007-07-02  Hans Boehm <Hans.Boehm@hp.com>
+
+       * version.h, configure.ac, doc/README: Change to version 7.1alpha1.
+       * configure: Regenerate.
+
+2007-07-02  Hans Boehm <Hans.Boehm@hp.com>
+
+       * version.h, configure.ac, doc/README: Change to version 7.0.
+       * configure: Regenerate.
+
+2007-07-02  Hans Boehm <Hans.Boehm@hp.com>
+
+       * include/gc_config_macros.h: Also check for IA64 when setting
+       GC_HPUX_THREADS.
+       * mallocx.c: Change my_bytes_allocd to signed_word.
+       * include/gc_pthread_redirects.h: Remove obsolete Solaris threads
+       (as opposed to pthreads) support.
+
+2007-07-02  Hans Boehm <Hans.Boehm@hp.com>
+
+       * mach_dep.c (GC_with_callee_saves_pushed): Don't use getcontext()
+       on ARM/Linux.  Check getcontext() return value.
+
+2007-06-29  Hans Boehm <Hans.Boehm@hp.com>
+
+       * backgraph.c (per_object_func): Make argument types consistent.
+       (GC_traverse_back_graph): Mark GC_deepest_obj.
+
+2007-06-29  Hans Boehm <Hans.Boehm@hp.com>
+
+       * finalize.c (GC_finalize): Change dl_size and fo_size to size_t.
+       * os_dep.c (GC_win32_get_mem): Add GC_mem_top_down option.
+
+2007-06-28  Hans Boehm <Hans.Boehm@hp.com>
+
+       * doc/README.win32, doc/README, README.QUICK: Fix some of the worst
+       anachronisms.
+       * dyn_load.c: Partially support cygwin, but don't enable it yet.
+
+2007-06-28  Hans Boehm <Hans.Boehm@hp.com>
+
+       * Makefile.am: Use -no-undefined for libgc.
+       * Makefile.in: Regenerate.
+       * Makefile.direct: Document USE_PROC_FOR_LIBRARIES.
+       * dyn_load.c (GC_register_map_entries): Rename prot_buf to prot
+       consistently.
+       * misc.c: Fix some WARN calls.  Move GC_is_initialized setting and
+       GC_thr_init() call.
+       * os_dep.c: Consistently use WARN where appropriate.
+       * thread_local_alloc.c: Revert change to GC_WIN32_THREADS test.  Instead
+       remove inappropriate pthread.h include.
+       * doc/README.linux: Remove some anachronisms.
+
+2007-06-23  Hans Boehm <Hans.Boehm@hp.com>
+
+       * alloc.c: Also use GC_check_tls on non-Linux systems.
+       * mallocx.c (GC_reclaim_generic): Remove bogus declaration.
+       * include/private/gc_priv.h (GC_reclaim_generic): Declare correctly
+       with prototype.
+
+2007-06-19  Hans Boehm <Hans.Boehm@hp.com>
+
+       * alloc.c (GC_adj_bytes_allocd): Avoid (long) casts, fix comment.
+       (GC_print_heap_sects): Use size_t instead of unsigned long.
+       * thread_local_alloc.c (GC_lookup_thread): Define in the correct
+       context.
+       * win32_threads.c, include/gc_config_macros.h: The last of Romano
+       Paolo Tenca's patch.  Move stdint.h include to gc_config_macros.h.
+       * include/gc_inline.h: Avoid gc_priv.h dependencies.
+       * tests/test.c (check_heap_stats): Replace unsigned long with size_t.
+
+2007-06-12  Hans Boehm <Hans.Boehm@hp.com>
+
+       * aclocal.m4: Regenerate to update date.
+
+2007-06-10  Hans Boehm <Hans.Boehm@hp.com>
+
+       * NT_X64_STATIC_THREADS_MAKEFILE: Replace obsolete -debugtype:cv.
+       * mark_rts.c (GC_push_roots): Fix kind type.
+
+2007-06-06  Hans Boehm <Hans.Boehm@hp.com>
+
+       * doc/README.win64: New file.
+       * doc/doc.am, Makefile.direct: Add README.win64.
+       * Makefile.in: Regenerate.
+
+2007-06-06  Hans Boehm <Hans.Boehm@hp.com>
+
+       * Makefile.am, Makefile.direct: Add NT_X64_STATIC_THREADS_MAKEFILE.
+       * Makefile.in: Regenerate.
+       * NT_X64_STATIC_THREADS_MAKEFILE: Fix warning flags.
+       * allochblk.c, alloc.c, blacklst.c, dbg_mlc.c, dyn_load.c,
+       finalize.c, headers.c, mach_dep.c, malloc.c, mark.c, misc.c,
+       obj_map.c, os_dep.c, ptr_chck.c, reclaim.c, typd_mlc.c,
+       win32_threads.c, cord/de_win.c, include/gc_mark.h,
+       include/private/gc_hdrs.h, include/private/gc_pmark.h,
+       include/private/gc_priv.h, tests/test_cpp.cc:
+       Replace old style function declarations.  Clean up integral types.
+       Remove register declarations.  The change in malloc.c and the
+       "int descr" declaration in mark.c are the most likely to have
+       been real bugs outside of win64.
+       * msvc_dbg.c: Disable on win64.
+       * win32_threads.c: Add AMD64 support.
+       * include/gc.h: no backtrace on AMD64 for now.
+
+2007-06-06  Hans Boehm <Hans.Boehm@hp.com>
+
+       * msvc_dbg.c(GetModuleBase): Replace strcat with strcat_s.
+
+2007-06-06  Hans Boehm <Hans.Boehm@hp.com>
+
+       * include/gc.h: (GC_word, GC_signed_word): Fix win64 definitions.
+       Don't include windows.h in an extern "C" context.
+       * include/private/gcconfig.h: Fix win64/X86_64 configuration.
+       * tests/test.c: Eliminate more old style function definitions.
+       Cleanup pointer and integer casts for win64.
+       * tests/test_cpp.cc: Don't include gc_priv.h.
+       * NT_STATIC_THREADS_MAKEFILE: Restrict suffixes for VC++ 2005.
+       * NT_X64_STATIC_THREADS_MAKEFILE: New.
+
+2007-06-06  Hans Boehm <Hans.Boehm@hp.com> (Really mostly Romano Paolo Tenca)
+
+       * win32_threads.c: Separate out DEBUG_WIN32_PTHREADS_STACK.  Ignore
+       FINISHED threads for suspension.  (GC_pthread_join): Add
+       pthread_self() cast.  (GC_pthread_start_inner): Execute cleanup
+       handler when popping it.
+       * include/private/gc_locks.h: Inline THREAD_EQUAL for
+       GC_WIN32_PTHREADS.  Define USE_PTHREAD_LOCKS only if we have
+       pthreads.
+
+2007-05-23  Hans Boehm <Hans.Boehm@hp.com> (Really mostly Romano Paolo Tenca)
+
+       * gc_dlopen.c, thread_local_alloc.c, threadlibs.c, win32_threads.c,
+       tests/test.c: Accomodate GC_WIN32_PTHREADS.
+       * include/gc.h: Don't include windows.h for GC_WIN32_PTHREADS.
+       * include/gc_config_macros.h: Define both PTHREADS and
+       GC_WIN32_THREADS.
+       * include/private/gc_locks.h: Nonstandard definitions of
+       NUMERIC_THREAD_ID for GC_WIN32_PTHREADS.
+       * doc/README.win32, Makefile.direct: Include documentation
+       for GC_WIN32_PTHREADS.
+       * Makefile.direct: Remove some anachronisms in the documentation.
+
+2007-05-23  Hans Boehm <Hans.Boehm@hp.com>
+
+       * Makefile.am: Move includes to bottom.  Add better library
+       dependencies.  Increment library version.  Remove "SUBDIRS += .".
+       * cord/cord.am, tests/tests.am: Add better library dependencies.
+       Remove now unnecessary dependencies.
+       * Makefile.in: Regenerate.
+       * include/gc.h (GC_beginthreadex, GC_endthreadex, GC_ExitThread):
+       Move to define on all Windows platforms.  (_beginthread): define
+       to generate error if used.
+
+2007-05-22  Hans Boehm <Hans.Boehm@hp.com>
+
+       * include/private/gc_locks.h: Format to 80 columns.
+
+2007-05-22  Hans Boehm <Hans.Boehm@hp.com>
+
+       * malloc.c(GC_free): Ignore bad frees on MSWIN32 with REDIRECT_MALLOC.
+       * NT_MAKEFILE: msvc_dbg.h is in include/private.  Don't use cvars
+       rc.
+       * misc.c (WIN32 GC_write): Define GC_need_to_lock in single-threaded
+       case.
+       * win32_threads.c: Test for __MINGW32__ in addition to _MINGW_VER.
+       (GC_CreateThread, GC_beginthreadex): Deallocate args even if we fail.
+       * include/gc.h: Add GC_reachable_here().  (GC_WinMain): Add GC_API.
+       (GC_beginthreadex, GC_endthreadex, GC_ExitThread): Declare.
+       * tests/test.c: Add GC_reachable_here() call.
+
+2007-05-21  Hans Boehm <Hans.Boehm@hp.com>
+
+       * alloc.c (GC_try_to_collect): Call GC_init if necessary.
+       * tests/thread_leak_test.c: Don't unconditionally define
+       GC_LINUX_THREADS.
+
+2007-05-21  Andreas Tobler <a.tobler@schweiz.org>
+
+       * Makefile.am: Remove extra_ldflags_libgc definition.
+       * Makefile.in: Regenerate.
+
+2007-05-17  Hans Boehm <Hans.Boehm@hp.com>
+
+       * include/private/gc_priv.h: Define AO_REQUIRE_CAS.
+
+2007-05-16  Hans Boehm <Hans.Boehm@hp.com>
+
+       * finalize.c (GC_unreachable_finalize_mark_proc): Don't return void
+       value.
+
+2007-05-15  Hans Boehm <Hans.Boehm@hp.com>
+
+       * configure.ac, version.h, doc/README: Change version to 7.0alpha10.
+       * configure: Regenerate.
+
+[7.0alpha9 release]
+
+2007-05-15  Hans Boehm <Hans.Boehm@hp.com>
+
+       * configure.ac, version.h, doc/README: Change version to 7.0alpha9.
+       * configure: Regenerate.
+
+2007-05-15  Hans Boehm <Hans.Boehm@hp.com>
+
+       * Makefile.am: Include NT_STSTIC_THREADS_MAKEFILE in dist.
+       * Makefile.in: Regenerate.
+       * include/private/gc_locks.h: GC_compare_and_exchange, GC_atomic_add:
+       remove. NUMERIC_THREAD_ID, THREAD_EQUAL: New.  GC_lock_holder: now
+       unsigned long.  I_DONT_HOLD_LOCK, I_HOLD_LOCK: Update.
+       * pthread_stop_world.c, pthread_support.c, win32_threads.c: Use
+       NUMERIC_THREAD_ID, THREAD_EQUAL.
+       * include/private/gcconfig.h: GENERIC_COMPARE_AND_SWAP: Remove.
+       * include/private/thread_local_alloc.h: Don't USE_COMPILER_TLS on
+       ARM.
+
+2007-05-11  Hans Boehm <Hans.Boehm@hp.com>
+
+       * dbg_mlc.c, include/gc.h, finalize.c: Merge Alexandre Oliva's
+       GC_debug_register_finalizer_unreachable() patch from gcc tree.
+       * thread_local_alloc.c (GC_malloc, GC_malloc_atomic): Add assertions
+       to check GC has been initialized.
+
+2007-05-10  Hans Boehm <Hans.Boehm@hp.com>
+
+       * include/gc_cpp.h: Documentation updates.
+       * include/gc_config_macros.h: Don't check for __ppc__ to set
+       DARWIN_THREADS.
+       * Makefile.am: Include configure_atomic_ops.sh in dist.
+       * Makefile.in: Regenerate.
+
+2007-05-08  Hans Boehm <Hans.Boehm@hp.com>
+
+       * Makefile.am: Don't distribute copied atomic_ops files.  Include
+       libatomic_ops with "make dist".
+       * Makefile.in: Regenerate.
+       * configure: Regenerate.
+       * configure.ac: Enable THREAD_LOCAL_ALLOC for Cygwin with threads.
+       * win32_threads.c: Report error for Cygwin + GC_DLL.
+
+2007-05-08  Hans Boehm <Hans.Boehm@hp.com>
+
+       * Makefile.direct: Update THREAD_LOCAL_ALLOC documentation.
+       * cord/de_win.c: Rename and move AboutBox.  Call GC_INIT.  Remove
+       MakeProcInstance anachronism.
+       * doc/README.macros: Officially remove elif prohibition.
+       Remove documentation for defunct SRC_M3 support.
+       * include/gc.h: Remove more SRC_M3 references.
+       * include/private/gcconfig.h: Remove still more SRC_M3 references.
+       GC_SOLARIS_THREADS no longer needs to be checked separately.
+
+2007-05-08  Hans Boehm <Hans.Boehm@hp.com>
+
+       * thread_local_alloc.c, include/private/thread_local_alloc.h:
+       Spell __declspec correctly.
+       * NT_STATIC_THREADS_MAKEFILE: Enable thread-local allocation.
+
+2007-05-07  Hans Boehm <Hans.Boehm@hp.com>
+
+       * doc/README.win32: Adjust GC_win32_dll_threads rules again.
+
+2007-05-07  Hans Boehm <Hans.Boehm@hp.com>
+
+       * mark.c (GC_mark_some wrapper): Restructure for readability, handle
+       GC_started_thread_while_stopped.
+       * misc.c (Win32 GC_write): Lock GC_write_cs only if needed.
+       * win32_threads.c: (client_has_run): remove,
+       GC_started_thread_while_stopped, GC_attached_thread: add.
+       (GC_push_all_stacks): Add verbose output.
+       (DllMain): Avoid initializing collector or the like.
+       Never update both thread tables.
+       * doc/README.win32: Adjust GC_win32_dll_threads rules.
+
+2007-05-07  Hans Boehm <Hans.Boehm@hp.com>
+
+       * pthread_stop_world.c (GC_push_all_stacks): Print thread count with
+       GC_PRINT_VERBOSE_STATS.
+
+2007-05-01  Hans Boehm <Hans.Boehm@hp.com>
+               (and Manuel Serrano, Craig McDaniel)
+
+       * configure.ac: Comment out redundant
+         AC_DEFINE(NO_EXECUTE_PERMISSION).
+       * configure: Regenerate.
+       * sparc_mach_dep.S: Remove single quote in comment.
+       * include/private/gcconfig.h: Fix DATAEND for NONSTOP.
+       * win32_threads.c: Include stdint.h for Mingw.  Add GC_API for DllMain.
+       (GC_use_DllMain): Fix assertion.
+
+2007-02-14  Andreas Tobler <a.tobler@schweiz.org>
+
+       * configure.ac: Introduce extra_ldflags_libgc. Use it for Darwin.
+       * configure: Regenerate.
+       * Makefile.am (libgc_la_LDFLAGS): Use extra_ldflags_libgc.
+       * Makefile.in: Regenerate.
+       * include/private/gcconfig.h: Enable MPROTECT_VDB for all Darwin
+       targets. Remove comments.
+       Prepare ppc64 support for Darwin.
+
+2007-01-29  Andreas Tobler <a.tobler@schweiz.org>
+
+       * darwin_stop_world.c: Clean up and reformat code.
+
+2007-01-28  Andreas Tobler <a.tobler@schweiz.org>
+
+       * darwin_stop_world.c (GC_push_all_stacks): Fix compiler warnings.
+       Make i unsigned.
+       (GC_stop_world): Likewise. Remove unused GC_thread p.
+       (GC_start_world): Likewise.
+
+       * os_dep.c: Define GC_darwin_register_mach_handler_thread extern.
+       Remove double SIG_HNDLR_PTR definition.
+       (GC_forward_exception): Fix compiler warnings, make i unsigned.
+       Initialize thread_state to NULL.
+       (catch_exception_raise): Fix compiler warnings, make i unsigned.
+
+2007-01-25  Petr Salinger and Hans Boehm <Hans.Boehm@hp.com>
+
+       * include/private/gc_priv.h (NEED_FIND_LIMIT, FREEBSD variant):
+       also define for X86_64.
+       * configure.ac: Move generic gnu (Hurd) case to below kfreebsd case.
+       * configure: Regenerate.
+       * README.changes: Point to ChangeLog.
+
+2007-01-25  Andreas Tobler <a.tobler@schweiz.org>
+
+       * darwin_stop_world.c: Move THREAD_FLD defines to ...
+       * include/private/gc_priv.h: ... here.
+       Fix THREAD_STATE definitions for ppc64.
+       * os_dep.c (catch_exception_raise): Use THREAD_FLD for exc_state member
+       access.
+
+2007-01-18  Andreas Tobler <a.tobler@schweiz.org>
+
+       * os_dep.c (if defined(MPROTECT_VDB) && defined(DARWIN)): Clean up and
+       reformat code.
+       Correct email reference.
+
+2007-01-11  Andreas Tobler <a.tobler@schweiz.org>
+
+       * configure.ac (i?86*-*-darwin*): Replaced HAS_I386_THREAD_STATE_* with
+       HAS_X86_THREAD_STATE32_*.
+       (x86_64-*-darwin*): Extended the above check for x86_64-*-darwin* with
+       HAS_X86_THREAD_STATE64_*.
+       Added value 1 in the above AC_DEFINE's. Important for the upcoming
+       Leopard.
+       * configure: Regenerated.
+       * include/private/gcconfig.h: Modified X86_64 define for Darwin.
+       Removed __x86_64__ check in POWERPC section. Added base definitions
+       for the X86_64 Darwin port.
+       * include/private/gc_priv.h: Added GC_MACH_HEADER and GC_MACH_SECTION
+       to distinguish between 32 and 64-bit applications. Added definitions
+       for X86_64 Darwin.
+       * darwin_stop_world.c: Added HAS_X86_THREAD_STATE64___RAX. And
+       replaced HAS_I386_THREAD_STATE___EAX with HAS_X86_THREAD_STATE32___EAX.
+       (GC_push_all_stacks): Added code for X86_64 Darwin. Even for the
+       !DARWIN_DONT_PARSE_STACK. Maybe obsolete.
+       * dyn_load.c (GC_dyld_name_for_hdr): Use GC_MACH_HEADER.
+       (GC_dyld_image_add): Use GC_MACH_HEADER and GC_MACH_SECTION.
+       Distinguish between getsectbynamefromheader_64 and
+       getsectbynamefromheader.
+       * os_dep.c (catch_exception_raise): Introduce exception definition for
+       X86_64 Darwin. Replaced old i386_EXCEPTION_STATE_* definition with
+       x86_EXCEPTION_STATE32_*. Add X86_64 for exc_state.faultvaddr.
+
+2007-01-09  Andreas Tobler <a.tobler@schweiz.org>
+
+       * libtool.m4: Update to version from libtool-1.5.22.
+       * ltmain.sh: Likewise.
+       * ChangeLog: Created.
+
+See doc/README.changes for earlier changes.